본문 바로가기
Clone Coding/스프링 부트와 AWS

[Mustache] 화면 구성

by 연로그 2021. 1. 18.
반응형

Mustache란?

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

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

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

 

서버 템플릿 엔진의 종류

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

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

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

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

 

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

( 물론 나는 Eclipse로 따라하는 중이지만, 책 기준으로는 inteillij를 권장하기 때문에...

이클립스로 Mustache 이용하기: yeonyeon.tistory.com/30 )

 

머스테치 의존성 추가

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.spaws.book.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("스프링 부트로 시작하는 웹 서비스");
	}
}

만약 한글이 인식 안 되는 오류가 떴다면,

1. mustache에서 UTF-8로 설정하는 부분에 오탈자를 확인

2. Eclipse UTF-8 설정이 되어있는지 확인 (참고: all-record.tistory.com/153)

 

마지막 테스트 한번더.

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

위와 같은 페이지가 뜬다면 성공.

WhiteLabel 어쩌구 오류 페이지가 뜬다면 경로를 잘 입력했는지, 경로 설정에 오타가 있진 않은지, 서버가 잘 실행됐는지 등을 파악해보아야 한다.


해당 게시글은 [ 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 / 이동욱 ] 책을 따라한 것을 정리하기 위한 게시글입니다. 요약, 생략한 부분이 많으니 보다 자세한 설명은 책 구매를 권장합니다.

 

반응형