filter的前身今生

  • 0、fiter是什么
  • 1、filter有啥用
  • 2、filter在哪里
  • 3、filter做了啥
  • 4、filter代码实现
    • 4.1 依赖包
    • 4.2 代码
      • 4.2.1 MyFirstfilter.java
      • 4.2.2 MySecondFilter.java
    • 4.3 配置web.xml
  • 5、运行结果
    • 5.1 服务启动,filter被加载
    • 5.2 有请求来,filter被触发
    • 5.3 服务关停,filter被销毁
  • 6、篇后语

0、fiter是什么

说实话,百度百科的解释干脆直接,直接引用一下。

filter, 它使用户可以改变一个request和修改一个response.
Filter不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在response离开servlet时处理response.换种说法,filter其实是一个“servlet
chaining“(servlet 链).

1、filter有啥用

 (1)公共代码的提取(2)可以处理request和response(3)进行权限控制(4)处理网站中文乱码问题(5)实现自动登录(6)过滤敏感词汇(7)压缩网页

2、filter在哪里

通过这张图,我们可以看到,我们即将要学习的filter处在什么位置,清晰明了。

3、filter做了啥


通过上图,我们看到,filter做了两类事:

1、在请求request到达servlet之前,对request进行预处理;
2、在servlet发出响应信息response后,对响应信息response进行处理,然后返回给请求发起人。

4、filter代码实现

4.1 依赖包

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><version>2.3.1.RELEASE</version>
</dependency>

4.2 代码

4.2.1 MyFirstfilter.java

/***@Description: 第一个过滤器Filter*@MethodName: MyFilter*@Author: world*@Date: 10/1/22 12:19 PM*@Version: 1.0**/@Component
public class MyFirstFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("我是第一个servlet init,我是在服务启动时候被加载 1次 !");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("这是第一个filter----servlet处理请求之前!");Object header = servletRequest.getAttribute("Header");filterChain.doFilter(servletRequest, servletResponse);System.out.println("这是第一个filter----servlet处理请求之后!");}@Overridepublic void destroy() {System.out.println("我是第一个filter----destroy,我只在服务停止时被触发!");}
}

4.2.2 MySecondFilter.java

/***@Description: 第二个过滤器filter*@MethodName: MySecondFilter*@Author: world*@Date: 10/1/22 3:34 PM*@Version: 1.0**/@Component
public class MySecondFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("我是第二个filter----servlet init,我是在服务启动时候被加载 1次 !");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("这是第二个filter----servlet处理请求之前!");filterChain.doFilter(servletRequest, servletResponse);System.out.println("这是第二个filter----servlet处理请求之后!");}@Overridepublic void destroy() {System.out.println("我是第二个filter----destroy,我只在服务停止时被触发!");}
}

