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로 혼자 구현하는 웹 서비스 / 이동욱 ] 책을 따라한 것을 정리하기 위한 게시글입니다. 요약, 생략한 부분이 많으니 보다 자세한 설명은 책 구매를 권장합니다.
'Clone Coding > 스프링 부트와 AWS' 카테고리의 다른 글
[Mustache & Spring] 전체 조회 화면 만들기 (0) | 2021.01.19 |
---|---|
[Mustache] 게시글 등록 화면 만들기 (0) | 2021.01.19 |
[JPA Auditing] 생성/수정시간 자동화 (0) | 2021.01.18 |
[Spring] 등록 API 만들기 (+h2 웹 콘솔 이용하기) (0) | 2021.01.15 |
[Spring] JPA로 database 다루기 (0) | 2021.01.11 |