자바 프로그래밍을 처음 배울 때 기본적으로 JSP를 배운다.
JSP는 일반적인 Java MVC 구조에서 View의 역할을 하는데 요즘 Spring에서는 View로 Thymeleaf를 더 추구한다고 한다!
JSP의 경우에는 Servlet 형태로 변환되어 실행된다.
Servlet은 자바 소스이기 때문에 JSP에서 java 코드를 사용할 수 있다.
하지만 보통 jsp파일 내부에 java코드를 넣는 것은 추천하지 않는다.
반면, Thymeleaf는 html 파일을 가져와 파싱하고 그것을 분석해 정해진 위치에 데이터를 뿌려준다.
JSP와 Thymeleaf의 가장 큰 차이는 jar 파일로 export가 가능한지 여부다.
Spring으로 빌드하면 기본적으로 jar파일로 빌드가 되는데 JSP는 jar패키징이 불가능하고 war패키징만 가능하다.
그래서 jar로 패키징이 가능한 Thymeleaf를 사용하는 것이 더 좋고 편리하다.
(war로 패키징을 하려면 was가 필요하고 사전에 정의된 구조만을 사용해야 해 복잡하다. 그래서 jar로 패키징 하는 것이 더 편리함)
Spring boot + JSP로 프로젝트를 jar로 빌드해 실행하면 브라우저에 오류가 뜨는 것을 볼 수 있을 것이다.
내장 톰캣을 사용하는 Spring boot Application에서 JSP를 지원하지 않아 발생하는 오류이다.
Thymeleaf는 위에서 설명햇 듯 순수 HTML파일을 최대한 유지한다.
그래서 웹 브라우저에서 파일을 직접 열어도 내용을 확인할 수 있다.
하지만 JSP는 순수 html을 유지하지 않기 때문에 JSP코드와 HTML코드가 뒤죽박죽 섞여 웹 브라우저에서 정상적인 결과를 확인하기 힘들다.
JSP는 오직 서버를 통해서만 렌더링되고 HTML 응답 결과를 받아야만 화면을 확인할 수 있다.
Thymeleaf는 HTML파일을 가져 와 파싱하고 분석한 후 정해진 위치에 데이터를 치환해 웹 페이지를 생성한다.
반면, JSP는 Servlet으로 변환되어 웹 애플리케이션 서버에서 동작하며 필요한 기능을 수행하고 생성된 데이터를 웹 페이지와 함께 클라이언트로 응답한다.
Thymeleaf는 Servlet으로 변환되지 않아 비즈니스 로직이 완전히 분리된다.
JSP는 Servlet으로 변환되어 실행되는데 Servlet은 자바 소스라 JSP에서 자바 코드를 사용하는 것이 가능하다. 그래서 View에 비즈니스 로직이 포함되어 복잡해지고 무거워진다.
설명만 보면 JSP 왜 쓰냐~@ Thymeleaf 만만세 할 수 있지만! Thymeleaf는 JSP보다 응답 속도가 느리다는 단점이 있다.
출처
https://yjh5369.tistory.com/entry/thymeleaf-vs-jsp
https://velog.io/@come_true/Thymeleaf-vs-JSP