본문 바로가기
JAVA/SpringBoot

왜 Spring Boot 에서 JSP 대신 Thymeleaf 를 권장할까?

by GangDev 2024. 3. 25.

 

Spring Boot는 JSP 대신 Thymeleaf, FreeMarker, Groovy 템플릿 같은 다른 템플릿 엔진을 사용하는 것을 권한다. 왜 그럴까?

 

주된 이유는 JSP 파일이 컴파일 및 실행되는 방식과 관련이 있다.
일단 JSP(Java Server Pages) 파일의 컴파일과 실행 과정을 알아보자.


JSP 파일 생성:
웹 개발자는 JSP 파일을 작성한다. JSP 파일은 HTML 코드와 Java 코드가 혼합된 형태로 작성된다.
이 파일은 웹 애플리케이션 프로젝트 내에 저장된다.

 

클라이언트 요청:
클라이언트(웹 브라우저)가 특정 URL을 요청한다. 이 URL 이 JSP 파일에 해당하는 경우, 웹 서버는 해당 JSP 파일을 처리해야 함을 인식한다.

 

JSP 컴파일:
웹 서버(예: Apache tomcat)는 JSP 파일을 서블릿 코드로 변환(컴파일)한다. 이렇게 변환된 서블릿 코드는 Java 소스 코드로 이루어져 있으며, '.java' 확장자를 가진 파일로 저장된다.

 

서블릿 컴파일:
변환된 서블릿 코드('.java' 파일)은 다시 컴파일러에 의해 바이트 코드('.class' 파일)로 변환된다.

 

서블릿 실행:
컴파일된 서블릿은 서블릿 컨테이너(Tomcat 등)에 의해 로드되고 실행된다. 이 때, 서블릿은 클라이언트 요청에 따라 동적인 HTML 을 생성하고 응답한다.

 

응답 전송:

생성된 HTML 응답은 웹 서버를 통해 클라이언트에게 전송되어 웹 브라우저에서 렌더링되어 화면에 표시된다.


JSP 파일의 컴파일과 실행과정 문제:
위에 나열한 일련의 과정을 토대로 설명하면, JSP 파일은 웹 애플리케이션 서버의 파일 시스템 내에 저장되어야 컴파일 및 실행할 수 있다.
그런데 JAR 파일 내에 포함된 JSP 파일은 웹 서버가 직접 접근 및 컴파일하기 어렵다.
(보통 웹 애플리케이션을 구성할 때 JSP 파일은 웹 애플리케이션 서버 내의 특정 디렉토리에 저장되며, 웹 서버가 이 디렉토리 내의 JSP 파일을 관리하고 컴파일한다)

 

스프링 부트의 권장 사항:
Spring Boot는 JAR 포맷을 사용하여 독립 실행형 애플리케이션을 만드는 것을 권장한다. 이 프레임워크는 JSP보단 Thymeleaf, FreeMarker, Mustache 같은 다른 템플릿 엔진을 사용하는 것을 선호한다.(이런 엔진들은 JSP와 달리 JAR 파일 형식에서도 잘 작동한다)
(타임리프는 자연 템플릿을 사용하여, 서버 코드 없이도 정상적인 HTML 파일을 볼 수 있다. JSP는 Java 코드가 HTML 내에 삽입되어 있어서, 서버 없이는 정상적인 페이지를 볼 수 없다)

 

---

24년 1월 11일 작성된 글입니다