J'essaie d'obtenir une première configuration de printemps 3 MVC en cours d'exécution.
Mon application s'exécute sur Tomcat, avec dans le contexte du serveur de "Grapevine" P>
Aux fins des tests, je 'm Essayer d'obtenir des demandes de Quand j'essaye cela, je reçois un i Doit avoir mal configuré cela quelque part, mais je ne vois pas ce que j'ai fait de mal. P> Voici tous les extraits pertinents. P> web.xml: fort> p> de mon contexte: strong> p> journal: strong> p> http: // localhost: 8080 / vigne / test code> Pour rendre le contenu de web-inf / jsp / nosuchinvitation.jsp code> p> p> p> P> 404 code> et les journaux suggèrent que mon JSP n'est pas présent: p>
5 Réponses :
Ceci est parce que le Vous devez choisir un web.xml code> est trop "large". Une valeur de / * code> signifie que le servlet est configuré pour recevoir toutes les demandes, ce qui inclut la demande du servlet au JSP. Le message d'erreur que vous voyez est de Disternersservlet code>, qui reçoit sa propre demande transférée. P>
plus spécifique http: // localhost: 8080 / vigne / xyz / test Code>, et puis cela devrait fonctionner bien. P>
Quelle est la différence entre / * et juste /? J'ai un webay de printemps configuré presque exactement de la même manière que celle de Marty, mais le mien fonctionne avec le servlet Dispatcher mappé sur /.
@Ben: / code> correspondra uniquement à l'URL racine, tandis que / * code> correspondra à toutes les URL.
Cela corrige le problème, merci. Hovewer, j'ai une question. Compte tenu d'un exemple de page, l'URL-motif / correspond à seulement exemple.com . Comment est-il possible que la demande de exemple.com/test est redirigé vers le servlet Dispatcher à ressort?
@ WOJCIECHGÓRSKI au démarrage, vos contrôleurs sont numérisés et les chemins nécessaires sont définis comme des servlets. Vous pouvez vérifier vos journaux pour O.S.S.S.M.M.A.ReQuestMappinghandlermappage code> et voir les chemins définis.
Selimober, je sais que ça marche. J'étais juste curieux pourquoi i> Ça fonctionne (le modèle URL devrait s'appliquer uniquement à l'URL racine, non aux "sous-pages")
@ Wojciechgórski C'est ce que je crois comprendre que, avec / code> uniquement les URL mappées sont transmises au servlet Dispatcher, ce qui pourrait être par exemple: / foo / bar / baz code>. D'autre part avec / * code> Chaque demande va à Dispatcher, elle sert à quoi elle peut et n'envoie pas non plus trouvé.
Solution 2 Strong>: Si vous souhaitez conserver votre servlet mappé à / * code>, ajoutez les éléments suivants à votre fichier Spring.xml: P> <servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/WEB-INF/jsp/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
</servlet>
Il suffit de remplacer / * code> sur / code> comme votre URL-motif code>. Cela fonctionnera ... p>
Un peu expliquant pourquoi cela fonctionne serait également apprécié.
méfiez-vous: cela pourrait être un message d'erreur trompeur. c'est seulement arrivé a moi.
même pensé que le message d'erreur contient de manière inattendue / contextname / ... Au début du chemin, il pourrait toujours s'agir d'une mauvaise gestion du préfixe internalResourceViewresolver: p> Ou le chemin de fichier lui-même. P> Maintenant que j'ai réparé mon orthographe, cela fonctionne bien. Je ne sais pas pourquoi le contexte montre dans le message d'erreur et je me suis vraiment amené à ignorer ma typo stupide et à tenter d'essayer les merveilleuses autres contributions à cette question. Ne laissez pas cela vous arriver! P> BTW, j'utilise le printemps 4.0.0 Libération. P> P>
Pour moi, j'ai résolu le problème en utilisant des modèles .jsp et non seulement .html. P>
Êtes-vous sûr qu'il n'y a pas d'erreur d'orthographe?
Dupliqué possible de Pas de cartographie trouvée Pour la demande HTTP avec URI [/web-inf/pages/apiform.jsp]