WORK/STUDY

[Mustache] 화면 역할에 충실한 템플릿 엔진

Justin Mendes 2023. 10. 26. 22:04
 

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 예스24

가장 빠르고 쉽게 웹 서비스의 모든 과정을 경험한다. 경험이 실력이 되는 순간!이 책은 제목 그대로 스프링 부트와 AWS로 웹 서비스를 구현한다. JPA와 JUnit 테스트, 그레이들, 머스테치, 스프링

www.yes24.com

*위의 책을 따라 학습한 것을 정리한 내용입니다


Mustache란?

머스테치 다양한 언어를 지원하는 심플한 템플릿 엔진이다.

(템플릿 엔진: 지정된 템플릿 양식과 데이터가 합쳐져 html 문서를 출력하는 소프트웨어.)

java에서 이용할 때는 서버 템플릿 엔진, javascript에서 이용할 때는 클라이언트 템플릿 엔진으로 모두 사용 가능하다.

 

서버 템플릿 엔진의 종류

- JSP, Velocity: 스프링 부트에서 권장 x

- Freemarker: 템플릿 엔진으로서 과한 기능 지원. 숙련도 낮으면 비즈니스 로직 추가의 확률 有

- Thymeleaf: 스프링에서 권장. 문법이 어려움

- Mustache: 심플. 하나의 문법으로 서버/클라 모두 사용 가능.

 

Intellij를 기준으로, thymeleaf의 플러그인은 유료이므로 이 프로젝트에선 Mustache를 사용한다.

 

머스테치 의존성 추가

build.gradle에 다음 코드를 추가하고 refresh 하기

compile('org.springframework.boot:spring-boot-starter-mustache')

 

index 페이지 작성

mustache의 기본 위치는 /src/main/java/resources 이다.

/templates 폴더를 만들고 index.mustache 파일을 생성한다.

<!DOCTYPE HTML>
<html>
<head>
	<title>스프링 부트 웹 서비스</title>
	<meta http-equiv="Content-Type" content="text/html; charset-UTF-8"/>
</head>
<body>
	<h1>스프링 부트로 시작하는 웹 서비스</h1>
</body>
</html>

 

 

com.study.springboot.web.dto에 IndexController.java 생성

@Controller
public class IndexController {
	@GetMapping("/")
	public String index() {
		return "index";
	}
}

 

테스트 코드 작성

IndexControllerTest.java

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class IndexControllerTest {
	@Autowired
	private TestRestTemplate restTemplate;
	
	@Test
	public void 메인페이지_로딩() {
		//when
		String body = this.restTemplate.getForObject("/",String.class);
		
		//then
		assertThat(body).contains("스프링 부트로 시작하는 웹 서비스");
	}
}

테스트는 정상적으로 통과한다. 그래도 직접 보고 싶으니..

Application.java의 main 메소드를 실행하고 localhost:8080에 접속해본다.

이렇게 뜬가면 성공.. 굿.. WhiteLabel 오류 페이지가 뜬다면 경로를 잘 입력했는지, 경로 설정에 오타가 있진 않은지, 서버가 잘 실행됐는지 등을 확인해야한다. 서버 2개 켜도 오류 뜨더라