지정된 템플릿 양식에 데이터를 합쳐 HTML 문서를 출력하는 SW
View Code(HTML)와 Data Logic Code(DB Connection)을 분리함
서버에서 작동되는 템플릿
서버에서 HTML 문서를 만들고 클라이언트에게 전달함
작동방식
1) 작성된 코드를 문자열로 만든다.
2) 미리 정의된 템플릿에 가져온 데이터(DB나 API에서)를 저장한다.
3) 문자열을 HTML 문서로 변환한다.
4) HTML 문서를 클라이언트(브라우저)에 전달한다.
동적 처리가 적을 경우 사용하면 편리함
종류: Jsp, Thymleaf, freeMarker, Mustache 등
텍스트 기반 문서에 Java 코드를 사용할 수 있도록 하는 템플릿 엔진
WAS가 jsp 파일을 Servlet Java 파일로 변환 및 컴파일하여 응답 결과를 클라이언트에게 전달함
장점: 다양한 텍스트(TEXT, HTML, XML, JSON, YAML 등)를 처리할 수 있음
단점: View와 Data logic을 분리하기 어려움
텍스트 기반 문서에 HTML 기반 코드를 사용하여 Java 코드를 처리할 수 있는 템플릿 엔진
서버 동작 없이 화면을 확인할 수 있음
장점: 순수 HTML을 유지하려는 특성을 가짐
단점: Jsp보다 응답 속도가 느림, HTML 편향 템플릿 엔진이라고도 함
SpringBoot와의 호환성
스프링 부트는 Thymeleaf를 권장하고, jsp를 권장하지 않는다.
jsp는 .war 패키징, thymeleaf는 .jar 패키징이 가능한데, 스프링 부트는 기본적으로 .jar를 빌드하기 때문이다.
다양한 템플릿 엔진이 등장하며 jsp의 영향력이 줄어들고 있지만, 기술 변화가 느린 SI 기업에서는 여전히 jsp를 많이 사용하기에 무시할 수 없다.
브라우저에서 작동되는 템플릿
브라우저에서 HTML 문서를 만들며 동적으로 DOM(문서 객체)을 생성함
서버는 json, xml 형식의 데이터만 전달하고 클라이언트는 받은 데이터를 혼합하여 HTML를 만듦
동적 처리가 많을 경우(단일 화면에서 이벤트가 많을 때 등) 사용하면 편리함
종류: React, Vue.js 등
코드량 줄일 수 있음
재사용성 높음
유지보수 용이