'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 공부하며 정리한 내용입니다. 오류 해결부분은 틀린 내용이 있을 수 있습니다.🤐
템플릿 엔진이란 지정된 템플릿 양식과 데이터가 합쳐져 HTML문서를 출력하는 소프트웨어를 말한다. 서버와 클라이언트 각각의 템플릿 엔진은 같다 할 수 없다.
서버 템플릿 엔진으 서버에서 JAVA 코드로 문자열을 만든 뒤 HTML로 문자열을 변환하여 브라우저로 전달한다.
Vue.js나 React.js를 이용한 SPA(Single Page Application)은 브라우저에서 화면을 생성한다. 서버에서는 Json 혹은 Xml형식의 데이터만 전달하고 클라이언트에서 조립한다.
많은 언어를 지원하는 심플한 템플릿 엔진.
<!DOCTYPE HTML>
<html>
<head>
<title>스프링 부트 웹서비스</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<h1>스프링 부트로 시작하는 웹 서비스</h1>
</body>
</html>
이 머스테치에 Controller에서 URL매핑 진행
@Controller
public class IndexController {
@GetMapping("/")
public String index() {
return "index";
}
}
머스테치 스타터 덕분에 문자열 반환시 앞의 경로와 뒤의 파일 확장자는자동으로 지정된다. index를 반환하므로 src/main/resources/templates/indx.mustache로 반환되어 View Resolver가 처리한다.
View Resolver : URL요청의 결과를 전달할 타입과 값을 지정하는 관리자
@Test
public void 메인페이지_로딩() {
//when
String body = this.restTemplate.getForObject("/", String.class);
//then
assertThat(body).contains("스프링 부트로 시작하는 웹 서비스");
}
- 테스트를 하면
java.lang.AssertionError:
Expecting: ... 오류가 발생- localhost:8080/를 치고 들어가면 "스프링 부트로 시작하는..."이
??? ???? ????..로 나와있다.
404가 뜬 것은 아니기에 인코딩 관련 해결책을 힘겹게 찾았다.
스프링부트 버전을 내리는 것도 방법이지만
server.servlet.encoding.force-response= true
위 설정을 application.properties에 추가하여 인코딩을 강제했다.
출처글에서 답글 남겨주신 분덕에 쉽게 해결했다.😊