Java Web -> 过滤器Filter & 监听器Listeners

目录

1. Filter

1.1 Filter的核心类

1.2 Filter的配置

1.3 Filter顺序

2. Listeners

2.1 监听器接口分类

2.2 应用级监听

2.3 会话级监听

2.4 请求级监听

3. 注解描述

3.1 主要注解


1. Filter

对Request请求的对象进行拦截(在用户的请求访问资源前),拦截后可以做一些处理(加解密、日志记录...)

Filter的配置可以通过注解或者部署描述完成,但当资源需要被多个Filter使用,且它的触发顺序很重要的时候,只能通过部署描述配置。

  • 1.1 Filter的核心类

    • Filter的实现类必须实现javax.servlet.Filter接口

    • 1.1.1 三个重要的方法

      • init(FilterConfig filterConfig)
        • Servlet容器初始化Filter时,会触发init(),该方法只调用一次,用于初始化Filter。
      • doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
        • Servlet容器每次梳理Filter相关资源的时候,都会调用该Filter实例的doFilter方法
        • 既可以拦截请求,也可以拦截响应
        • 一个资源可以被多个Filter关联,也称为Filter链。
        • 只要调用filterChain.doFilter()就会触发链路中的下一个Filter,直到最后一个Filter,才会执行servlet方法。
        • 如果没有在该方法的结尾处调用filterChain.doFilter(),Request请求终止,结束。
      • destory()
        • Servlet容器销毁Filter时触发。
  • 1.2 Filter的配置

    • 步骤
      • 确认需要拦截处理的资源
      • 配置Filter的初始化参数,这些参数可以在init()中读取
      • 配置Filter的名称
  • 1.3 Filter顺序

如果多个Filter应用于同一个资源,那么Filter的触发顺序就取决于部署描述中的顺序。

2. Listeners

Servlet API提供了一系列的时间和事件监听接口。监听的所有事件继承自java.util.Event对象。上层的Servlet可以通过事件驱动监听一些事件的状态。

编写监听器的方法:实现监听接口,在部署文件描述文件中指定监听接口的实现类。

  • 2.1 监听器接口分类

    • ServletContext
    • HttpSession
    • ServletRequest
  • 2.2 应用级监听

    • 接口
      • ServletContextListener
        • 响应ServletContext的创建和销毁
      • ServletContextAttributeListener
        • 响应ServletContext范围的属性被添加,删除或替换
    • 适用场景
      • 应用全局共享数据加载(初始化一些数据)
      • 监听容器初始化和销毁时机,进行准备工作和清理工作
      • 监听ServletContext的属性操作
  • 2.3 会话级监听

    • 接口
      • HttpSessionListenern
        • 监听HttpSession的创建和销毁
      • HttpSessionAttributeListener
        • 与ServletContextAttributeListener类似,它会响应HttpSession范围的属性的添加,删除或替换。
  • 2.4 请求级监听

    • 接口
      • ServletRequestListener
        • 对ServletRequest的创建和销毁事件进行响应。容器会通过一个池子来存放并复用多个ServletRequest。ServletRequest的创建时刻是从容器池里被分配出来的时刻,而它的销毁时刻是放回容器池里的时刻。
      • ServletRequestAttributeListener
        • 响应ServletRequest范围的属性被添加,删除或替换。 

3. 注解描述

  • 3.1 主要注解

    • WebServlet:标识Servlet类
    • WebFilter:标识Filter类
    • WebListener:标识Listener类
    • WebInitParam:标识初始化参数
    • MulitpartConfig:标识上传附件的配置 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值