Servlet 3.0 之@WebFilter怎么控制多个filter的执行顺序

2025-05-05 04:25:22
推荐回答(1个)
回答1:

之前我们控制多个filter的执行顺序是通过web.xml中控制filter的位置来控制的,放在上面的会比放在下面的先执行,如下“用户登录检查过滤器”会比“接口日志过滤器”先执行

  
  
   UserLoginFilter
     net.tfgzs.demo.filter.UserLoginFilter
  

  
     UserLoginFilter
     /*
  

  

  ApiLog
  net.tfgzs.demo.filter.ApiLog


  ApiLog
  /*

但是当我们使用@WebFilter注解的时候发现注解里面没有提供可以控制执行顺序的参数

通过实践发现如果想要控制filer的执行顺序可以通过控制filter的文件名来控制  

比如:

UserLoginFilter.java 和 ApiLog.java 这两个文件里面分别是“用户登录检查过滤器”和“接口日志过滤器”,因为这两个文件的    
     首字母A排U之前
   
,导致每次执行的时候都是先执行“接口日志过滤器”再执行“用户登录检查过滤器”,所以我们现在修改两个文件的名称分别为  

Filter0_UserLogin.java

Filter1_ApiLog.java

这样就能先执行“用户登录检查过滤器”再执行“接口日志过滤器”