Thymeleaf란?
'템플릿 엔진'의 일종. html 태그에 속성을 추가해 페이지에 동적으로 값을 추가하거나 처리할 수 있다.
특징
템플릿 엔진(Template Engine)
- 웹 서비스를 만들 떄에는 서버의 데이터와 정적자원(html, css, image)을 조합해야 한다.
- 서버에서 데이터를 보내 웹 서비스를 만드는 방법에는 크게 2가지가 있다.SPA(Single Page Application)
- 최초 한번 전체페이지를 다 불러오고 응답데이터만 페이지 특정부분 렌더링.SSR(Server Side Rendering)
- 전통적인 웹 애플리케이션 방식. 요청시마다 서버에서 처리한 후 새로고침으로 페이지에 대한 응답.
보통 자바에서 웹 개발시 JSP(Java Server Page)를 이용하여 진행한다.
JSP를 사용하면 <% %>형태의 스크립트릿을 사용하여 개발한다.
그러나 이 방식은 스크립트릿과 HTML이 혼재된 상태가 되고 HTML 태그의 반복적인 사요애으로 인해 수정하기 어려운 상황이 된다.
이러한 상태를 해결할 수 있는 것이 템플릿 엔진이다.
####템플릿 엔진이란 HTML(Markup)과 데이터를 결합한 결과물을 만들어 주는 도구이다.
타임리프는 템플릿 엔진 중 하나로, Spring Boot에서는 JSP가 아닌 Thymeleaf 사용을 권장하고 있다.
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
Gradle에 dependency를 추가해준다.
<html lang="ko" xmlns:th="http://www.thymeleaf.org"
Gradle을 통해 라이브러리를 추가 한 후
html 태그에 위의 코드를 추가해주는 것이 필요하다.
타임리프 사용 선언
<html xmlns:th="http://www.thymeleaf.org">
속성 변경 - th:href
th:href="@{/css/bootstrap.min.css}"
href="value1" 을 th:href="value2" 의 값으로 변경한다.
타임리프 뷰 템플릿을 거치게 되면 원래 값을 th:xxx 값으로 변경한다. 만약 값이 없다면 새로 생성한다. HTML을 그대로 볼 때는 href 속성이 사용되고, 뷰 템플릿을 거치면 th:href 의 값이 href 로 대체되면서 동적으로 변경할 수 있다.
대부분의 HTML 속성을 th:xxx 로 변경할 수 있다.
타임리프 핵심
핵심은 th:xxx 가 붙은 부분은 서버사이드에서 렌더링 되고, 기존 것을 대체한다. th:xxx 이 없으면 기존 html의 xxx 속성이 그대로 사용된다.
HTML을 파일로 직접 열었을 때, th:xxx 가 있어도 웹 브라우저는 th: 속성을 알지 못하므로 무시한다. 따라서 HTML을 파일 보기를 유지하면서 템플릿 기능도 할 수 있다.
'Spring' 카테고리의 다른 글
메시지, 국제화 (1) | 2023.06.16 |
---|---|
주요 annotation (0) | 2023.06.07 |
상품관리 서비스(1) (0) | 2023.06.05 |
ArgumentResolver & ReturnValueHandler (0) | 2023.06.02 |
요청 매핑 (0) | 2023.05.31 |