JavaWeb 三大组件之 过滤器 Filter

过滤器介绍

        Filter 过滤器是 JavaWeb 三大组件之一(Servlet 程序、Listener 监听器、Filter 过 滤器)。过滤器可以拦截不正确的请求(大部分请求都有一个正确的访问流程,不可跳过,例如:一个登录页面要用户名密码正确才能登录访问,不能跳过登录页面直接访问登陆成功之后的页面),

Filter 过滤器基本原理

 

 Filter 过滤器 url-patter

1、url-pattern : Filter 的拦截路径, 即浏览器在请求什么位置的资源时,过滤器会进行拦截过 滤

 2.、精确匹配 /a.jsp 对应的 请求地址 http://ip[域名]:port/工程 路径/a.jsp 会拦截

3、目录匹配 /manage/*对应的 请求地址 http://ip[域名]:port/ 工程路径/manage/xx , 即 web 工程 manage 目录下所有资源 会拦截

4、后缀名匹配 *.jsp 后缀名可变,比如 *.action *.do 等等对应 的 请求地址 http://ip[域名]:port/工程路径/xx.jsp , 后缀名为 .jsp 请求会拦截

5、Filter 过滤器它只关心请求的地址是否匹配,不关心请求的资源是否存在

Filter 过滤器生命周期

        Web工程启动时会执行构造器和init初始化方法,过滤器实例生效。当Tomcat接收到HTTP请求,会查看请求是否匹配过滤器Filter的路径url-pattern,匹配就调用doFilter()方法。当Web工程停止或重启时,会调用destory()方法销毁Filter实例。

FilterConfig 说明

        1. FilterConfig 是 Filter 过滤器的配置类

        2. Tomcat 每次创建 Filter 的时候,也会创建一个 FilterConfig 对象,这里包含了 Filter 配 置文件的配置信息。

        3. FilterConfig 对象作用是获取 filter 过滤器的配置内容

 
FilterChain 过滤器链

        FilterChain: 在处理某些复杂业务时,一个过滤器不够,可以设计多个过滤器 共同完成过滤任务。一个过滤器执行自己的前置就会调用下一个过滤器直到调用到资源,然后返回过滤器的后置代码,返回上一个过滤器的后置代码,这样过滤器之间相连形成过滤器链(前置代码和后置代码自己配)。 过滤器的调用顺序是按照web.xml里面的配置顺序进行调用。

 

FilterChain 注意事项和细节

1. 多个 filter过滤器 和目标资源在一次 http 请求,在同一个线程中

2. 当一个请求 url 和 filter 的 url-pattern 匹配时, 才会被执行, 如果有多个匹配上,就会 顺序执行,形成一个 filter过滤链(底层可以使用一个数据结构搞定)。

3. 多个 filter 共同执行时,在同一次 http 请求, 使用同一个 request 对像

4. 多个 filter 执行顺序,和 web.xml 配置顺序保持一致.

5. chain.doFilter(req, resp)方法 将执行下一个过滤器的 doFilter 方法, 如果后面没有过滤器, 则执行目标资源。

6. 小结:执行过滤器链时, 顺序是Http请求 -> A 过滤器 dofilter() -> A 过滤器前置代码 -> A 过滤器 chain.doFilter() (调用下一个过滤器Filter)-> B 过滤器 dofilter() -> B 过滤器前置代 码 -> B过滤器 chain.doFilter() -> 目标文件 -> B过滤器后置代码 -> A过滤器后置代码 -> 返回给浏览器页面/数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨犀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值