Published on

스프링 프레임워크 첫걸음 - 6장 : 템플릿 엔진 알아보기

Authors
  • avatar
    Name
    손예지(Liv)

스프링에서는 타임리프라는 템플릿 엔진을 사용해 뷰의 표시를 도와줍니다. 타임리프를 사용해 화면에 어떻게

1. 템플릿 엔진이란 ?

템플릿 엔진을 저자는 '데이터를 미리 정의된 템플릿에 바인딩 해서 뷰의 표시를 도와주는 것' 이라고 설명합니다. 이것을 다시 생각해보면 미리 정해진 형태에 맞춰서 화면에 출력해주는 것이라고 할 수 있습니다.

그중 타임리프를 사용해

2. Model 인터페이스

Model 인터페이스는 다음과 같은 특징이 있습니다. (p. 133)

  1. 처리한 데이터를 뷰에 표시하고 싶을 경우 데이터를 전달하는 역할을 합니다.

Model 객체를 저장하기 위해서는 addAttribute 메서드를 사용해 값을 설정할 수 있습니다. Model 인터페이스를 사용하기 위해서는 요청 핸들러 메서드의 인수에 Model 타입을 전달합니다. Model 타입을 전달하면, 스프링 MVC는 Model 타입의 인스턴스를 생성합니다. addAttribute는 인수로 name, value 를 넣어줍니다.

3. 타임리프를 사용해서 프로그램 만들기

Spring Initializer 을 사용해 스프링 프로젝트를 생성합니다. 이때 build.gradle 에 Thymeleaf 설정을 합니다.

implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'

타임리프 설정이 완료되었다면, 컨트롤러와 뷰 생성이 필요합니다. 먼저 컨트롤러를 생성합니다. 해당 클래스가 컨트롤러임을 나타내는 @Controller 어노테이션을 입력합니다. showView 클래스에서 Model 타입을 인수로 전달하고, 뷰 이름을 return 값으로 설정합니다. 여기서는 useThymeleaf 라는 이름으로 설정해주었습니다.

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class ThymeleafController {

    @GetMapping("show")
    public String showView(Model model){
        model.addAttribute("name", "이순신");
        return "useThymeleaf";
    }
}

컨트롤러 설정 후에는 뷰를 생성합니다. 이때 뷰의 위치는 resources/templates 폴더 하위에 있어야 합니다. 컨트롤러에서 리턴값으로 설정해준 뷰 이름 useThymeleaf 이름의 html 파일을 설정해줍니다.

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" lang="en">
<head>
    <meta charset="UTF-8">
    <title>Thymeleaf Sample</title>
</head>
<body>
<!-- 01: 직접 문자를 삽입 -->
<h1 th:text="'hello world'"> 표시하는 부분</h1>
<!-- 02: 인라인 처리 -->
<h1>안녕하세요 ! [[${name}]]씨</h1>
<!-- 03: 값 결합 -->
<h1 th:text="'오늘의 날씨는 ' + '맑음 ' + '입니다'">표시하는 부분</h1>
</body>
</html>

정리

참고자료:
스프링프레임워크 첫걸음, 후루네스 키노시타 마사아키