반응형

[Spring Boot #16] 스프링 웹 MVC : Thymeleaf 템플릿

반응형

| Thymeleaf란?

  • Thymeleaf는 스프링 부트가 자동 설정을 지원하는  웹 템플릿 엔진입니다. HTML문서에 HTML5 문법으로 서버쪽 로직을 수행하고 적용시킬 수 있습니다.
  • HTML 디자인에 전혀 영향을 미치지 않고 웹 템플릿 엔진을 통해 HTML을 생성할 수 있습니다. 
  • 독자적으로 HTML을 생성하기 때문에 테스트 시 렌더링 결과를 확인하기 좋습니다.


| Thymeleaf 스프링 부트에서 사용하기


프로젝트 구조

+---src
| +---main
| | +---java
| | | \---com
| | | \---tutorial
| | | \---sptringbootmvc
| | | SampleController.java
| | | SpringBootMvcApplication.java
| | |
| | \---resources
| | | application.properties
| | |
| | +---static
| | \---templates
| | hello.html
| |
| \---test
| \---java
| \---com
| \---tutorial
| \---sptringbootmvc
| \---user
| SampleControllerTest.java


테스트 코드

@RunWith(SpringRunner.class)
@WebMvcTest(SampleController.class)
public class SampleControllerTest {

@Autowired
MockMvc mockMvc;

@Test
public void hello() throws Exception {
/*
* 요청 "/hello"
* 응답
* 모델 name : saelobi
* 뷰 이름 : hello
* */
mockMvc.perform(get("/hello"))
.andExpect(status().isOk())
.andDo(print())
.andExpect(view().name("hello"))
.andExpect(model().attribute("name", is("saelobi")))
.andExpect(content().string(containsString("saelobi")));
}
}
  • 위 테스트 코드는 view, model, 그리고 Thymeleaf 템플릿에서 만들어진 HTML 컨텐츠 문서를 확인하는 테스트입니다.
  • 요청을 /hello 보냈을 때 뷰와 모델 네임이 각각 hello, saelobi를 반환하는 것을 체크하는 테스트입니다.


소스 코드

@SpringBootApplication
public class SpringBootMvcApplication {

public static void main(String[] args) {
SpringApplication.run(SptringBootMvcApplication.class, args);
}

}

@Controller
public class SampleController {

@GetMapping("/hello")
public String hello(Model model){
model.addAttribute("name", "saelobi");
return "hello";
}
}
  • Model 객체에 속성값 name: saelobi를 추가한 후 반환합니다.
  • 이 Model 객체에 포함된 값을 통해 Thymeleaf 템플릿 엔진이 해당 템플릿에서 명시한 값을 변환합니다.


hello.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1 th:text="${name}">Name</h1>
</body>
</html>
  • xmlns:th="http://www.thymeleaf.org" 를 명시해야 템플릿이 제대로 렌더링됩니다.
  • th:text="${name}"에서 Model에서 넘어온 값을 변환합니다.



참고자료 : https://www.inflearn.com/course/스프링부트


반응형

이 글을 공유하기

댓글

Designed by JB FACTORY