#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
댓글남기기