Comment définir l'ordre d'exécution du filtre de servlet à l'aide d'annotations dans WAR
167
Si nous définissons des filtres de servlet spécifiques aux applications Web dans WAR web.xml, alors l'ordre d'exécution des filtres sera le même que l'ordre dans lequel ils sont définis dans le web.xml.
Mais, si nous définissons ces filtres à l'aide d' @WebFilterannotations, quel est l'ordre d'exécution des filtres et comment pouvons-nous déterminer l'ordre d'exécution?
Vous ne pouvez en effet pas définir l'ordre d'exécution du filtre à l'aide de l' @WebFilterannotation. Cependant, pour minimiser l' web.xmlutilisation, il suffit d'annoter tous les filtres avec juste un filterNamepour que vous n'ayez pas besoin de la <filter>définition, mais juste d'une <filter-mapping>définition dans l'ordre souhaité.
ils auraient pu introduire un orderattribut d' @WebFilterMappingannotation imbriquée . Je me demande si le n'a pas fait pour la simplicité
Bozho
12
@Bozho: Ce ne serait pas assez précis. Que faire si votre application Web est livrée avec des bibliothèques tierces qui incluent un filtre? Il est difficile de dire son ordre à l'avance.
BalusC
1
@BalusC: Une erreur s'est produite dans votre exemple: le modèle d'url est fermé avec un nom de filtre.
AndrewBourgeois
3
@AndrewBourgeois: Corrigé. C'était une erreur de copypaste. Dommage que l'éditeur Markdown n'ait pas de validation XML intégrée comme dans Eclipse;)
BalusC
6
L'utilisation <url-pattern />ne fonctionne pas sur JBoss EAP 6.1 - elle remplace la @WebFiltervaleur et empêche le filtre de s'exécuter du tout.
seanf
12
La spécification Servlet 3.0 ne semble pas fournir d'indication sur la façon dont un conteneur doit ordonner les filtres qui ont été déclarés via des annotations. Cependant, il est clair comment commander les filtres via leur déclaration dans le fichier web.xml.
Fais attention. Utilisez les filtres d'ordre des fichiers web.xml qui ont des interdépendances. Essayez de rendre vos filtres indépendants de l'ordre pour minimiser la nécessité d'utiliser un fichier web.xml.
J'ai beaucoup de filtres Servlet dans mon projet, parmi eux, seul un filtre particulier doit être appelé en premier et l'ordre des autres filtres n'est pas un problème. Dois-je souiller tous les filtres dans web.xml? Ou y a-t-il des raccourcis?
order
attribut d'@WebFilterMapping
annotation imbriquée . Je me demande si le n'a pas fait pour la simplicité<url-pattern />
ne fonctionne pas sur JBoss EAP 6.1 - elle remplace la@WebFilter
valeur et empêche le filtre de s'exécuter du tout.La spécification Servlet 3.0 ne semble pas fournir d'indication sur la façon dont un conteneur doit ordonner les filtres qui ont été déclarés via des annotations. Cependant, il est clair comment commander les filtres via leur déclaration dans le fichier web.xml.
Fais attention. Utilisez les filtres d'ordre des fichiers web.xml qui ont des interdépendances. Essayez de rendre vos filtres indépendants de l'ordre pour minimiser la nécessité d'utiliser un fichier web.xml.
la source