#5 Spring Framework Thymeleaf 설정
2023-06-19
1. pom.xml -> Thymeleaf 추가
<!-- Thymeleaf -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.11.RELEASE</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.11.RELEASE</version>
</dependency>
<dependency>
<groupId>nz.net.ultraq.thymeleaf</groupId>
<artifactId>thymeleaf-layout-dialect</artifactId>
<version>3.0.0</version>
</dependency>
thymeleaf:Thymeleaf템플릿 엔진의 주요 라이브러리,Thymeleaf의 핵심 기능을 제공합니다.thymeleaf-sprring5:Thymeleaf와 스프링 프레임워크의 통합을 지원하는 라이브러리, 이를 통해 스프링과Thyemleaf를 함께 사용할 수 있으며, 스프링과의 연동을 쉽게 구성할 수 있습니다.thyemleaf-layout-dailect:Thymeleaf의 레이아웃 기능을 확장하는 라이브러리, 레이아웃 기능은 웹 페이지의 공통된 레이아웃 구조를 정의하고 재사용할 수 있는 기능을 제공합니다.
2. presentation-layer.xml -> ThymeleafViewResolver bean 추가
<bean id="templateResolver" class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
<property name="prefix" value="/WEB-INF/views/" />
<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 class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine" />
</bean>
<bean id="templateResolver" class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">SpringResourceTemplateResolver클래스를 사용하여TemplateResolver를 정의하는 입니다. 이 빈은 템플릿 파일을 찾고 로드할 수 있도록 도와줍니다.prfix: 템플릿 파일의 경로를 지정하는 속성입니다./WEB-INF/views/로 설정되어 있으므로,prefix뒤에 뷰 이름을 추구하여 템플릿 파일의 실제 겨오를 구성할 수 있습니다.suffix: 템플릿 파일의 확장자를 지정하는 속성입니다..html로 설정되어 있으므로, 뷰 이름 뒤에.html을 붙여서 실제 템플릿 파일을 찾을 수 있습니다.templateMode: 템플릿 파일의 형식을 지정하는 속성입니다.HTML5로 설정되어 있으므로,HTML5문법에 맞추어 템플릿 파일을 작성할 수 있습니다.
<bean id="templateEngine" class="org.thymeleaf.spring5.SpringTemplateEngine">SpringTemplateEngine클래스를 사용하여TemplateEngine을 정의하는 빈입니다. 이 빈은templateResolver를 참조하여 템플릿 파일을 처리하고, 뷰를 렌더링할 수 있는 엔진을 제공합니다.<bean class="org.thymeleaf.spring5.view.ThymeleafViewResolver">ThymeleafViewResolver클래스를 사용하여ViewResolver를 정의하는 빈입니다. 이 빈은templateEngine을 참조하여Thymeleaf를 사용하여 뷰를 처리하고, 뷰 이름을 실제 뷰 객체로 변환합니다. 이러한 ViewResolver를 등록함으로써 Spring MVC에서 Thymeleaf를 통해 뷰를 처리할 수 있게 됩니다.
3. HomeController 생성
package kr.co.springlegacy.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HomeController {
@RequestMapping("/")
public String home() {
return "home";
}
}
@Controller:Spring MVC에서 컨트롤러를 선언하기 위해 사용되는 어노테이션, 이 어노테이션을 클래스에 추가함으로써 해당 클래스가 컨트롤러임을 나타냅니다. 컨트롤러는 클라이언트의 요청을 처리하고, 응답을 생성하는 역할을 담당합니다.@Controller어노테이션이 선언된 클래스는Spring MVC의 컴포넌트 스캔 과정에서 자동으로 검색되어 빈으로 등록됩니다.@RequestMapping: 컨트롤러의 메서드에 적용되어 특정URL경로와 요청 메서드와의 매핑을 설정합니다. 메서드에@RequestMapping어노테이션을 적용하면 해당 메서드가 지정된 URL 경로로 요청이 들어왔을 때 실행되도록 설정할 수 있습니다. 이를 통해 요청을 처리하고 응답을 생성하는 로직을 구현할 수 있습니다.@RequestMapping(value = "/home", method = RequestMethod.GET)과 같이method속성을 사용하여 특정 요청 메서드(GET, POST, PUT, DELETE 등)와의 매핑을 설정할 수도 있습니다.
presentation-layer.xml 어노테이션 추가
<context:component-scan base-package="kr.co.springlegacy.controller" />
<mvc:annotation-driven/>
<context:component-scan base-package="kr.co.springlegacy.controller"/>
Spring 컨텍스트에서 컴포넌트 스캔을 설정하기 위한 XML 태그입니다.base-package속성을 사용하여 스캔할 패키지를 지정합니다. 컴포넌트 스캔은 지정된 패키지 내에서@Controller,@Service,@Repository등과 같은 어노테이션이 붙은 클래스를 스캔하여 자동으로 Spring 빈으로 등록합니다.<mvc:annotation-driven/>
Spring MVC에서 어노테이션 기반의MVC설정을 활성화하기 위한 XML 태그입니다. 이 태그를 사용하면@RequestMapping,@PathVariable,@ResponseBody등과 같은MVC관련 어노테이션을 사용할 수 있습니다. 또한, 이 태그는 기본적인MVC구성 요소인HandlerMapping,HandlerAdapter,ExceptionHandlerExceptionResolver등을 자동으로 등록합니다. 이를 통해 컨트롤러의 메서드와 요청 URL 경로 간의 매핑을 처리하고, 요청 처리 결과를 응답으로 변환하는 등의 기능을 지원합니다.
4. home.html 생성
src/main/webapp/WEB-INF/views/home.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
<h1>Home Page</h1>
</body>
</html>

5. 프로젝트 URL 수정
http://localhost:8080/springlegacy -> http://localhost:8080/로 수정
Properties -> Web Project Settings
Server -> Tomcat v9.0 Server at localhost-config -> server.xml
댓글남기기