Comment un filtre peut-il être mappé à la racine d'une URL? J'utilise Tomcat 7.0.2 et déploie une application comme ROOT.war. La page d'accueil est sign_in.xhtml. Je voudrais lancer un filtre chaque fois que le client envoie une demande pour la racine du site (c'est-à-dire le nom de domaine uniquement), ou lorsque le client demande une signature dans le fichier .xhtml. Voici ce que j'ai jusqu'à présent:Mappage d'URL de filtre de servlet
<filter>
<filter-name>My filter</filter-name>
<filter-class>com.myApp.myFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>My filter</filter-name>
<url-pattern>/sign_in.xhtml</url-pattern>
</filter-mapping>
Les demandes de sign_in.xhtml directement invoquer avec succès le filtre, mais je ne suis pas sûr de savoir comment obtenir les demandes de la racine d'invoquer le filtre. Selon la spécification Servlet (version 3,0)
<url-pattern>/</url-pattern>
cartes au servlet par défaut, et une carte de chaîne vide à la racine. Voici la section pertinente de la spécification:
« La chaîne vide (» ") est un modèle d'URL spéciale qui mappe exactement à la racine de contexte de l'application , à savoir, les demandes de la forme http://host:port//Dans ce cas, les informations de chemin. est '/' et le chemin de servlet et le chemin de contexte sont chaîne vide (""). " Toutefois, les deux modèles d'URL suivants entraînent l'émission d'une exception par Tomcat.
<url-pattern></url-pattern>
<url-pattern>""</url-pattern>
J'apprécierais vraiment que quelqu'un puisse nous éclairer là-dessus. Je vous remercie.
Andrew
Merci d'avoir examiné ce BalusC. J'ai l'intention de forcer la redirection si l'utilisateur doit changer son mot de passe. Un filtre semble être la solution appropriée. Je suppose que je vais devoir attendre pour 7.0.3 ou trouver quelque chose de différent. Des idées? –
Un filtre écoute sur '/ *' qui n'agit que si l'URI de la requête est vide. – BalusC
Je vais essayer et ensuite mettre à jour l'url-patten une fois que le bug de Tomcat est corrigé. –