En effet, vous ne pouvez pas définir l'ordre d'exécution du filtre en utilisant l'annotation @WebFilter
. Cependant, pour minimiser l'utilisation de web.xml
, il suffit d'annoter tous les filtres avec seulement un filterName
de sorte que vous n'ayez pas besoin de la définition , mais juste une définition dans l'ordre désiré.
Par exemple,
@WebFilter(filterName="filter1")
public class Filter1 implements Filter {}
@WebFilter(filterName="filter2")
public class Filter2 implements Filter {}
avec juste ceci dans web.xml
:
filter1
/url1/*
filter2
/url2/*
Si vous souhaitez conserver le motif d'URL dans @WebFilter
, vous pouvez simplement le faire ainsi,
@WebFilter(filterName="filter1", urlPatterns="/url1/*")
public class Filter1 implements Filter {}
@WebFilter(filterName="filter2", urlPatterns="/url2/*")
public class Filter2 implements Filter {}
mais vous devriez toujours conserver le dans web.xml
, car il est requis selon XSD, bien qu'il puisse être vide:
filter1
filter2
Peu importe l'approche, tout cela échouera dans Tomcat jusqu'à la version 7.0.28 car il s'étouffe en présence de sans . Voir aussi Using Tomcat, @WebFilter doesn't work with inside web.xml