4.3 配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><filter><filter-name>MyFirstFilter</filter-name><filter-class>com.world.filter.filter.MyFirstFilter</filter-class></filter><filter><filter-name>MySecondFilter</filter-name><filter-class>com.world.filter.filter.MySecondFilter</filter-class></filter><filter-mapping><filter-name>MyFirstFilter</filter-name><url-pattern>/*</url-pattern><!-- /*是对所有的文件进行拦截 --></filter-mapping><filter-mapping><filter-name>MySecondFilter</filter-name><url-pattern>/*</url-pattern><!-- /*是对所有的文件进行拦截 --></filter-mapping></web-app>

5、运行结果

5.1 服务启动,filter被加载

5.2 有请求来,filter被触发

5.3 服务关停,filter被销毁

6、篇后语

后面会基于此把filter能够实现的各类功能,逐一编写实现,与君共勉。

文章本天成|跟我一起来一场简洁易懂的servlet的过滤器Filter的学习吧相关推荐

  1. 文章本天成 妙手偶得之 两句三年得 一吟双泪流

    一个系统,系统论,一个生态系统,在一定程度上从你身边来看,确实改变你自己的生活就改变了世界.从一个Android系统来看,确实在改变着人类的生活,手机进入了智能的时代,需要将所有的都集中到这个个人终端 ...

  2. 文章本天成妙手偶得之

    说明材料 2020年疫情期间,我还在某软公司待着,其实本年准备好离职了,但是由于武汉新型冠状病毒流行,举国都在防疫,所以在家隔离了.但是在家办公,没有太放在心上,生活懒散而又无规律,领导为了督促我们做 ...

  3. CSDN博客使用指南:文章管理技巧、使用活动定制皮肤、自定义CSDN栏目模块技巧;新建一门学习课程;如何生成永久群二维码?

    文章目录 引言 I.使用入门 1.1. CSDN申请相关 1.2 .文章管理技巧 1.3 博客设置 1.4.md编辑器推荐Typora 1.5.选题建议 II. 操作技巧(冷知识) 2.1 查看文章的 ...

  4. 唱吧android逆向加密算法笔记 此文章已做脱敏处理不会对原厂家app安全构成威胁,仅供学习

    rsa公钥1:MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhALbr6abInZtlggBiXmgwl5fEUe3KHY9sZj4bomDh+Jn9IC2CXnLaHYxBzmyoa ...

  5. 服务端第四次课程:MVC,控制器,视图渲染

    MVC,控制器,视图渲染 文章目录 MVC,控制器,视图渲染 1:什么是servlet 2:filter controller 3:spring MVC 的请求 1:作业 4:spittle 5:sp ...

  6. 是时候学习生成对抗网络了,李宏毅老师GAN视频教程下载

    点击我爱计算机视觉标星,更快获取CVML新技术 要说过去的一年哪一项技术最火,非生成对抗网络(GAN)莫属! 52CV曾经报道过: ACM MM2018 Best Paper 被华人包揽 两篇最佳论文 ...

  7. 解决springmvc在multipart/form-data方式提交请求在过滤器Filter中获取不到参数的问题

    解决springmvc在multipart/form-data方式提交请求在过滤器Filter中获取不到参数的问题 参考文章: (1)解决springmvc在multipart/form-data方式 ...

  8. 说说Java生态圈的那些事儿

    文章目录: 1.生态圈概述. 2.说说Java,高级Java,Java生态圈的衍生 3. 说说servlet.servlet容器.比较tomcat.jetty.tomcat.jboss: 1. 哪个项 ...

  9. python属于计算机几级_Python语言不仅纳入计算机等级考试科目,还纳入高考科目...

    全国计算机等级考试纳入Python 教育部考试中心于2017年10月11日发布了"关于全国计算机等级考试(NCRE)体系调整"的通知,决定对NCRE考试体系进行调整,自2018年3 ...

最新文章

  1. 定期删除各子文件下数据
  2. java逆数组如何print_Java 逆数组
  3. python二维数组去重复_php二维数组去重,array_unique出除重复数据
  4. 计算机网络实用期末试题和答案,计算机网络期末考试试题及答案(1)
  5. html5中api有什么,HTML5中的API概览
  6. 重磅福利!程序员面试——算法工程师面试大全第六部分
  7. linux vim 编译python,Ubuntu下编译Vim8(+python)无数次编译失败
  8. jdk安装目录 usr java_Mac查看已安装的jdk版本和jdk安装目录
  9. php蝠衭厍桴埭钨,有没办法判断输入汉字的笔划数?
  10. [BZOJ1488][HNOI2009]图的同构(dfs+置换群+数论+组合数学)
  11. 《Hibernate上课笔记》------class6------Hibernate实现一对多关联映射
  12. Java的泛型---(英雄联盟集合嵌套案例)
  13. 【论文排版术】学习笔记1
  14. android相机预览拍照功能实现
  15. kubernetes节点减容与扩容
  16. 第一章 新科技革命引发产业革命
  17. 查看局域网其他电脑的计算机名和IP
  18. 【大数据开发】SparkCore——利用广播变量优化ip地址统计、Spark2.x自定义累加器
  19. qt 字体不随dpi_qt 5.5文档翻译系列-High DPI Displays
  20. spring框架中用到了哪些设计模式

热门文章

  1. 西邮Linux兴趣小组纳新笔试试题
  2. 单点登录(sso)和cas系统的原理
  3. YOLOv3论文全文完整理解翻译
  4. iOS 底层探索篇 —— KVC 底层原理
  5. 前端开发:组件之间的传值(父传子、子传父、兄弟组件之间传值)的使用
  6. 【小程序】爆肝 3 天总结的微信小程序优化指南(收藏夹吃灰吧!)
  7. 中华英才网或被全盘收购:三年对赌将近大限
  8. echarts自定义柱状图柱体形状
  9. 使用Matlab对频繁2项集和频繁3项集的求取
  10. 2.一脚踹进ViT——Attention机制原理及实现