2017-07-14 3 views
1

Ich versuche, eine Spring Boot-Anwendung zu schreiben, um eine einzige Datei, "index.html", für meine AngularJS-Anwendung zu dienen. Ich habe die folgenden Klassen:Java Spring Boot: Servlet.service() für Servlet [DispatcherServlet] warf Ausnahme

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; 
    } 
} 

Und die folgende Verzeichnisstruktur:

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

ich dann in einen Krieg um die Anwendung gradle erstellen, bevor tomcat 8.

jedoch den Einsatz auf, jedes Mal, wenn ich versuchen, die Website besuchen, sehe ich immer Seite: enter image description here

Und der folgende Stack-Trace:

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] 

die schließlich in dreht:

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] 

Weiß jemand, was ich falsch mache?

------------------------ Aktualisieren ------------------- -----

Von der Rückseite dieses answer hatte ich @EnableWebMvc auf meiner MvcConfiguration-Klasse nicht. Ich fügte es hinzu, und die Ansicht wurde aufgelöst und alles begann zu arbeiten.

Antwort

-1

Frühlings-Boot automatisch statische Web-Ressourcen hinzugefügt, die in einem der folgenden Verzeichnisse:

  • /META-INF/resources/
  • /resources/
  • /static/
  • /public/

Sie müssen einige der Verzeichnisse erstellen, die Feder will, erstellen Sie eine src/main/resources/index.html

Grüße,

Verwandte Themen