java配置过滤器有两种方式:
第一种:web.xml中以filter-mapping标签方式配置,分为两种,一种是url-pattern,另一种是servlet-name。
url-pattern方式如下:
<filter-mapping><filter-name>Filter1</filter-name><url-pattern>/test</url-pattern></filter-mapping><filter-mapping><filter-name>Filter2</filter-name><url-pattern>/test</url-pattern></filter-mapping>
url-pattern方式如下:
<filter-mapping><filter-name>Filter1</filter-name><servlet-name>/test</servlet-name></filter-mapping><filter-mapping><filter-name>Filter2</filter-name><servlet-name>/test</servlet-name></filter-mapping>
第二种:使用@WebFilter注解方式
@WebFilter(filterName = "Filter1", urlPatterns = "/test")public class Filter1 implements Filter {...}@WebFilter(filterName = "Filter2", urlPatterns = "/test")public class Filter2 implements Filter {...}
当多个过滤器过滤相同url时的优先级:
web.xml方式>@WebFilter注解方式
其中,web.xml方式的过滤器执行顺序:
1.先执行带有url-pattern标签的filter,再执行带有servlet-name标签的filter。
2.如果同为url-pattern或servlet-name,则会按照在web.xml中的声明顺序执行。
WebFilter注解方式执行顺序:
通过控制filter的文件名来控制执行顺序,比如Filter1,Filter2,因为Filter1在Filter2之前,所以就能先于Filter2执行。
注意:以上优先级的前提都是在过滤相同url时。