728x90
반응형
Thymeleaf는 서버 측 Java 템플릿 엔진이다.
HTML, XML, JavaScript, CSS 등의 웹 표준 콘텐츠를 생성하는데 사용되며, Spring MVC와 자연스럽게 통합되어 웹 애플리케이션을 개발하는 데 이용된다.
주요 특성은 다음과 같다.
1. Natural Templates
- Thymeleaf의 가장 큰 장점 중 하나
- 템플릿 파일이 그 자체로 정적인 파일로서 작동하게 만들어준다.
- 웹 브라우저에서 직접 열어볼 수 있다.
- 디자이너와 개발자가 동시에 작업할 수 있게 해서 협업을 용이하게 한다.
2. Standarad and Spring Standard dialects
- Thymeleaf는 여러가지 dialects를 지원한다.
- Standard와 SpringStandard dialects(방언)을 기본적으로 제공한다.
- SpringStandard dialects은 Spring MVC와 완벽하게 통합되어 있다.
3. Integration with Spring
- Thymeleaf 3.0 부터는 Spring 5와 Reactive Streams을 지원한다.
4. Web and non-web environments
- 웹 및 비웹 환경에서 동일하게 작동한다.
- 이를 통해 다양한 출력 형식의 처리를 지원한다.
Thymeleaf 사용을 위해서 ThymeleafViewResolver을 추가해야한다.
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
그리고 application.properties에 다음과 같이 추가한다.
# Thymeleaf
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
그 다음은 main/resources/templates 폴더에 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>Document</title>
</head>
<body>
<h1>Users</h1>
<table>
<tr>
<th>Index</th>
<th>Name</th>
<th>Email</th>
</tr>
<tr th:each="user, stat : ${users}">
<td th:text="${stat.index + 1}"></td> <!-- index는 0부터 시작하므로 1을 더해줍니다. -->
<td th:text="${user.name}"></td>
<td th:text="${user.email}"></td>
</tr>
</table>
</body>
</html>
<html>에 xmlns:th은 Thymeleaf를 사용하겠다는 선언이다.
JSP 때와 같이 파일의 .을 제외한 이름을 Controller에서 문자열로 반환하면 해당하는 HTML 파일이 Thymeleaf로 실행된다.
문법
- 표현식
- 변수 : ${…}
- 선택 변수 : *{…}
- 메시지 : #{…}
- Link URL : @{…}
- 리터럴
- 텍스트 : ‘one text’, ‘Another one’,…
- 숫자 : 0, 34, 1.0, …
- boolean : true, false
- Null : null
- token : one, sometext, main, …
- text opeation
- 문자열 연결 : +
- 문자 대체 : |The name is ${name}|
- 연산
- Binary : +, -, *, /, %
- 마이너스 : -
- boolean 연산
- Binary : and, or
- 부정 : !, not
- 비교 연산
- 비교연산자 : >, <, >=, <= (gt, lt, ge, le)
- 균등연산자 : ==, != (eq, ne)
- 조건 연산
- if-then : (if) ? (then)
- if-then-else : (if) ? (then) : (else)
- Default : (value) ?: (defaultValue)
표현 | 설명 | 예제 |
@{ ... } | URL 링크 표현식 | th:href="@{/css/bootstrap.min.css}" th:href="@{/{itemId}/edit(itemId=${item.id})}" |
| ... | | 리터럴 대체 | th:text="|Hi ${user.name}!|" (= th:text="'Hi '+${user.name}+'!'" |
${ ... } | 변수 | th:text=${user.name} |
th:each | 반복 출력 | <tr th:each="item: ${items}"> <td th:text="${item.price}">100</td> </tr> |
*{ ... } | 선택 변수 | <tr th:object="${items}"> <td th:text="*{price}">100</td> </tr> |
#{ ... } | 메시지 .properties 같은 외부 자원에서 코드에 해당하는 문자열 get. | th:text="#{member.register}" |
728x90
반응형
'Back-end & Server > Spring Boot with Kotlin' 카테고리의 다른 글
[Spring Boot] Testing (0) | 2024.03.28 |
---|---|
[Spring Boot] JSP(Java Server Pages) (0) | 2024.03.28 |
[Spring Boot] JPA(Java Persistence API) (0) | 2024.03.27 |
[Spring Boot] DAO, DTO (0) | 2024.03.27 |
[Spring Boot] MVC(Model, View, Controller) (0) | 2024.03.25 |