[Spring] 스프링 프레임워크에서 Thymeleaf 사용하기(XML 설정)

 

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