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

    <!-- 用户登录检测过滤器 -->
    <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 的属性
属性名 类型 描述
filterName String 指定过滤器的 name 属性,等价于 <filter-name>
value String[] 该属性等价于 urlPatterns 属性。但是两者不应该同时使用。
urlPatterns String[] 指定一组过滤器的 URL 匹配模式。等价于 <url-pattern> 标签。
servletNames String[] 指定过滤器将应用于哪些 Servlet。取值是 @WebServlet 中的 name 属性的取值,或者是 web.xml 中 <servlet-name> 的取值。
dispatcherTypes DispatcherType 指定过滤器的转发模式。具体取值包括: ASYNC、ERROR、FORWARD、INCLUDE、REQUEST。
initParams WebInitParam[] 指定一组过滤器初始化参数,等价于 <init-param> 标签。
asyncSupported boolean 声明过滤器是否支持异步操作模式,等价于 <async-supported> 标签。
description String 该过滤器的描述信息,等价于 <description> 标签。
displayName String 该过滤器的显示名,通常配合工具使用,等价于 <display-name> 标签。

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

比如:

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

Filter0_UserLogin.java

Filter1_ApiLog.java

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

本文出自 “腾飞工作室” 博客,请务必保留此出处  http://www.cnblogs.com/tfgzs/p/4571137.html

最新文章

  1. new/delete重载
  2. WebGIS开源方案中空间数据的入库、编辑、发布的操作流程
  3. 类-string/Manth/Random/DateTime-及练习
  4. HDU 3491 最小点权割集
  5. 简易的JQuery设置Cookie
  6. python zip文件密码爆破
  7. webview与JavaScript之间的交互
  8. LVM-COW写实备份
  9. react-踩坑记录——Link带参数跳转后this.props为空对象
  10. PID控制器开发笔记之四:梯形积分PID控制器的实现
  11. python基础——函数
  12. LATCH_EX
  13. (转)memcached的运行状态监控
  14. SQL Server 函数 LEN 与 DATALENGTH的区别
  15. 虚拟机CentOS的NAT模式联网和SecureCRT远程登录管理工具
  16. 微软MVP社区秋日巡讲 —— 北京Windows Phone应用开发训练营
  17. django(2)基本指令
  18. Android中自定义弹出PopupWindow后返回按键失效的问题解决
  19. EasyUI tree 优化--点击文字折叠展开效果
  20. iTunes Connect App Video

热门文章

  1. java基础知识回顾之final
  2. CodeIgniter API
  3. CodeIgniter 错误: In order to use the Session class you are required to set an encryption key
  4. ESASP 业界第一个最为完善的 ASP MVC框架(待续)
  5. 机器学习之逻辑回归(Logistic Regression)
  6. linux ps命令详解
  7. 2016网易实习生编程题:数组中两个数的和等于sum
  8. hdu 3032 Nim or not Nim?(搜索打SG表)
  9. 【转】terminal 快捷键
  10. JavaWeb项目开发案例精粹-第6章报价管理系统-001需求分析及设计