[강의] ThymeLeaf

Jerry·2025년 8월 5일

Thymeleaf란?

Thymeleaf는 HTML, XML, JavaScript, CSS 등의 뷰 템플릿을 동적으로 처리해주는 서버 사이드 템플릿 엔진입니다.
HTML 파일을 그대로 브라우저에서 열 수 있으면서도 서버 사이드에서 데이터 바인딩이 가능하도록 설계된 것이 가장 큰 장점입니다.

주요 특징

기능설명
Natural TemplatesHTML 문서를 브라우저에서 그냥 열어도 문법 오류 없이 잘 보입니다. (디자이너와 협업에 좋음)
Spring과 완벽한 통합Spring MVC, Spring Boot와 자연스럽게 작동하며, Model 객체의 데이터를 뷰에 쉽게 바인딩 가능
표현식 언어(EL)${}, *{} 등의 문법을 통해 데이터를 HTML에 쉽게 출력
조건문 / 반복문th:if, th:each 등으로 논리 처리 가능
국제화 지원(i18n)메시지 번역을 위한 리소스 번들 쉽게 연동 가능
폼 처리 지원폼 값의 바인딩, 유효성 검증 등과 잘 맞음

예제

  1. 컨트롤러 예제 (Spring Boot)
@Controller
public class HelloController {

    @GetMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("name", "Spring Boot!");
        return "hello"; // templates/hello.html
    }
}
  1. Thymeleaf 템플릿 예제 (src/main/resources/templates/hello.html)
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
    <h1 th:text="'안녕하세요, ' + ${name}">안녕하세요!</h1>
</body>
</html>
안녕하세요, Spring Boot!

주요 속성

속성설명
th:text텍스트 출력 (HTML escape 적용)
th:utext텍스트 출력 (HTML escape 미적용)
th:if, th:unless조건문
th:each반복문
th:href, th:src링크, 이미지 등의 경로 지정
th:object, *{}폼 데이터 바인딩

Thymeleaf vs JSP

항목ThymeleafJSP
문법 친화성HTML 친화적HTML 깨지기 쉬움
뷰 레이어 분리디자이너 친화적디자이너 협업 어려움
보안성XSS 방지 기본 제공수동 처리 필요
Spring과의 통합매우 우수보통

Reference

profile
Backend engineer

0개의 댓글