본문 바로가기
Develop/Spring

[SpringBoot] Thymeleaf 와 jsp 비교 분석

by 코딩의성지 2021. 1. 2.

java 기반의 서버 프레임워크를 공부하다보면 jsp 라는 녀석을 쓰게된다.

 

jsp는 일반적인 자바 프레임워크 MVC 구조에서 V , 즉 뷰 역할을 담당하는 녀석이다.

 

요즘 스프링 부트 공부를 하면섬 Thymeleaf라는게 있다는 것을 알았다. 요즘 스프링에서 밀고있는 스프링 프레임워크의 뷰라고 보면 될것같다. 

 

Thymeleaf 이외에도 Apache Freemarker, Mustache, Groovy Templates 등 여러 템플릿 엔진이 있지만 요즘은 Thymeleaf를 많이 쓰는 것 같다 ( JSP는 옛날 회사에서는 아직도 많이 쓴다)

 

자 아무튼 오늘은 Thymeleaf와  jsp 차이점을 알아보고, 그리고 간단하게 Thymeleaf를 사용하는 방법을 알아보도록하자

 

먼저 jsp 의 경우에는 다들 아시다시피 서블릿 이라는 형태로 변환되어 실행이 된다. 서블릿이 자바소스 이다 보니 JSP내에서도 자바코드를 사용할 수 있게된다. (요즘에는 보통 JSP 내부에 비지니스 로직이 포함된 자바코드를 넣는 것은 지양한다)

 

반면 Thymeleaf는 html, xml, js, css 등을 처리할 수 있는 웹 및 독립형 환경에서 사용이 가능한 java 템플릿 엔진이다. Thymeleaf는 html 파일을 가져와서 파싱하고 그걸 분석하여 정해진 위치에 데이터를 뿌려준다.

 

Thymeleaf 의 장점은 코드자체가 앞서 말한것처럼 html 같은 웹형태이기에 was없이도 그냥 브라우저에서 직접 띄어볼 수 가 있다. thymeleaf 가 jsp 처럼 전용 문법을 사용하지 않고 그냥 html 엘리먼트에 속성으로 값을 넣어주기 때문이다.

(브라우저는 html의 모르는 속성으 무시해버리니깐 브라우저에서 그냥 띄어볼수 있는거다)

 

물론 Thymeleaf 가 만능은 아니다.. ( 그나마 3.x 버전대는 굉장히 괜찮아진듯하다.)

JSP 에 비해 속도가 좀 떨어지는 것 같고,

네츄럴 템플릿이라 WAS 없이 작업할 수 있을 줄 알았으나... 꼭 그런것도 아닌것같고... ,

구조적인 부분에서 꽤나 한계가 있는 것을 느꼈다.

 

그래도 SpringBoot와는 굉장히 궁합이 잘맞는듯하니 스프링부트를 하시는 분들은 한번쯤 써보는 것은 참 좋을듯하다.

 

말이 좀 길었다.

 

이제 실제로 스프링 부트환경에서 구현한번 해보자.

 

일단 스프링부트 프로젝트에서 Thymeleaf를 사용하려면  build.gradle 파일안에

dependencies {
   ...
   implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
   ...
}

이렇게 Thymeleaf에 대한 의존관계를 설정해줘야한다. 

 

자, 그리고 오늘 간단하게 실습해볼 건

이렇게 Controller 하나랑 html 파일 하나 만들어주면된다.

 

먼저 Controller 부터 보자.

 

아주 간단한 코드니 .. 설명은 생략한다.. 궁금한게 있으면 댓글로 남겨주라

 

여기서는 하나만 알고 넘어가자 .model 객체에 속성을 채워서 던져주면 던져주는 뷰 페이지에서 그데이터를 쓸수 있다는 것이다.

 

 

 

다음은 html 페이지이다. 여기 보면 

 

Hi!, banker 라는 게 있는데 이건 그냥 브라우저에서 열어보면 나올 문구이다.

 

자 이번에는 서버사이드에서 돌려보자.

 

만들어진 프로젝트를 실행해보면 ..! (톰캣 포트는 15000번 으로 잡았지만 여러분은 대부분 8080 일꺼다 ㅎㅎ)

그러고 접속을 해보자..!

이번엔 모델로 넘어온 데이터인 Babo가 출력되는걸 볼 수 있따.

 

뭐 별다르게 어렵진 않으리라 생각한다..! ㅎㅎ

(참고로 그냥 html은 static 디렉토리에 넣어서 작업해주면된다.)

반응형

댓글