JUST GO

[공통] 타임리프 본문

Spring Boot/학습내용

[공통] 타임리프

root_go 2022. 10. 25. 12:38

타임리프(Thymeleaf)

  • 타임리프(Thymeleaf)는 동적인 HTML 문서를 만들고 이를 컨트롤러와 연결시킬 수 있도록하는 템플릿 엔진의 일종이다.
  • 타임리프 문법을 사용하는 모든 HTML 파일 내의 <html> 태그에는 반드시 xmlns:th="http://www.thymeleaf.org" 라는 속성 및 속성 값이 부여되어 있어야 타임리프 문법을 사용할 수 있다.
  • 위치는 [프로젝트 루트]/src/main/resources/templates/ 이고, 해당 위치 아래에 있는 모든 HTML 파일은 컨트롤러에서 ModelAndView 객체를 통해 연결하고 응답으로 되돌려 줄 수 있다.
  • 표현식
    • ${ ... } : 자바 문법을 작성하기 위해 사용한다. 단, 문자열은 홑따옴표(')로 표시함에 유의한다.
  • 속성(Attribute)
    • th:each : 반복 가능한 대상이 가지는 원소를 변수로 사용하여 반복한다. 해당 속성이 부여된 태그 자체가 반복됨으로 유의한다. th:each="[원소 변수 이름] : ${[반복 가능한 대상]}" 의 형태로 사용한다.
    • th:if : 속성 값이 되는 논리값이 거짓이라면 해당 태그를 제거한다.
    • th:text : 해당 태그의 텍스트로의 내용을 지정한다. HTML로 작성해놓은 내용은 모두 삭제되니 유의한다.
    • th:[일반 속성] : 작성한 [일반 속성] 의 값을 지정한다. 가령, th:value="${3 + 3}" 은 결과적으로 value="6" 으로 해석된다.
  • index.html
<!doctype html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>메인 페이지임!</title>
</head>
<body>
<h1 th:text="${message}"></h1>
</body>
</html>
  • HomeController
package dev.rootgo.study_web.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

// 식별자 : HomeController
@Controller(value = "dev.rootgo.study_web.controllers")
// 패키지 경로를 전체로 적어주면 겹칠 가능성이 낮아진다.
@RequestMapping(value = "/")
// 요청에 대한 매핑
public class HomeController {
    @RequestMapping(value = "/")
    public ModelAndView getIndex() {
        ModelAndView modelAndView = new ModelAndView("home/index");
        modelAndView.addObject("message", "메인 페이지임!");
        return modelAndView;
    }
}

 

'Spring Boot > 학습내용' 카테고리의 다른 글

[공통] MyBatis  (1) 2022.10.26
[공통] 프로젝트 구조  (0) 2022.10.25
[코드] HomeController  (0) 2022.10.25
[공통] 의존성  (0) 2022.10.25
[공통] Spring Initializr 시작  (0) 2022.10.25