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>

image-20230619132934734

5. 프로젝트 URL 수정

http://localhost:8080/springlegacy -> http://localhost:8080/로 수정

Properties -> Web Project Settings
image-20230619134151139

Server -> Tomcat v9.0 Server at localhost-config -> server.xml
image-20230619134942929

댓글남기기