2016-04-25 8 views
5

Sono nuovo all'inizio di Spring (e servlet 3.0). Sto cercando di creare un progetto mvc di primavera con JSP come vista. Quando restituisco una vista dal mio controller, non viene risolto come JstlView.Come configurare l'app mvc boot di partenza per JSP?

Ecco quello che ho fatto:

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

creati entrambi i file .jsp in src\main\webapp\WEB-INF\jsp.

Dopo googling ho scoperto che ho bisogno di specificare questo in application.properties Così ho aggiunto segue in oggetti di scena:


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


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

Anche dopo questo non sta funzionando. Ecco la traccia.

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 

Come si può vedere nella traccia, questo sta cercando di risolvere /jsp/welcome.jsp come InternalResourceView invece di JstlView. Alla fine fallisce come 404.

Quali altri passaggi devo seguire? Esiste un tutorial per SpringBoot-mvc con jsp?

P.S. Posso creare l'app mvc di primavera con jsp usando web.xml (usando JstlView nel mio file di configurazione). Ma non riesco a trovare alcun tutorial per Spring boot mvc con jsp.

+0

Anche se non ho familiarità con la Primavera di avvio, (io preferisco lo sviluppo primavera il modo "legacy"), uno sguardo in [questo SO post] (http://stackoverflow.com/questions/29953245/configure-viewresolver-with-spring-boot-and-annotations-gives-no-mapping-found-f). Potrebbe aiutare. Abbiamo bisogno di un bean 'InternalResourceViewResolver' per le viste da risolvere. È necessario un equivalente di quello in un'applicazione Spring Boot. –

+2

Spring Boot ha una [applicazione di esempio JSP] (https://github.com/spring-projects/spring-boot/tree/v1.3.3.RELEASE/spring-boot-samples/spring-boot-sample-web-jsp) che può essere utile qui –

+0

Prova ad usare il builder ufficiale dell'applicazione http://start.spring.io per configurare la tua applicazione (per impostazione predefinita usa il motore di template JSP). –

risposta

3

Supponendo che è incorporato Tomcat,

È necessario avere seguenti nella vostra 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> 

integrato pacchetto di base Tomcat non ha il supporto di rendering JSP.

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

anche necessari e le pagine devono essere a/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

Grazie. mi ha aiutato – vvator

+0

Non funzionava per me, spring boot 1.4.3-RELEASE, fino a quando ho aggiunto viewResolver quindi funziona –

2

In primo luogo si richiede di aggiungere una corretta dipendenza Maven, come di seguito per rendere JSP in applicazione di avvio a molla.

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

Poi definire la classe di visualizzazione come JstlView come di seguito:

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

Trova un esempio di lavoro qui spring boot mvc jsp integration example

1

Non è necessario il ViewResolver. pom.xml ha bisogno delle dipendenze menzionate come detto da Yura e posiziona i file jsp in src \ main \ webapp \ WEB-INF \ jsp.

-1
  1. Crea webapp/WEB-INF/viste {nome dell'ultima cartella come U Like} sotto src/main
  2. aggiungere vaso JSTL

  3. aggiuntivo seguendo due linee in application.properties

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

    Esegui come Primavera di avvio App ..U sono pronti per partire!

    Per ulteriori U può consultare il mio progetto su GitHub: https://github.com/SudipBiswasRana/Using-JSP-As-View-For-Spring-Project

Problemi correlati