728x90

HTML을 편리하게 생성하는 뷰 기능은 다음과 같다.

1. JSP

• 속도 느림, 기능 부족

 

2. 프리마커(Freemarker), Velocity(벨로시티)

• 속도 문제 해결, 다양한 기능

 

3. 타임리프(Thymeleaf)

• 내추럴 템플릿: HTML의 모양을 유지하면서 뷰 템플릿 적용 가능

• 스프링 MVC와 강력한 기능 통합

• 최선의 선택, 단 성능은 프리마커, 벨로시티가 더 빠름

 

그 중 jsp와 타임리프에 대해 설명하고자 한다.

 

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

 

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

 

그리고 jsp의 상위버전? 이라 하는 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 에 비해 속도가 좀 떨어지는 것 같고, 구조적인 부분에서 꽤나 한계가 있는 것을 느꼈다. 

 

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

 

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

 

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

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

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

 

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

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

 

먼저 Controller 부터 보자.

 

아주 간단한 코드다.

 

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

 

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

 

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

 

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

 

만들어진 프로젝트를 실행해보면

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

 

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

728x90

+ Recent posts