簡體   English   中英

Java Spring Boot:Servlet [dispatcherServlet]的Servlet.service()拋出異常

[英]Java Spring Boot: Servlet.service() for servlet [dispatcherServlet] threw exception

我正在嘗試編寫一個Spring Boot應用程序來為AngularJS應用程序提供一個文件“ index.html”。 我有以下課程:

應用程序

@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

然后,在將其部署到tomcat 8上之前,我讓gradle創建了應用程序。

但是,每次嘗試訪問該網站時,我總是會看到此頁面: 在此處輸入圖片說明

和以下堆棧跟蹤:

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]

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

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

關閉這個后面的答案 ,我沒有@EnableWebMvc我MvcConfiguration類。 我添加了它,視圖已解決,一切開始工作。

Spring Boot將自動添加位於以下任何目錄中的靜態Web資源:

  • / META-INF /資源/
  • /資源/
  • /靜態的/
  • /上市/

您需要創建一些spring需要的目錄,創建一個src/main/resources/index.html

問候,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM