본문 바로가기
Back End/Spring

Spring - view 환경설정

by SolaBreeze 2023. 7. 3.

스프링 부트가 제공하는 Welcome Page 기능

static/index.html 을 올려두면 Welcome page 기능을 제공한다.

https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-bootfeatures.html#boot-features-spring-mvc-welcome-page

 

thymeleaf 템플릿 엔진

 

Controller란 무엇인가?

  1. 사용자의 요청이 집입하는 지점(entry point)
  2. 요청에 따라 어떤 처리를 할지 결정(단, 컨트롤러는 결정만 해주고 실질적 처리는 서비스(layered architecture에서 담당)
  3. 사용자에게 view(또는 서버에서 처리된 데이터를 포함하는 View)를 응답으로 보내줌

Controller는 왜 쓸까?

대규모 서비스로 갈수록 처리해야할 서비스들이 많아지는데, 이를 하나의 클래스에서 몰아 처리할게 아니라 controller라는 중간 제어자 역할을 하는 것을 만들어서 요청 A에 대한것은 A-controller가 맡아 필요한 로직처리를 위한 서비스를 호출하게 된다.

controller는 MVC 패턴에 포함되는 것인데, Model View Controller의 역할에 따라 설계하고 코딩하면 주먹구구식으로 개발할 때보다 개발 비용이나 유지 보수 비용이 대폭줄어든다. 역할분담이 핵심이다.

(출처 : https://hardlearner.tistory.com/315)

 

 

동적 환경 그림

출처 : 김영한님 spring 입문

컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 리졸버( viewResolver )가 화면을 찾아서 처리한다.

  • 스프링 부트 템플릿엔진 기본 viewName 매핑
  • resources:templates/ +{ViewName}+ .html ( ViewName은 return 값인 Hello의 이름을 가진 html을 가져온다.)
  • 컨드롤러에서 @GetMapping("hello")를 어노테이션 하면, 주소값에서 localhost:8080/hello와 매핑된다.

> 참고: spring-boot-devtools 라이브러리를 추가하면, html 파일을 컴파일만 해주면 서버 재시작 없이 View 파일 변경이 가능하다.

@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data", "hello!!");
//return 값에 넣은 이름의 템플릿을 찾아서 반환해줌 => hello.html을 연결시켜줌!!
return "hello"
}

-> data라는 모델에 "hello"를 연결해줌

블록친 data에 위의 addAttribute에서 value값인 hello!!가 들어가게 됨