方式一:web.xml中的filter-mapping位置
通过web.xml中控制filter-mapping的位置来控制的,放在上面的会比放在下面的先执行,如下“用户登录检查过滤器”会比“接口日志过滤器”先执行
<!-- 用户登录检测过滤器 -->
<filter>
<filter-name>UserLoginFilter</filter-name>
<filter-class>net.tfgzs.demo.filter.UserLoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UserLoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--接口日志过滤器-->
<filter>
<filter-name>ApiLog</filter-name>
<filter-class>net.tfgzs.demo.filter.ApiLog</filter-class>
</filter>
<filter-mapping>
<filter-name>ApiLog</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
方式二:@WebFilter
使用@WebFilter注解的时候发现注解里面没有提供可以控制执行顺序的参数
如果想要控制filer的执行顺序可以 通过filter的文件名来控制。
比如:
aFilter.java
bFilter.java
容器的执行顺序aFilter.java -> bFilter.java
由于使用项目情况一开始,将Filter放在了不同的包下面,包名的顺序也会影响Filter执行顺序。
比如:
a/aFilter.java
a/cFilter.java
b/bFilter.java
容器的执行顺序是:a/aFilter.java -> a/cFilter.java -> b/bFilter.java。