2011-05-25 4 views
1

J'ai un déploiement Tomcat avec une seule webapp vivant à web/WEB-INF. Voici la façon dont j'instancier le conteneur de printemps:Le printemps ne peut pas résoudre la vue JSP

<servlet> 
    <servlet-name>report</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      /WEB-INF/report-servlet.xml 
     </param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>report</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

Le fichier se trouve report-servlet.xml, chargé et analysé correctement.

Cependant, mes vues JSP ne sont pas résolues. Voici mon résolveur:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/views/"/> 
    <property name="suffix" value=".jsp"/> 
</bean> 

Je l'URL racine mis en correspondance/accueil:

<!-- Forwards requests to the "/" resource to the "welcome" view --> 
<mvc:view-controller path="/" view-name="welcome"/> 

Et ce point de vue se trouve et déléguée au InternalResourceViewResolver quand je demande http://localhost/, mais le .jsp n'est pas trouvés:

[org.springframework.web.servlet.view.InternalResourceView] (http-11080-1) Rendering view with name 'welcome' with model null and static attributes {} 
[org.springframework.web.servlet.view.InternalResourceView] (http-11080-1) Forwarding to resource [/WEB-INF/views/welcome.jsp] in InternalResourceView 'welcome' 
[org.springframework.web.servlet.DispatcherServlet] (http-11080-1) Bound request context to thread: [email protected] 
[org.springframework.web.servlet.DispatcherServlet] (http-11080-1) DispatcherServlet with name 'report' processing GET request for [//WEB-INF/views/welcome.jsp] 
[org.springframework.web.servlet.DispatcherServlet] (http-11080-1) Testing handler map [org.springframe[email protected]4ab83be0] in DispatcherServlet with name 'report' 
[org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping] (http-11080-1) No handler mapping found for [/WEB-INF/views/welcome.jsp] 
[org.springframework.web.servlet.DispatcherServlet] (http-11080-1) Testing handler map [[email protected]2c1533c8] in DispatcherServlet with name 'report' 
[org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] (http-11080-1) No handler mapping found for [/WEB-INF/views/welcome.jsp] 
[org.springframework.web.servlet.DispatcherServlet] (http-11080-1) Testing handler map [[email protected]4268cc6] in DispatcherServlet with name 'report' 
[org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] (http-11080-1) No handler mapping found for [/WEB-INF/views/welcome.jsp] 

Et le contenu du WEB-INF/vues:

# ls -l WEB-INF/views/welcome.jsp 
-rw-r--r-- 1 user group 1.2K 2011-05-24 15:43 WEB-INF/views/welcome.jsp 

Pourquoi le conteneur n'a-t-il aucun problème pour trouver le fichier Spring xml contenant mes beans, mais ne pas être capable de résoudre le répertoire contenant mes JSPs?

+0

Quelle est l'URL que vous utilisez? http: // localhost: 8080/bienvenue? Je pense que vous devez vous faire url-pattern/*, pas /. – Kevin

+0

@Kevin: J'ai mis à jour mon message pour inclure plus d'informations. L'URL racine est trouvée et mappée sur le résolveur, mais ce résolveur ne charge pas mon JSP. – purecharger

Répondre

3

Le mappage d'URL suivant redirigera toutes les demandes vers le servlet report. Mais vous ne devez pas avoir configuré de gestionnaires pour les fichiers JSP dans vos configurations de servlet Dispatcher.

<servlet-mapping> 
    <servlet-name>report</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

Pour obtenir ce que vous voulez, vous devez spécifier le motif qui devrait être URl redirigé vers le servlet report. Cela doit exclure les fichiers JSp.

Je vais vous suggérer de spécifier quelque chose comme un préfixe à vos URL. Seules ces URL seront gérées par Spring Servlet Servlet. Comme indiqué dans l'exemple ci-dessous.

<servlet-mapping> 
    <servlet-name>report</servlet-name> 
    <url-pattern>/report/*</url-pattern> 
</servlet-mapping> 

Maintenant, tous les URlL avec /report/<something> seront traitées au printemps webmvc. Cette servlet (report) sera appliquée aux URL se terminant par * .jsp.

0

J'ai décidé de répondre à ma question plutôt que d'éditer l'OP ou de commenter une réponse sans rapport.

Il s'avère que Tomcat a été mal configuré. Je n'avais pas la servlet JSP configurée (ou le DefaultServlet d'ailleurs), donc les vues JSP n'étaient pas rendues.

Questions connexes