sm 기술 블로그

[스프링부트] JSP와 Thymeleaf 본문

스프링부트

[스프링부트] JSP와 Thymeleaf

sm_hope 2022. 7. 11. 10:20

JSP (JavaSeverPage)

HTML 코드에 JAVA 코드를 넣어 동적 웹 페이지를 생성하는 웹 어플리 케이션 도구이다.
JSP가 실행되면 자바 서블릿(Servlet)으로 변환 되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행하고
생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다.

자바 서블릿(Servelt) : 웹페이지를 동적으로 생성하기 위한 서버측 프로그램 (자바 언어 기반)


1 클라이언트가 jsp 요청을 보냄.
2 jsp 컨테이너가 jsp 파일을 읽음.
3 jsp 컨테이너가 변환작업을 통해 Servlet 파일 생성
4 .java 파일이 .class파일로 컴파일됨
5 실행을 통해 HTML 파일을 생성하여 JSP 컨테이너에게 전달한다.
6 JSP는 HTTP 프로토콜을 통해 HTML 페이지를 클라이언트에게 전달

Thymeleaf (타임리프)

템플릿 엔진의 일종으로 html 태그에 속성을 추가해 페이지에 동적으로 값을 추가하거나 처리할 수 있게 해준다.

템플릿 엔진(Template Engine) : 데이터와 HTML을 결합한 결과물을 만들어 주는 도구


1 템플릿 엔진이 DB와 Web Template으로 부터 데이터를 받음
2 변환을 통해 웹문서로 출력

JSP와 Thymeleaf 차이점

타임리프는 html 파일을 가져와서 파싱해서 분석 후 정해진 위치에 데이터를 치환해 웹 페이지를 생성한다.
JSP는 서블릿으로 변환되어 실행되어 지는데 JSP 내에서 자바 코드를 사용할 수 있다.(하지만 사용을 지양한다.)

이 둘은 모두 View를 담당한다.
체감으로 가장 큰 차이점을 타임리프는 Html 자체를, JSP는 서블릿을 변환해야한다.

첫번째 차이점은

  • 타임리프
  • JSP

다음과 같이 타임리프는 웹서버를 실행하지 않고도 실제 브라우저를 확인 가능하지만 JSP는 불가능 하다는 것이다.
또한 JSP를 View만 담당하고 비즈니스 로직을 넣게 된다면 디버깅과 유지보수가 힘들어진다.
반면 타임리프는 비즈니스 로직이 완전히 분리되어 있다.

두번째 차이점은

JSP는 JAR 패키징이 불가능하여 WAR패키징만 가능하다.
WAR는 웹 서버나 WAS(Web Application Server)가 꼭 필요하고 사전에 정의된 구조만을 사용한다.
반면 JAR은 WAS 없이도 브라우저에 직접 띄울 수 있다.

때문에 최근에 JSP 사용이 지양되고, 타임리프를 사용하는 추세이다.

Comments