您确实不能使用
@WebFilter注释定义过滤器执行顺序。但是,为了最大程度地减少
web.xml使用量,仅用a注释所有过滤器就足够了,
filterName这样您就不需要
<filter>定义,而只需
<filter-mapping>按所需顺序定义即可。
例如,
@WebFilter(filterName="filter1")public class Filter1 implements Filter {}@WebFilter(filterName="filter2")public class Filter2 implements Filter {}与web.xml只是这样:
<filter-mapping> <filter-name>filter1</filter-name> <url-pattern>/url1/*</url-pattern></filter-mapping><filter-mapping> <filter-name>filter2</filter-name> <url-pattern>/url2/*</url-pattern></filter-mapping>
如果您希望将网址格式保留在中@WebFilter,则可以这样做,
@WebFilter(filterName="filter1", urlPatterns="/url1/*")public class Filter1 implements Filter {}@WebFilter(filterName="filter2", urlPatterns="/url2/*")public class Filter2 implements Filter {}但您仍应保留<url-pattern>inweb.xml,因为XSD要求它是必需的,尽管它可以为空:
<filter-mapping> <filter-name>filter1</filter-name> <url-pattern /></filter-mapping><filter-mapping> <filter-name>filter2</filter-name> <url-pattern /></filter-mapping>
不管采用哪种方法,这一切都将在
Tomcat 7.0.28版之前失败,因为它会在不存在的
<filter-mapping>情况下窒息
<filter>。



