Filter

1. 简介

Javaweb中的过滤器可以拦截所有访问web资源的请求或响应操作。

图片[1]-Filter-深吸氧

1.1 过滤器的三要素

1. 拦截

过滤器之所以能够对请求进行预处理,关键是对请求进行拦截,把请求拦截下来才能够做后续的操作。而且对于一个具体的过滤器,它必须明确它要拦截的请求,而不是所有请求都拦截。

2. 过滤

根据业务功能实际的需求,看看在把请求拦截到之后,需要做什么检查或什么操作,写对应的代码即可。

3. 放行

过滤器完成自己的任务或者是检测到当前请求符合过滤规则,那么可以将请求放行。所谓放行,就是让请求继续去访问它原本要访问的资源。

2. 代码演示

1. 创建Target01Filter,实现Filter接口

图片[2]-Filter-深吸氧

2. 通过注解启用过滤器

图片[3]-Filter-深吸氧

除了注解方式,也可以在配置文件中设置

图片[4]-Filter-深吸氧

3. 结果

图片[5]-Filter-深吸氧

3. 过滤器生命周期

和Servlet生命周期类比,Filter生命周期的关键区别是:在Web应用启动时创建对象

生命周期阶段执行时机执行次数
创建对象Web应用启动时一次
初始化创建对象后一次
拦截请求接收到匹配的请求多次
销毁Web应用卸载前一次

4. 过滤器链

4.1 概念

实际工作中,我们可能有多个过滤器,每个过滤器负责不同的功能。

  • 多个Filter的拦截范围如果存在重合部分,那么这些Filter会形成Filter链
  • 浏览器请求重合部分对应的目标资源时,会依次经过Filter链中的每一个Filter。
  • Filter链中每一个Filter执行的顺序是由web.xml中filter-mapping配置的顺序决定的。
图片[6]-Filter-深吸氧

4.2 演示

同样方式分别创建Target02Filter,Target03Filter。

图片[7]-Filter-深吸氧
图片[8]-Filter-深吸氧
© 版权声明
THE END
请撒泡尿证明你到此一游
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容