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>
servlet-name方式如下:
<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时。