2017-07-14 123 views
1

我想寫一個Spring Boot應用程序來爲我的AngularJS應用程序提供單個文件「index.html」。我有以下類:Java Spring Boot:Servlet.service()for servlet [dispatcherServlet]拋出異常

Application.java

@SpringBootApplication 
public class Application 
     extends SpringBootServletInitializer 
{ 
    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) 
    { 
     return application.sources(Application.class); 
    } 

    public static void main(String[] args) 
    { 
     SpringApplication.run(Application.class, args); 
    } 
} 

BaseController.java

@Controller 
public class BaseController 
{ 
    // Map all urls to this method aside from ones starting with api 
    @RequestMapping(value = "/**") 
    public String getIndexHtml() 
    { 
     System.out.println("hi me"); 
     return "index"; 
    } 
} 

MvcConfiguration.java

@Configuration 
public class MvcConfiguration 
     extends WebMvcConfigurerAdapter 
{ 
    @Bean 
    public ViewResolver getViewResolver() 
    { 
     InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
     resolver.setPrefix("/WEB-INF/"); 
     resolver.setSuffix(".html"); 
     return resolver; 
    } 
} 

而下面的目錄結構:

 
src 
└── main 
       ├── java 
       │   └── com 
       │    └── myangularapp 
       │     ├── Application.java 
       │     ├── config 
       │     │   └── MvcConfiguration.java 
       │     └── controllers 
       │      └── BaseController.java 
       └── webapp 
        └── WEB-INF 
           └── index.html 

我再有gradle這個部署在Tomcat 8

但是之前創建的應用程序轉變成戰爭,任何時候我嘗試訪問的網站,我總是看到這個頁:enter image description here

而下面的堆棧跟蹤:

2017-07-15 00:01:51.551 ERROR 42496 --- [nio-8090-exec-1] o.a.c.c.C.[.[.[.5.0.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] threw exception 

java.lang.StackOverflowError: null 
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:231) ~[servlet-api.jar:na] 
at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:594) ~[catalina.jar:8.5.15] 
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:231) ~[servlet-api.jar:na] 

最終變成:

at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:231) ~[servlet-api.jar:na] 
at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:594) ~[catalina.jar:8.5.15] 
at org.springframework.web.util.WebUtils.getSessionId(WebUtils.java:288) ~[spring-web-4.3.7.RELEASE.jar:4.3.7.RELEASE] 
at org.springframework.web.servlet.FrameworkServlet.publishRequestHandledEvent(FrameworkServlet.java:1077) ~[spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE] 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) ~[spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE] 
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) ~[spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE] 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) ~[servlet-api.jar:na] 
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) ~[spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE] 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) ~[servlet-api.jar:na] 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[catalina.jar:8.5.15] 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[catalina.jar:8.5.15] 
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) ~[tomcat-websocket.jar:8.5.15] 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[catalina.jar:8.5.15] 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[catalina.jar:8.5.15] 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-4.3.7.RELEASE.jar:4.3.7.RELEASE] 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[catalina.jar:8.5.15] 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[catalina.jar:8.5.15] 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-4.3.7.RELEASE.jar:4.3.7.RELEASE] 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[catalina.jar:8.5.15] 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[catalina.jar:8.5.15] 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-4.3.7.RELEASE.jar:4.3.7.RELEASE] 

有人知道我在做什麼錯嗎?

------------------------ 更新 ------------------- -----

關於這個answer的背面,我的MvcConfiguration類沒有@EnableWebMvc。我添加了它,視圖已經解決,一切開始工作。

回答

-1

春天開機後會自動添加位於內的任何以下目錄的靜態Web資源:

  • /META-INF /資源/
  • /資源/
  • /靜態/
  • /public/

你需要創建一些春天希望的目錄中,創建一個src/main/resources/index.html

問候,

相關問題