start.spring.io에서 새로운 스프링 프로젝트를 실행할 때면 이유도 잘 모른 채 Thymeleaf dependency를 종종 추가해주곤 하였는데 실제로 타임리프를 이용해서 html파일을 제작해 MVC로 프로젝트를 제작해본 적도 없다. 방학을 맞이해서 스프링의 기초를 다시 다지고 있는데 그동안 무지했던 부분들을 하나씩 기록해가며 공부해볼까 한다.
나는 앞으로도 타임리프를 사용할 일이 많지는 않을거라 생각하기에 간단히 개념만 짚고 넘어갈 것이다.
Thymeleaf(타임리프)란?
Thymeleaf는 템플릿 엔진의 일종으로 보통 뷰 템플릿이라고도 많이 부른다. JSP(Java Server Page)처럼 html 문법에 th 속성을 추가해 값을 동적으로 처리할 수 있다.
Thymeleaf 공식 사이트
Thymeleaf
Integrations galore Eclipse, IntelliJ IDEA, Spring, Play, even the up-and-coming Model-View-Controller API for Java EE 8. Write Thymeleaf in your favourite tools, using your favourite web-development framework. Check out our Ecosystem to see more integrati
www.thymeleaf.org
Thymeleaf 설정
Thymeleaf를 사용하기 위해서는 dependency를 추가해주어야 한다. 나처럼 처음 spring 프로젝트를 시작할 때 start.spring.io에서 자동으로 dependency를 추가해주는 방법도 있지만 이미 프로젝트를 생성한 경우라면? 어렵지 않다. 그냥 추가해주면 된다.
Gradle - build.gradle 파일
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
Maven - pom.xml 파일
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
이렇게 라이브러리를 추가한 후에는 다음과 같이 타임리프를 사용할 html 파일의 태그를 수정해주어야 한다.
<html xmlns:th="http://www.thymeleaf.org">
설정은 끝났다.
Thymeleaf 문법
문법은 나도 잘 몰랐던 터라 다른 분들의 블로그를 참고했다.
<출처>
[Thymeleaf] 타임리프란? (+기본적인 사용법) (tistory.com)
https://myeongdev.tistory.com/20
주요 문법은 위와 같다. 몇 가지의 경우를 더 보자면 아래와 같다.
th:inline="javascript"
<script> 태그에 th:inline 속성을 javascript로 지정하면 javascript 문법을 사용할 수 있다.
th:if / th:unless
th:if는 if문, th:unless는 else문이다. th:unless에는 그냥 else문과는 달리 th:if에 들어가는 조건처럼 조건을 지정해주어야 한다.
th:fragment
<head> 태그에 th:fragment 속성을 사용하여 fragment 이름을 지정할 수 있다.
th:replace
JSP의 <include> 태그와 유사한 속성으로, th:fragment로 설정한 이름을 찾아 해당 코드로 치환한다.
th:href
href는 hypertext reference의 약자로, 연결할 주소를 지정하는 속성이다. <a> 태그의 href 속성과 동일하다.
이 외에도 문법은 다양한 거 같으니 상황에 따라 적절한 것을 구글링 해가며 사용하면 될 것 같다.