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

    xiaoxiao2024-10-28  61

    目录

    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 监听器接口分类

    ServletContextHttpSessionServletRequest

    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)