Thymeleaf는 HTML, XML, JavaScript, CSS 및 일반 텍스트까지 처리할 수 있는
Java 기반의 최신 서버 사이드 템플릿 엔진입니다.
웹 애플리케이션뿐만 아니라 독립형 환경에서도 사용할 수 있으며,
HTML5와의 호환성과 자연 템플릿(Natural Template) 특성을 강조합니다.
Thymeleaf는 다음과 같은 6가지 템플릿 모드를 지원합니다:
| 모드 | 설명 |
|---|---|
HTML | HTML5/XHTML 문서 처리 (DOM 기반) |
XML | XML 문서 처리 (DOM 기반) |
TEXT | 일반 텍스트 처리 (비DOM 기반) |
JAVASCRIPT | JavaScript 내 포함된 동적 데이터 처리 |
CSS | CSS 내 포함된 동적 데이터 처리 |
RAW | 파싱 없이 원시 데이터 그대로 출력 |
🔹 HTML/XML은 DOM 기반
🔹 TEXT/JAVASCRIPT/CSS는 비DOM 기반
🔹 RAW는 아무 처리 없이 그대로 출력
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>
리스트 반복 출력 시 사용
<p th:utext="#{home.welcome}">Welcome to our <b>fantastic</b> grocery store!</p>
| 표현식 | 설명 |
|---|---|
${...} | 변수 표현식 |
*{...} | 선택 변수 표현식 (th\:object와 함께 사용) |
#{...} | 메시지(i18n) 표현식 |
@{...} | URL 링크 표현식 |
~{...} | 프래그먼트 조각 삽입 |
<p th:text="'Hello, ' + ${name}">Hello, User</p>
<p th:text="|이름은 ${name}입니다|">이름은 홍길동입니다</p>
<p th:text="${price * quantity}">0.00</p><p th:if="${isAdmin and isActive}">관리자 페이지</p>
, <, >=, <= 또는 gt, lt, ge, le
<p th:if="${age >= 20}">성인입니다</p>
<p th:text="${isAdult} ? '성인' : '청소년'">청소년</p>
<p th:text="${name} ?: '이름 없음'">홍길동</p>
<th:block th:if="${someCondition} ? _ : ''">표시 여부 결정</th:block>
Thymeleaf는 직관적이고 강력한 템플릿 엔진으로, Spring Boot와 결합 시 최상의 퍼포먼스를 발휘합니다.
HTML 기반이기 때문에 프론트엔드 개발자와의 협업도 수월하며, 다양한 표현식과 조건처리 문법을 통해
복잡한 화면 구성도 깔끔하게 처리할 수 있습니다.
Spring Boot를 활용해 간단한 웹 페이지를 만드는 과정을 다음 포스팅으로 하겠습니다.
[참고]