java过滤器的顺序(java过滤器指定过滤文件)

过滤器的顺序由web.xml文件中<filter-mapping>的顺序决定,从上到下现有三个过滤器<filter><filter-name>AFilter</filter-name><filter-class>com.jerry.filter.AF

大家好,又见面了,我是你们的朋友全栈君。

过滤器的顺序由 web.xml 文件中 <filter-mapping>的顺序决定,从上到下

现有三个过滤器

  <filter>
    <filter-name>AFilter</filter-name>
    <filter-class>com.jerry.filter.AFilter</filter-class>
  </filter>
  <filter>
    <filter-name>BFilter</filter-name>
    <filter-class>com.jerry.filter.BFilter</filter-class>
  </filter>
  <filter>
    <filter-name>CFilter</filter-name>
    <filter-class>com.jerry.filter.CFilter</filter-class>
  </filter>
  
  <filter-mapping>
    <filter-name>AFilter</filter-name>
    <url-pattern>/servlet/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>BFilter</filter-name>
    <url-pattern>/servlet/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>CFilter</filter-name>
    <url-pattern>/servlet/*</url-pattern>
  </filter-mapping>

逻辑如下

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
   
		// 过滤器预处理逻辑代码。。。 
		System.out.println(this.getClass().getName() + " 预处理");
		
		// 调用下一个过滤器
		chain.doFilter(request, response);
		
		// 过滤器后处理逻辑代码。。。 
		System.out.println(this.getClass().getName() + " 后处理");
	}

输出如下

com.jerry.filter.AFilter 预处理
com.jerry.filter.BFilter 预处理
com.jerry.filter.CFilter 预处理
调用:service
调用:doGet
com.jerry.filter.CFilter 后处理
com.jerry.filter.BFilter 后处理
com.jerry.filter.AFilter 后处理

参考资料

web.xml 并不是必须的,现在使用SpringBoot也就再没配置过它了
Spring MVC 学习笔记 7《拦截器(Interceptor)》
Servlet、Filter、Listener 注册方式演变

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/128713.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 图像形态学操作—腐蚀扩展深度

    图像形态学操作—腐蚀扩展深度

    2022年1月14日
    50
  • 原型模式的应用场景_原型化开发方法

    原型模式的应用场景_原型化开发方法ProtoType 原型模式动机模型定义实例结构要点总结笔记动机在软件系统中,经常面临着”某些结构复杂的对象“的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口如何应对这种变化?如何向”客户程序“(使用这些对象的程序)”隔离出“这些易变对象,从而使得”依赖这些易变对象的客户程序“不随着需求变化而变化?模型定义使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新对象。实例和工厂模型用的同一个实例工厂模式//工厂class SplitterF

    2022年8月9日
    5
  • 计组_浮点数表示/补码运算:定点数加减法/浮点数加减法(步骤+实例)「建议收藏」

    计组_浮点数表示/补码运算:定点数加减法/浮点数加减法(步骤+实例)「建议收藏」文章目录步骤问题实例对阶操作(基于补码)尾数求和(基于对阶后)规格化数相关知识左归操作右归操作回到本例:步骤设两个浮点数x=Sx⋅rjxy=Sy⋅rjy\begin{array}{l}x=S_{x}\cdotr^{j_{x}}\\y=S_{y}\cdotr^{j_{y}}\end{array}x=Sx​⋅rjx​y=Sy​⋅rjy​​(1)对阶,使两数的小数点位置对齐。(2)尾数求和,将对阶后的两尾数按定点加减运算规则求和(差)(3)规格化,为增加有效数字的位数,提高运

    2025年12月8日
    5
  • PHP 获得当前页面所有变量常量的值

    PHP 获得当前页面所有变量常量的值

    2021年9月25日
    52
  • 软件测试基础知识 – 集成测试和系统测试的区别,以及它们的应用场景

    软件测试基础知识 – 集成测试和系统测试的区别,以及它们的应用场景分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.netDefinitionConverttheinterfaceofaclassintoanotherinterfaceclientsexpect.Adapterletsclassesworktogetherthat…

    2022年6月29日
    37
  • 运维常识:什么是关系数据库?

    运维常识:什么是关系数据库?关系数据库是最流行和最常用的数字数据库 在本文中 我们将讨论关系数据库 它的工作原理 示例 关系数据库和非关系数据库之间的差异等等 什么是关系数据库 一个关系数据库是基于组织彼此相关的数据点的模型数据的集合 该术语最初由 IBM 研究实验室的英国计算机科学家 EdgarFrank Ted Codd 于 1970 年引入 关系数据库将有价值的信息或数据组织成表格 这些表格可以根据彼此共有的数据链接到其他几个表格 它使用户能够使用单个查询从一个或多个相关表中的数据构建新数据集 关系数据库使用的数据结构

    2025年7月23日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号