본문 바로가기
학습/Java

[java] 템플릿 엔진 / SSR & CSR / JSP와 Mustache / 정적파일

by KKambi 2020. 2. 10.

템플릿 엔진

= 지정된 템플릿 양식과 데이터가 합쳐져 HTML문서를 출력하는 소프트웨어

ex) JSP in Java / View in React

 

 

 

서버사이드 렌더링(SSR) vs 클라이언트 사이드 렌더링(CSR)

1. JSP는 서버 템플릿 엔진으로, 서버에서 구동된다.

-> 서버에서 템플릿 양식에 Java코드로 문자열을 만든다. (서버 사이드 렌더링)

-> 이 문자열을 HTML로 변환하여 브라우저에 전달한다.

-> 브라우저는 문자열을 받아서 화면에 표시할 뿐이다.

 

2. React의 View는 클라이언트 템플릿 엔진으로, 브라우저 위에서 작동한다.

-> 서버는 JSON 또는 xml 형식으로 데이터만 전달한다.

-> 브라우저는 템플릿 양식에 데이터를 조립하여 HTML을 만든다. (클라이언트 사이드 렌더링)

-> 이를 화면에 표시한다.

 

3. SPA(Single Page Application)은 클라이언트 사이드 렌더링에 의해 구현된다.

 

더보기

cf) JSP는 엄밀히 서버 템플릿 엔진은 아니다. 하지만 View의 역할만 구성할 때는 템플릿 엔진이다.

(Spring + JSP로 사용될 때)

 

 

 

Java진영에서의 템플릿 엔진

1. JSP

- 과거에 많이 사용됨

- 현재 스프링 진영에서 권장되지 않는다.

 

2. Thymeleaf

- 현재 스프링 진영에서 권장된다.

- HTML 태그에 속성로 템플릿 기능을 사용하기에 기존 템플릿 엔진과 다르다.

- JS Framework에 익숙한 사람이라면 사용하기 좋다.

 

3. Mustache

- 간단하다.

- 로직 코드를 사용할 수 없어 View와 Server의 역할을 구분하게 된다.

- Mustache.js / Mustache.java가 다 있어서, 하나의 문법으로 클라이언트 / 서버 템플릿 엔진을 사용할 수 있다.

 

 

 

머스테치(Mustache)

1. Ruby, JS, Python, Java 등 대부분의 언어를 지원하는 심플한 템플릿 엔진

2. Java에서 사용될 땐 서버 템플릿 엔진, JS에서 사용될 땐 클라이언트 템플릿 엔진

3. 제일 큰 장점 =  Thymeleaf나 JSP와 달리 커뮤니티 버전에서도 플러그인 사용 가능!

 

 

 

Test는 어떻게?

1. HTML도 결국 규칙이 있는 문자열

2. org.springframework.boot.test.web.client.TestRestTemplate를 통해 URL을 호출했을 때, 해당 mustache file에 포함된 코드들이 있는지 확인하면 된다.

 

 

스프링부트에서의 정적파일

1. 스프링부트는 src/main/resources/static 디렉토리에 위치한 js, cs, image 등의 static file들을 URL에서 /로 불러올 수 있다. (절대 경로로 시작해도 가능)

 

댓글