J'essaie de suivre le modèle à Applications Web des motifs de conception . Tout fonctionne une partie fine de la maillage des URL "racine".
J'aimerais mettre toutes les demandes via le "contrôleur avant" de sorte que j'ai mis p> dans le est également prise par le contrôleur, elle passe à l'action à nouveau et tout échoue. p> Je peux le faire fonctionner en ne faisant pas de la racine de l'URL, par exemple P> web.xml code>. Travelage avec NetBeans montre la demande à venir, et l'action fonctionne correctement, mais la ligne p>
<servlet-mapping>
<servlet-name>ControllerServlet</servlet-name>
<url-pattern>/pages/*</url-pattern>
</servlet-mapping>
4 Réponses :
Le motif / * URL correspond à tous les servlets, JSP et le contenu statique de votre application.
Whae dont vous auriez besoin est de définir un motif * .jsp pour permettre à Tomcat d'utiliser le servlet JSP par défaut: P>
<servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> </servlet-mapping>
Le modèle Gardez votre servlet de contrôleur sur un motif d'URL plus spécifique comme une ressource JSP transférée Par défaut ne correspond pas à ce filtre, il sera donc correctement ramassé par le propre / * code> URL motif couvre tout em>, également les fichiers JSP transférés et les ressources statiques telles que CSS / JS / images. Vous ne voulez pas avoir cela sur un servlet de contrôleur frontal.
/ pages / * code>. Vous pouvez obtenir l'exigence fonctionnelle de se débarrasser de "/ pages" dans l'URL en regroupant les ressources statiques dans un dossier commun comme
/ ressources code> et créant un fichier
code> qui est mappé sur
/ * code> et effectue le travail suivant dans le
dofilter () code> méthode: p>
jspservlet code>. p> p>
Merci pour les réponses, il a l'air complexe de sorte qu'il va me faire un moment pour se rendre à des filtres, pour l'instant je vais juste laisser tout dans / pages /
Vous pouvez faire correspondre des demandes d'extension avec path.Match ("^. * \\ / [^ \\.] * $") Et transmettre cela à votre contrôleur avant.
@ user2418306: Supprimer le préfixe du chemin de contexte de l'URI.
Pourquoi avons-nous besoin de cartographier chaque URL. Si vous devez mapper toutes les URL, vous pourriez avoir besoin sauter URL dans le filtre.
<filter-mapping> <filter-name>sessionFilter</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>
Merci pour les réponses, il a l'air complexe de sorte qu'il va me faire un moment pour se rendre à des filtres, pour l'instant je vais juste laisser tout dans / pages /
Vous pouvez étendre la valeur par défaut de votre serveur Web.Le servlet étendu sera votre contrôleur avant. Dans la méthode Doket ou Dopost transmettez vos pages statiques à la super classe. Defaultservlet est le servlet mappé sur URL "/" par défaut. Je l'ai utilisé avec Jetty Server, mais il peut également être mis en œuvre à Tomcat. } p> dans les échantillons de code ci-dessus J'ai transféré toutes les demandes commençant par / static / au servlet par défaut à traiter. De cette façon, vous pouvez mapper le niveau FrontController sur "/" niveau " p> p> p> p>
Est-ce que cela lie votre solution à un conteneur spécifique? En d'autres termes, une fois que j'écris ce code dans ma demande, je suis alors coincé avec Tomcat ou Jetée ou quoi que ce soit à partir de là, jusqu'à ce que je doive plus tard revenir et changer ce code?