web09 监听器Listener和过滤器Filter

JavaWeb 三大组件之监听器 Listener

一、Listener 监听器介绍

1.1 Listener 监听器介绍

  1. Listener 监听器它是 JavaWeb 的三大组件之一。JavaWeb 的三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器
  2. Listener 是 JavaEE 的规范,就是接口
  3. 监听器的作用是,监听某种变化(一般就是对象创建/销毁, 属性变化), 触发对应方法完成相应的任务
  4. JavaWeb 中的监听器(共八个), 目前最常用的是 ServletContextListener

二、JavaWeb 的监听器

2.1 ServletContextListener 监听器

  1. 作用:监听 ServletContext 创建或销毁(当我们 Web 应用启动时,就会创建 ServletContext),即生命周期监听,应用场景

    (1)加载初始化的配置文件;比如 spring 的配置文件

    (2)任务调度(配合定时器 Timer/TimerTask)

  2. 相关方法

    void contextInitialized(ServletContextEvent sce)
    创 建
    Servletcontext
    时 触 发
    void contextDestroyed(ServletContextEvent sce) 销毁 Servletcontext 时

2.2 ServletContextAttributeListener 监听器

  1. 作用:监听 ServletContext 属性变化

  2. 相关方法

    void attributeAdded(ServletContextAttributeEvent event) 添加属性时调用
    void attributeReplaced(ServletContextAttributeEvent event) 替换属性时调用
    void attributeRemoved(ServletContextAttributeEvent event) 移除属性时调用
    

三、其他监听器(使用较少)

3.1 HttpSessionListener 监听器

  1. 作用:监听 Session 创建或销毁,即生命周期监听

  2. 相关方法

    void sessionCreated(HttpSessionEventse)
    创建session时调用
    void sessionDestroyed(HttpSessionEvent se)
    销毁 session 时调用
    

    可以用于监控用户上线,离线

3.2HttpSessionAttributeListener 监听器

  1. 作用:监听 Session 属性的变化

  2. 相关方法

    void attributeAdded(ServletRequestAttributeEvent srae)
    添加属性时
    void attributeReplaced(ServletRequestAttributeEvent srae)
    替换属性时
    void attributeRemoved(ServletRequestAttributeEvent srae)
    移除属性时
    

3.3 ServletRequestListener 监听器

  1. 作用:监听 Request 创建或销毁,即 Request 生命周期监听

  2. 相关方法

    void requestInitialized(ServletRequestEvent sre)
    创建 request 时
    void requestDestroyed(ServletRequestEvent sre)
    销毁 request 时
    

    可以用来监控, 某个 IP 访问我们网站的频率, 日志记录 ,访问资源的情况.

3.4 ServletRequestAttributeListener 监听器

  1. 作用:监听 Request 属性变化

  2. 相关方法

    void attributeAdded(ServletRequestAttributeEvent srae) 添加属性时
    void attributeReplaced(ServletRequestAttributeEvent srae) 替换属性时
    void attributeRemoved(ServletRequestAttributeEvent srae)移除属性时
    

3.4 HttpSessionBindingListener 感知监听器

3.5 HttpSessionActivationListener 感知监听器

JavaWeb 三大组件之过滤器 Filter

一、过滤器介绍

  1. Filter 过滤器它是 JavaWeb 的三大组件之一(Servlet 程序、Listener 监听器、Filter 过滤器)

  2. Filter 过滤器是 JavaEE 的规范,是接口

    在这里插入图片描述

  3. Filter 过滤器它的作用是:拦截请求,过滤响应

  4. 应用场景

    • 权限检查
    • 日记操作
    • 事务管理

二、Filter 过滤器基本原理

在这里插入图片描述

三、Filter 过滤器 url-pattern

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

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

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

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

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

四、Filter 过滤器生命周期

  1. Filter 生命周期图解

在这里插入图片描述

五、FilterConfig

  1. FilterConfig 接口图

    在这里插入图片描述

  2. FilterConfig 说明

    • FilterConfig 是 Filter 过滤器的配置类
    • Tomcat 每次创建 Filter 的时候,也会创建一个 FilterConfig 对象,这里包含了 Filter 配置文件的配置信息。
    • FilterConfig 对象作用是获取 filter 过滤器的配置内容

六、 FilterChain 过滤器链

  1. FilterChain: 在处理某些复杂业务时,一个过滤器不够,可以设计多个过滤器共同完成过滤任务,形成过滤器链。

  2. 基本原理示意图

    在这里插入图片描述

  3. FilterChain 注意事项和细节

    • 多个 filter 和目标资源在一次 http 请求,在同一个线程中
    • 当一个请求 url 和 filter 的 url-pattern 匹配时, 才会被执行, 如果有多个匹配上,就会顺序执行,形成一个 filter 调用链(底层可以使用一个数据结构搞定)
    • 多个 filter 共同执行时,因为是一次 http 请求, 使用同一个 request 对象
    • 多个 filter 执行顺序,和 web.xml 配置顺序保持一致
    • chain.doFilter(req, resp)方法 将执行下一个过滤器的 doFilter 方法, 如果后面没有过滤器,则执行目标资源。
    • 注意执行过滤器链时, 顺序是(用前面的案例分析) Http 请求 -> A 过滤器 dofilter()-> A 过滤器前置代码 -> A 过滤器chain.doFilter() -> B 过滤器 dofilter() ->B 过滤器前置代码-> B 过滤器 chain.doFilter() -> 目标文件 -> B过滤器后置代码 -> A过滤器后置代码 ->返回给浏览器页面/数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值