2016-04-25 13 views
5

Ich bin neu in Spring Boot (und Servlet 3.0). Ich versuche, Spring-Mvc-Projekt mit JSP als Ansicht zu erstellen. Wenn ich eine Ansicht von meinem Controller zurückgebe, wird sie nicht als JstlView aufgelöst.Wie konfiguriert man die Spring Boot MVC App für JSP?

Hier ist, was ich getan habe:

@SpringBootApplication 
public class MyApp extends SpringBootServletInitializer { 

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

} 

@Controller 
public class MainController { 

    @RequestMapping(value="/main" , method = RequestMethod.GET ) 
    public String main(){ 
     return "main"; 
    } 

    @RequestMapping(value="/" , method = RequestMethod.GET ) 
    public String welcome(){ 
     return "welcome"; 
    } 
} 

Erstellt beide .jsp Dateien in src\main\webapp\WEB-INF\jsp.

Nach Googeln fand ich, dass ich das in application.properties angeben muß also ich folgende in Requisiten hinzugefügt:


spring.mvc.view.prefix: /WEB-INF/jsp/ 
spring.mvc.view.suffix: .jsp 


logging.level.org.springframework: TRACE 
logging.level.com: TRACE 

Auch nach dieser es nicht funktioniert. Hier ist die Spur.

2016-04-24 19:54:49.016 TRACE 7880 --- [nio-8080-exec-1] .w.s.m.m.a.ServletInvocableHandlerMethod : Invoking [MainController.welcome] method with arguments [] 
2016-04-24 19:54:49.016 TRACE 7880 --- [nio-8080-exec-1] .w.s.m.m.a.ServletInvocableHandlerMethod : Method [welcome] returned [welcome] 
2016-04-24 19:54:49.020 DEBUG 7880 --- [nio-8080-exec-1] o.s.w.s.v.ContentNegotiatingViewResolver : Requested media types are [text/html, application/xhtml+xml, image/webp, application/xml;q=0.9, */*;q=0.8] based on Accept header types and producible media types [*/*]) 
2016-04-24 19:54:49.020 DEBUG 7880 --- [nio-8080-exec-1] o.s.w.servlet.view.BeanNameViewResolver : No matching bean found for view name 'welcome' 
2016-04-24 19:54:49.022 DEBUG 7880 --- [nio-8080-exec-1] o.s.b.f.s.DefaultListableBeanFactory  : Invoking afterPropertiesSet() on bean with name 'welcome' 
2016-04-24 19:54:49.022 TRACE 7880 --- [nio-8080-exec-1] o.s.w.s.v.InternalResourceViewResolver : Cached view [welcome] 
2016-04-24 19:54:49.022 DEBUG 7880 --- [nio-8080-exec-1] o.s.w.s.v.ContentNegotiatingViewResolver : Returning [org.springframework.web.servlet.view.InternalResourceView: name 'welcome'; URL [/WEB-INF/jsp/welcome.jsp]] based on requested media type 'text/html' 
2016-04-24 19:54:49.022 DEBUG 7880 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet  : Rendering view [org.springframework.web.servlet.view.InternalResourceView: name 'welcome'; URL [/WEB-INF/jsp/welcome.jsp]] in DispatcherServlet with name 'dispatcherServlet' 
2016-04-24 19:54:49.022 TRACE 7880 --- [nio-8080-exec-1] o.s.w.servlet.view.InternalResourceView : Rendering view with name 'welcome' with model {} and static attributes {} 
2016-04-24 19:54:49.026 DEBUG 7880 --- [nio-8080-exec-1] o.s.w.servlet.view.InternalResourceView : Forwarding to resource [/WEB-INF/jsp/welcome.jsp] in InternalResourceView 'welcome' 
2 

Wie Sie in der Spur zu sehen, das versucht, so InternalResourceView zu lösen /jsp/welcome.jsp statt JstlView. Schließlich schlägt es als 404 fehl.

Welche anderen Schritte muss ich folgen? Gibt es ein Tutorial für SpringBoot-mvc mit JSP?

P.S. Ich kann Spring Mvc App mit Jsp mit web.xml (mit JstlView in meiner Konfigurationsdatei) erstellen. Aber ich kann kein Tutorial für Spring boot mvc mit jsp finden.

+0

Obwohl ich mit Frühlings-Boot nicht vertraut bin, (ich ziehe Frühling Entwicklung der „Legacy“ Art und Weise), einen Blick in [diese SO post] (http://stackoverflow.com/questions/29953245/configure-viewresolver-with-spring-boot-and-annotations-gives-no-mapping-found-f). Könnte helfen. Wir benötigen eine Bean "InternalResourceViewResolver" für die zu lösenden Ansichten. Sie benötigen ein Äquivalent zu einer Spring Boot-Anwendung. –

+2

Spring Boot hat eine [JSP-Beispielanwendung] (https://github.com/spring-projects/spring-boot/tree/v1.3.3.RELEASE/spring-boot-samples/spring-boot-sample-web-jsp) das kann hier hilfreich sein –

+0

Versuchen Sie, offizielle Anwendung Builder http://start.spring.io zu verwenden, um Ihre Anwendung zu konfigurieren (standardmäßig JSP-Vorlagen-Engine verwendet). –

Antwort

3

Unter der Annahme, es Tomcat eingebettet ist,

Sie müssen folgende haben in Ihrem pom.xml

<dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-jasper</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
    </dependency> 

Embedded Tomcat Kernpaket hat keine JSP-Rendering-Unterstützung.

10
@Bean 
public ViewResolver getViewResolver(){ 
    InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
    resolver.setPrefix("/WEB-INF/jsp/"); 
    resolver.setSuffix(".jsp"); 
    resolver.setViewClass(JstlView.class); 
    return resolver; 
} 

auch benötigt und Ihre Seiten an/webapp/WEB-INF/jsp/

+

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-tomcat</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-jasper</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
    </dependency> 
+0

Danke. es hat mir geholfen – vvator

+0

War nicht für mich, Spring Boot 1.4.3-RELEASE, bis ich den ViewResolver dann funktioniert –

2

Zuerst sollten Sie benötigen, wie unten richtige Maven Abhängigkeit hinzufügen JSP zu machen in Spring-Boot-App.

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-jasper</artifactId> 
    </dependency> 

dann die Ansichtsklasse als JstlView definieren, wie unten:

@Bean 
public InternalResourceViewResolver setupViewResolver() { 
     InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
     resolver.setPrefix ("/ui/jsp/"); 
     resolver.setSuffix (".jsp"); 
     resolver.setViewClass (JstlView.class); 
     return resolver; 
    } 

Finden Sie ein funktionierendes Beispiel hier spring boot mvc jsp integration example

1

Sie haben keine ViewResolver benötigen. pom.xml benötigt die angegebenen Abhängigkeiten wie von Yura angegeben und platziert die jsp-Dateien in src \ main \ webapp \ WEB-INF \ jsp.

-1
  1. Webapp erstellen/WEB-INF/Ansichten {Benennen Sie den letzten Ordner als U Like} unter src/main
  2. jstl jar

  3. add folgenden zwei Zeilen in application.properties

    spring.mvc.view.prefix:/WEB-INF/Ansichten/ spring.mvc.view.suffix: .jsp

    ausführendes Frühling Boot-App ..U sind gut zu gehen!

    Weitere U mein, dieses Projekt auf Github konsultieren: https://github.com/SudipBiswasRana/Using-JSP-As-View-For-Spring-Project

Verwandte Themen