Thymeleaf는 대부분 Spring Boot에서 사용하는데,
나는 아직 SpringFramework에서 xml설정을 사용하므로 해당 방법을 찾아보고 정리해 보았다.
1. pom.xml 추가
pom.xml 파일에 타임리프 dependency 추가
<!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring5 -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.15.RELEASE</version>
</dependency>
2. XML설정 - ThymeleafViewResolver
예시 1) ChatGPT
<!-- jsp 뷰 리졸버 설정 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
<property name="viewNames" value="jsp/*" />
</beans>
<!-- Thymeleaf 뷰 리졸버 설정 -->
<bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
<property name="prefix" value="/WEB-INF/templates/" />
<property name="suffix" value=".html" />
<property name="templateMode" value="HTML5" />
</bean>
<bean id="templateEngine" class="org.thymeleaf.spring5.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver" />
</bean>
<bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine" />
</bean>
* templateEngine : 'SpringTemplateEngine' 빈을 여기에 주입하여 타임리프 엔진을 설정
* characterEncoding : 문자 인코딩을 설정 (기본적으로 UTF-8을 사용)
* viewNames : 리졸버가 처리할 뷰 이름 패턴을 설정 (필요에 따라 사용)
예시 2) 프로젝트 참고
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
<property name="characterEncoding" value="UTF-8" />
<property name="templateEngine">
<bean class="org.thymeleaf.spring5.SpringTemplateEngine">
<property name="templateResolver">
<bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".html"/>
<property name="characterEncoding" value="UTF-8" />
</bean>
</property>
</bean>
</property>
</bean>
</beans>
3. 컨트롤러
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MyController {
@GetMapping("/welcome")
public String welcome(Model model) {
model.addAttribute("message", "Hello Thymeleaf!");
return "thymeleaf/welcome";
}
}
4. 템플릿 파일
/WEB-INF/views/thymeleaf/welcome.html 파일
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Thymeleaf Test!!</title>
</head>
<body>
<h1 th:text="${message}"></h1>
</body>
</html>
참고
https://offbyone.tistory.com/406
'Programming > Back-End' 카테고리의 다른 글
[JAVA/자바] Enum 목록 가져오기(Stream.of) (1) | 2023.09.26 |
---|---|
REST, REST API, RESTful 개념 정리 (36) | 2023.09.23 |
[Java/자바] Base64.Encoder.withoutpadding 적용하기 (안드로이드 NO_PADDING 참고) (38) | 2023.09.19 |
[Mybatis] delete 여러 테이블 데이터 한번에 삭제하기 (42) | 2023.09.18 |
java.net.BindException "Address alredy in use: bind" 해결/특정 포트 죽이는 방법 (37) | 2023.09.13 |