프로젝트 개발 시 프런트를 JSP로 개발할지 Thymeleaf로 개발할지 고민했다.
회사에서 안 써본 Thymeleaf를 사용해보고 싶었다.
그렇다고 무작정 사용할 수는 없으니 Thymeleaf와 JSP 차이를 정리해 보자!
jar 파일로 export 가능 여부
Thymeleaf와 JSP의 가장 큰 차이점은 jar 파일로 export가 가능한지 여부이다.
spring 프로젝트를 빌드하면 기본적으로 jar가 빌드된다.
war는 jar와 달리 Web Server나 WAS가 필요하고 사전에 정의된 구조만 사용해야 한다.
즉, spring 프로젝트에서는 jar로 export 되는 것이 더 편리하다.
JSP는 jar 패키징이 불가능하고 war만 가능하다.
따라서 jar로 패키징이 가능한 Thymeleaf를 spring에서 더 좋아하고, WAS 없이도 브라우저에 띄울 수 있어서 훨씬 편리하다.
순수 HTML
Thymeleaf는 순수 HTML을 최대한 유지한다.
따라서 웹 브라우저에서 파일을 직접 열어도 내용을 확인할 수 있다.
하지만 JSP는 순수 HTML을 유지하지 않기 때문에 JSP 파일을 웹 브라우저에서 열어보면 JSP 소스 코드와 HTML이 섞여서 웹 브라우저에서 정상적인 결과를 확인하기 어렵다.
따라서 JSP는 오직 서버를 통해서만 렌더링 되고, HTML 응답결과를 받아야만 화면을 확인할 수 있다.
Servlet 형태로 변환
Thymeleaf와 JSP의 동작과정을 간단히 살펴보면,
Thymeleaf는 HTML 파일을 가져와서 파싱하고 분석한 후, 정해진 위치에 데이터를 치환해서 웹페이지를 생성한다.
JSP는 servlet으로 변환되어 WAS에서 동작하며 필요한 기능을 수행하고, 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다.
따라서 Thymeleaf는 servlet으로 변환되지 않으므로 비즈니스 로직이 완전히 분리된다.
반면에 JSP는 servlet으로 변환되어 실행되는데, servlet은 Java 소스라 JSP에서 Java코드를 사용하는 것이 가능해진다.
JSP 파일 내부에 Java 코드를 사용하면 view에 비즈니스 로직이 포함되어서 복잡해지고 무거워져서 지양한다.
성능
Thymeleaf가 JSP보다 사용하기 편하지만, 성능면에서는 Thymeleaf가 다른 템플릿 엔진들에 비해 떨어진다.
References
https://velog.io/@come_true/Thymeleaf-vs-JSP