[Spring Boot #16] 스프링 웹 MVC : Thymeleaf 템플릿
- Spring/Spring Boot
- 2019. 1. 4. 00:03
| 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/스프링부트
'Spring > Spring Boot' 카테고리의 다른 글
[Spring Boot #18] 스프링 부트 ExceptionHandler (0) | 2019.01.05 |
---|---|
[Spring Boot #17] 스프링 부트 HtmlUnit 써보기 (0) | 2019.01.05 |
[Spring Boot #15] 스프링 웹 MVC : 인덱스 페이지와 파비콘 (0) | 2019.01.03 |
[Spring Boot #14] 스프링 웹 MVC : 정적 리소스 지원 (0) | 2019.01.03 |
[Spring Boot #13] 스프링 웹 MVC : HttpMessageConverter, ViewResolver (0) | 2019.01.03 |
이 글을 공유하기