본문 바로가기

개발/Spring

Springboot-mustache 404 PageNotFound 에러발생

728x90
반응형

JSTL을 진짜 오래 써오다 머스테치가 핫(?)하다고 하여 서버 템플릿 엔진의 일종인 머스테치(mustache)를 공부/개발하던 중 404 PageNotFound 에러가 발생

 

## 이동욱 개발자님의 책내용에  머스테치(mustache)를 공부

jojoldu.tistory.com/463

 

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 출간 후기

(출판사: 프리렉, 쪽수: 416, 정가: 22,000원) 서적 링크 오프라인 서점에는 2019.12.04 (수) 부터 올라갈 예정입니다. 강남 교보문고나 광화문 교보문고는 주말에도 올라올 순 있겠지만, 혹시 모르니

jojoldu.tistory.com

 

## 환경정보

  • JDK 11
  • SpringBoot v2.1.9
  • Eclipse 2019-09 R
  • Maven 3.6.3

 

## 현상

Contoller 에서 /cluster/dashboard 로 접속이 되면 /templates/cluster/cluster_dashboard.html 으로 매핑이 되어야 하는데 404 PageNotFound 에러발생

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Mon Dec 28 20:28:26 KST 2020
There was an unexpected error (type=Not Found, status=404).
No message available

 

[2020-12-28 20:28:17.837] [INFO ] [restartedMain] o.s.s.c.ThreadPoolTaskExecutor:171 - Initializing ExecutorService 'applicationTaskExecutor' 
[2020-12-28 20:28:17.951] [INFO ] [restartedMain] o.s.b.a.w.s.WelcomePageHandlerMapping:58 - Adding welcome page template: index 
[2020-12-28 20:28:19.220] [INFO ] [restartedMain] o.s.b.d.a.OptionalLiveReloadServer:57 - LiveReload server is running on port 35729 
[2020-12-28 20:28:19.339] [INFO ] [restartedMain] o.s.b.w.e.tomcat.TomcatWebServer:202 - Tomcat started on port(s): 8080 (http) with context path '' 
[2020-12-28 20:28:19.344] [INFO ] [restartedMain] k.c.c.gpms.ep.web.WebAppStarter:59 - Started WebAppStarter in 7.844 seconds (JVM running for 8.721) 
[2020-12-28 20:28:19.345] [INFO ] [restartedMain] k.c.c.gpms.ep.web.WebAppStarter:48 - WebStarted 
[2020-12-28 20:28:25.966] [INFO ] [http-nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]:173 - Initializing Spring DispatcherServlet 'dispatcherServlet' 
[2020-12-28 20:28:25.967] [INFO ] [http-nio-8080-exec-1] o.s.web.servlet.DispatcherServlet:525 - Initializing Servlet 'dispatcherServlet' 
[2020-12-28 20:28:25.976] [INFO ] [http-nio-8080-exec-1] o.s.web.servlet.DispatcherServlet:547 - Completed initialization in 9 ms 
[2020-12-28 20:28:26.034] [DEBUG] [http-nio-8080-exec-2] k.c.c.g.e.w.c.c.ClusterController:45 - call - /cluster/dashboard 
[2020-12-28 20:28:26.051] [WARN ] [http-nio-8080-exec-2] o.s.web.servlet.PageNotFound:1250 - No mapping for GET /cluster/cluster/cluster_dashboard

 

## 분석/해결

  • application.properties - springboot 설정파일확인
server.port=8080
spring.mvc.static-path-pattern=/static/**
spring.mustache.suffix:.html
spring.mustache.prefix=classpath:/templates/

 

  • 리소스 폴더구조 확인

 

  • pom.xml

    - packaging 을 jar -> war로 변경
    - 해결실패

 

  • Controller 의 return 값 변경으로 해결

    - return "/cluster/cluster_dashboard" 에서 return "cluster/cluster_dashboard" 변경으로 해결

    - include 경로변경 - {{>/layout/left}} -> {{>layout>left}} 으로 변경

    - jar 파일로 SpringBoot Application 실행시 View 페이지의 절대경로, spring.mustache.prefix 인식에 대한 이슈가 있는 것 같다.

 

## 에필로그

  • 새로운 프레임워크를 개발하여 적용하는 것은 역시나 시행착오가 많다.(프로토타입이 정말 중요한듯..!!)
  • 머스테치는 JSTL에 비해서 속도가 정말 빨라서 좋은듯!!. (앞으로도 계속 사용할 듯 하다.)

 

<끄읕>

728x90
반응형