Spring Boot/STUDY

[Spring Boot] 타임리프(Thymeleaf)란?

코맹 2024. 7. 17. 12:23

 

📌 타임리프(Thymeleaf)란?

  • 타임리프는 자바 라이브러리이며, 텍스트, HTML, XML, JavaScript, CSS를 생성할 수 있는 템플릿 엔진이다.
    • 템플릿 엔진이란 스프링 서버에서 데이터를 받아 우리가 보는 웹 페이지, 즉 HTML 상에 그 데이터를 넣어 보여주는 도구이다. 템플릿 엔진은 HTML과 함께 템플릿 엔진을 위한 문법을 섞어 사용해야 한다.
  • 스프링 MVC와의 통합 모듈을 제공하며, 애플리케이션에서 JSP로 만든 기능들을 대체할 수 있다.
  • Spring Boot에서는 JSP가 아닌 Thymeleaf 사용을 권장하고 있다.

 


개발 프로젝트를 진행할 때, JSP를 사용할지 타임리프를 사용할지에 대한 고민이 있었다.

JSP는 무엇인지 알아보자.

 

📌 JSP란?

  • JavaServer Pages의 약자를 뜻하며
  • java 코드를 사용하여 동적인 웹페이지를 개발하기 위한 웹 프로그래밍 기술이다.
  • JSP가 실행되면 자바 서블릿으로 변환되며, 웹 애플리케이션 서버에서 동작되게 되며, 생성된 데이터들을 웹페이지와 클라이언트를 통해 응답한다.

 

JSP는 서블릿의 단점을 보완해주기 위해 탄생한 것으로 서블릿에 대해 알아보자.

💡 Servlet이란?

- 서블릿은 클라이언트의 요청을 받으면서 서버에서 처리한 후 응답으로 결과값만 보내주는 구조이다.
- 동적 웹페이지 방식에서 전처리 부분을 서블릿이 담당하는 구조이다.
- 서블릿은 자바파일(.java)을 컴파일한 바이트코드(.class) 형태로, 이를 실행하고 관리해주는 런타임을 서블릿 컨테이너라고 한다.

단점
- 서블릿은 기본적으로 자바코드로, 결과로 보여줄 HTML 코드를 일일이 자바로 생성, 조합하다보니 코드가 많이 필요한데, 이때, 기본 HTML에 필요한 부분만 자바 코드를 삽입하는 형태인 JSP가 탄생하게 되었다.

 

📌 JSP 구동방식

  • JSP 파일을 서블릿으로 변환하여 서블릿을 실행하는 방식
  • 서블릿으로 컴파일 된 JSP파일은 캐시되므로 실질적 성능저하없이 개발 생산성과 유지보수 편의성을 얻을 수 있다.
  • 또한, JSP가 서블릿으로 변환되어 서블릿 기술 함께 사용이 가능하다.

 

프로젝트에서 Thymeleaf를 사용한 이유

가장 큰 이유는 jar 파일로 export가 가능한지 여부였다.

Spring으로 빌드하게 되면 기본적으로 jar파일로 빌드가 되는데 JSP는 jar 패키징이 불가능하기 때문에 war 패키징만 가능하다.

그러나 war로 패키징하려면 was가 필요하고 사전에 정의된 구조만을 사용해야 하므로 복잡하기에 jar 패키징이 가능한 Thymeleaf를 선택했다.