[Thymeleaf] 1. Thymeleaf 의 특징과 설정 방법

2024. 10. 29. 21:55·BackEnd/Spring

 

Thymeleaf란

 

Java 기반의 서버 사이드 템플릿 엔진으로, Spring Boot에서 주로 사용되는 템플릿 엔진이며, HTML, XML, JavaScript, CSS 및 일반 텍스트를 처리할 수 있는 웹 및 독립형 환경에서 사용할 수 있다. Thymeleaf는 HTML 파일을 가져와서 파싱하여 분석 후 정해진 위치에 데이터를 치환해서 웹 페이지를 생성한다.

 

더보기

HTML : compile 없이 클라이언트 쪽 브라우저에서 해석(파싱)해 바로 출력해 준다.

JavaScript : 브라우저 위에서 구동하므로 서버 템플릿 엔진의 손을 벗어나 제어할 수 없다.

 

Template Engine 이란? : 프로그램 로직을 표현하는 계층과 서비스를 사용하는 유저가 보는 데이터 출력을 위한 프레젠테이션 계층을 분리하기 위한 수단으로, Controller에서 View로 데이터를 보내면 데이터를 View에서 볼 수 있게 도와준다. mustache, thymeleaf 등이 spring을 개발하는 프로그래머들이 선호하는 template으로 알려져 있다.

 

클라이언트 Template Engine (CSR : Client Side Rendering) : React, Vue, AngularJS와 같이 서버에서 데이터를 전달받고 이를 통해 웹 화면을 꾸며주는 라이브러리 (혹은 프레임워크) 다. SPA(Single Page Application) 환경으로 웹 서비스를 개발하는 사례가 늘어나며 많이 사용되고 있다.

 

서버 지원 Template Engine : 

  • 프로그램 로직과 프레젠테이션 계층을 분리하기 위한 수단
  • 프레젠테이션 계층에서 로직을 쉽게 표현하고, 개발의 유연성을 향상시키며 유지보수의 효율 또한 향상된다.
  • 서버 템플릿 엔진 (SSR : Server Side Rendering) : 서블릿(서버)에서 동작하는 템플릿
  • 템플릿 양식과 데이터를 이용해 html을 생성하여 브라우저에 전달한다.
  • 정해진 템플릿 양식과 데이터가 매핑하여 html 문서를 만들어주는 SW로 그 종류는 다양하다.

JSP vs Mustache vs Thymeleaf vs FreeMarker

  • JSP : 서버 지원 템플릿 엔진으로 서버에서 구동한다. 서버에서 Java 코드로 출력자료를 만든 뒤 이 문자열을 html 형식으로 변환해 브라우저로 전달한다. Spring Boot에서는 WAS에 종속적인 JSP를 더 이상 권장하지 않고 있다.
  • Mustache : Spring Boot에서 공식으로 지원하는 템플릿 엔진으로 Java는 물론, 현존하는 대부분의 언어를 지원한다. JSP와 같이 html을 만들어준다. 로직코드를 사용할 수 없어 View의 역할과 서버의 역할을 명확히 분리한다. Mustache.js와 Mustache.java를 사용해 하나의 문법으로 클라이언트/서버 템플릿으로 모두 사용 가능하다.
  • Thymeleaf : Spring Boot 에서 공식적으로 지원하는 템플릿 엔진이다. 스프링 진영에서 적극적으로 지원하고 있다.
  • FreeMarker : Spring Boot에서 공식적으로 지원하는 템플릿 엔진이다. 대부분의 경우 HTML을 생성하는 데 필요한 모든 필수 기능을 갖추고 있으며 배우기가 더 쉽다. 그러나 템플릿에 사용자 지정 기능을 추가하려는 경우 Thymeleaf를 사용하는 것이 효과적으로 알려져있다.

 

 

Thymeleaf와 JSP의 차이점

 

  1. JSP는 서비스 처리 시 먼저 Servlet으로 변환되어 실행이 된다. 즉, JSP 코드 내에서 자바 코드를 사용할 수 있게 된다.
  2. JSP 와 Thymeleaf의 가장 큰 차이점은 Servlet Code로 변환되지 않는다는 점이다. 따라서 비즈니스 로직과 분리되어 오로지 View에 집중할 수 있다. 
  3. Thymeleaf 와 달리 JSP는 SpringBoot가 자동 설정을 지원하지 않으며 권장하지 않는다. 이유는 JSP를 사용하면 JAR 패키징을 할 수 없어 WAR 패키징을 해야한다. 물론 WAR 패키징으로도 임베디드 톰캣으로 실행할 수 있고 배포도 가능하다. 하지만 Undertow라는 최근에 만들어진 서블릿 엔진이 JSP를 지원하지 않는 등 제약사항이 있다. 또한 JSP에 대한 의존성을 넣으면 의존성 문제가 생기는 경우도 있다.

 

프로젝트에서 Thymeleaf 설정

 

1. Eclipse 에서 Spring Starter Project 로 Gradle 프로젝트를 생성하고 버전에 맞춰 환경을 설정해준다.

 

2. Next를 누른 후 Depedencies를 선택할 때에 Thymeleaf도 포함하여 선택해준다.

 

 

3. application.properties 파일에서 spring thymeleaf 캐시를 설정해준다.

spring.thymeleaf.cache=false

 

 

4. Thymeleaf를 사용할 HTML 파일의 상단 html에 아래 코드를 작성해야 한다.

<html xmlns:th="http://www.thymeleaf.org">

 

 

 

참조 : https://cafe.daum.net/flowlife

저작자표시 비영리 변경금지 (새창열림)

'BackEnd > Spring' 카테고리의 다른 글

Entity 와 DTO의 개념과 차이점  (9) 2024.11.03
[Thymeleaf] 3. 사용 예시 (기본, 레이아웃)  (7) 2024.11.01
[Thymeleaf] 2. Thymeleaf 문법  (4) 2024.10.30
Spring Annotaion 알아보기  (6) 2024.10.23
Ant, Maven, Gradle 의 차이  (5) 2024.10.20
'BackEnd/Spring' 카테고리의 다른 글
  • [Thymeleaf] 3. 사용 예시 (기본, 레이아웃)
  • [Thymeleaf] 2. Thymeleaf 문법
  • Spring Annotaion 알아보기
  • Ant, Maven, Gradle 의 차이
hee-coding
hee-coding
  • hee-coding
    J의 코딩 일기
    hee-coding
  • 전체
    오늘
    어제
    • 분류 전체보기 (26)
      • FrontEnd (3)
        • HTML,CSS,Java Script (0)
        • React (3)
      • BackEnd (11)
        • DataBase (0)
        • JAVA (4)
        • Servlet & JSP (0)
        • Spring (7)
      • Project (1)
      • Error (1)
      • Git (0)
      • Coding Test Practice (4)
      • 일상~ (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코딩
    Coding
    오블완
    frontend
    티스토리챌린지
    it
    react
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
hee-coding
[Thymeleaf] 1. Thymeleaf 의 특징과 설정 방법
상단으로

티스토리툴바