Thymeleaf란 무엇인가?

wjd15sheep·2025년 7월 1일
0

Spring Boot

목록 보기
15/19

Thymeleaf란?

Thymeleaf는 HTML, XML, JavaScript, CSS 및 일반 텍스트까지 처리할 수 있는
Java 기반의 최신 서버 사이드 템플릿 엔진입니다.
웹 애플리케이션뿐만 아니라 독립형 환경에서도 사용할 수 있으며,
HTML5와의 호환성과 자연 템플릿(Natural Template) 특성을 강조합니다.


지원 템플릿 모드

Thymeleaf는 다음과 같은 6가지 템플릿 모드를 지원합니다:

모드설명
HTMLHTML5/XHTML 문서 처리 (DOM 기반)
XMLXML 문서 처리 (DOM 기반)
TEXT일반 텍스트 처리 (비DOM 기반)
JAVASCRIPTJavaScript 내 포함된 동적 데이터 처리
CSSCSS 내 포함된 동적 데이터 처리
RAW파싱 없이 원시 데이터 그대로 출력

🔹 HTML/XML은 DOM 기반
🔹 TEXT/JAVASCRIPT/CSS는 비DOM 기반
🔹 RAW는 아무 처리 없이 그대로 출력


Thymeleaf의 장점

  • ✅ HTML5 문법을 그대로 사용하므로 디자이너와의 협업이 용이
  • ✅ 순수 HTML로도 열 수 있어 시각적 미리보기 가능
  • ✅ Java와의 유기적인 연결로 강력한 데이터 바인딩
  • ✅ 다양한 모드를 통해 웹/비웹 환경 모두 지원
  • ✅ Spring Boot와의 자연스러운 통합

기본 문법 예시

텍스트 출력: th:text

<p th:text="#{home.welcome}">Welcome to our grocery store!</p>

반복 처리: th:each

<tbody>
  <tr th:each="prod : ${allProducts}">
    <td th:text="${prod.name}">Oranges</td>
    <td th:text="${#numbers.formatDecimal(prod.price, 1, 2)}">0.99</td>
  </tr>
</tbody>

리스트 반복 출력 시 사용

HTML 포함 출력: th:utext

<p th:utext="#{home.welcome}">Welcome to our <b>fantastic</b> grocery store!</p>

Standard Expression Syntax

1. 간단한 표현식

표현식설명
${...}변수 표현식
*{...}선택 변수 표현식 (th\:object와 함께 사용)
#{...}메시지(i18n) 표현식
@{...}URL 링크 표현식
~{...}프래그먼트 조각 삽입

2. 리터럴

  • 문자열: '텍스트', 'Hello'
  • 숫자: 0, 12.3
  • 불리언: true, false
  • null: null
  • 일반 토큰: main, value

3.텍스트 연산

<p th:text="'Hello, ' + ${name}">Hello, User</p>
<p th:text="|이름은 ${name}입니다|">이름은 홍길동입니다</p>

4. 산술 연산

  • +, -, *, /, %
  • 단항 마이너스: -5
       <p th:text="${price * quantity}">0.00</p>

5. 불리언 연산

  • and, or, !, not
<p th:if="${isAdmin and isActive}">관리자 페이지</p>

6. 비교 연산

  • , <, >=, <= 또는 gt, lt, ge, le

  • ==, != 또는 eq, ne
<p th:if="${age >= 20}">성인입니다</p>

7. 조건 연산자

<p th:text="${isAdult} ? '성인' : '청소년'">청소년</p>
<p th:text="${name} ?: '이름 없음'">홍길동</p>

8. 특수 토큰

  • _:No-operation (동작 없음)
<th:block th:if="${someCondition} ? _ : ''">표시 여부 결정</th:block>

마무리

Thymeleaf는 직관적이고 강력한 템플릿 엔진으로, Spring Boot와 결합 시 최상의 퍼포먼스를 발휘합니다.
HTML 기반이기 때문에 프론트엔드 개발자와의 협업도 수월하며, 다양한 표현식과 조건처리 문법을 통해
복잡한 화면 구성도 깔끔하게 처리할 수 있습니다.

Spring Boot를 활용해 간단한 웹 페이지를 만드는 과정을 다음 포스팅으로 하겠습니다.


[참고]

profile
성장 위해 노력하는 웹 개발자 주니어

0개의 댓글