본문 바로가기
JAVA

[자바 템플릿엔진] jsp는 이제 안녕? thymeleaf란?

by lumayi 2021. 10. 22.

 

jsp도 IE와 함께 보내줘야하는 시기가 온 것 같다.

사실 jsp학원이나 학교에서 강의용으로 많이 쓰는 언어라고 한다.

반면 현직에서는 많이 쓰이지 않는데, 그 이유는 여러가지가 있겠지만 대표적으로는

Spring Boot가 자동 설정을 지원하지 않기 때문인 것 같다.

 

나는 지금껏 스프링에서 jsp를 View를 만드는데 사용해 왔는데...

이젠 spring boot로 migration을 준비하는 중이기에 

스프링부트가 자동설정을 지원하고 권장하는 템플릿 엔진을 찾아보도록 하자!

 

템플릿 엔진이란?

템플릿 양식(html)과 데이터 모델(DB)에 따른 입력 자료를 결합해서

문서를 출력하는 소프트웨어를 템플릿 엔진이라고 한다.

 

즉, View를 담당하는 html코드와 DB Logic Code를 따로 분리해서 합쳐주는 기능을 하는 것이다.

 

 

그리고 두가지의 종류로 나뉘는데

하나는 서버사이드 템플릿 엔진, 하나는 클라이언트사이드 템플릿 엔진이다.

 

서버사이드 템플릿 엔진이란?

서버에서 가져온 데이터를 미리 만들어진 템플릿에 넣어서 html을 완성시키고 클라이언트에게 전달한다.

 

클라이언트 사이드 템플릿 엔진이란?

브라우저 위에서 html 형태로 화면을 생성하고, 서버에서 받은 json, xml형식의 데이터를

여기서 동적인 화면으로 만드는 것이며 예로는 react나 vue.js가 있다.

 

 

여기서 jsp서버 사이드 템플릿 엔진인데

아까 언급했듯이 스프링부트에서는 자동 설정을 지원하지 않는다.

 

그럼 스프링부트에서 자동 설정을 지원하는 템플릿 엔진에는 무엇이 있을까?

FreeMarker, Groovy, Thymeleaf, Mustache가 있다.

 

그 중 가장 인기가 많은 Thymeleafjsp가 다른 점을 살펴보자.

 

1. jsp서블릿이라는 형태로 변환되어 실행된다. 서블릿은 자바소스라 jsp에서 자바코드를 사용하는 것이 가능해지는데 그렇다보니 view에 비지니스 로직이 포함되어 복잡하고 무거워지게 된다.

반면, 타임리프는 서블릿으로 변환되지 않다보니 비지니스 로직이 완전히 분리가 된다는 장점이 있다.

 

2. jspJAR패키징이 불가하고, WAR패키징만이 가능하다. war는 jar와 달리  웹 서버나 WAS가 필요하고, web-inf 디렉토리에서 사전 정의된 구조만을 사용한다. 그래서 jar패키징이 가능한 thymeleaf는 was없이도 브라우저에 직접 띄울 수가 있으니 훨씬 편리하다고 볼 수 있다.

 

타임리프는 이렇듯 스프링부트와 굉장히 궁합이 잘 맞기에 권장하는 템플릿 엔진인 것 같다.

타임리프를 사용하기 위해서는 의존성을 추가해주고

view에서 html 언어를 추가해서 문법을 적용시켜주면 된다!

이 부분은 jsp와 동일한 것 같다.

 

자세한 코드는 다음 포스팅에서 적용해보아야겠다.

 

 

참고페이지:

https://velog.io/@dsunni/Spring-Boot-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9B%B9-MVC-Thymeleaf

https://devkingdom.tistory.com/207

 

반응형