WEB后端复习——监听器、过滤器

Listener监听器

是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件。

注解@WebListener

1.ServletContextListener

监听ServletContext域的创建与销毁

创建:服务器启动针对每一个web应用创建servletcontext,触发contextInitialized ( )方法

销毁:服务器关闭前先关闭代表每一个web应用的ServletContext,触发contextDestroyed( )方法。

2.servletRequestListener

监听ServletRequest域创建与销毁

创建:用户每一次访问都会创建request对象,触发requestlnitialized ()方法。

销毁:当前访问结束,request对象就会销毁,触发requestDestroyed方法。

3.ServletContextAttributeListener------监听ServletContext域的属性变化的

当ServletContext对象添加属性时,触发attributeAdded()方法。

当ServletContext对象修改属性时,触发attributeReplaced( )方法。

当ServletContext对象删除属性时,触发attributeRemoved()方法。

在线人数统计


过滤器Filter

Filter有3个阶段,分别是初始化,拦截和过滤,销毁。

初始化阶段:当服务器启动时,我们的服务器(Tomcat)就会读取配置文件,扫描注解,然后来创建我们的Filter。

拦截和过滤阶段:只要请求资源的路径和拦截的路径相同,那么过滤器就会对请求进行过滤,这个阶段在服务器运行过程中会一直循环。

销毁阶段:当服务器(Tomcat)关闭时,服务器创建的Filter也会随之销毁。

doFilter方法中处理完业务逻辑之后,必须添加filterchain.doFilter(servletRequest,servletResponse); 否则请求/响应无法向后传递,一直停留在过滤器中。


配置过滤器

①注解@webFilter("/*")【拦截所有】

②xml中配置

java 复制代码
<filter>
    <filter-name>1</filter-name>
    <filter-class>com.example.jlsystem</filter-class>
</filter>
<filter-mapping>
    <filter-name>3</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

多个过滤器的先后顺序

多个过滤器之间会依次执行,这个依次就是按照过滤器名字的字典顺序来执行的,也就是说,在案例中,Filter1比Filter2的字典顺序靠前,所以就会先执行Filter1,再执行Filter2。在执行完放行前的语句之后,在执行放行后的语句的时候,是和之前的执行顺序是相反的,也就是说,多个过滤器链遵循先进先出,后进后出的原则

我们可以看见Filter01先进行过滤,然后交给Filter02,然后访问资源,然后Filter02对响应进行过滤,然后Filter01对响应进行过滤。

过滤词

相关推荐
我是一颗柠檬7 分钟前
【Redis】有序集合与位图Day5(2026年)
数据库·redis·后端·缓存
喵了几个咪7 分钟前
Headless 后端实践:基于Go的企业级多栈管理系统脚手架
开发语言·vue.js·后端·golang·reactjs·gowind
小小龙学IT9 分钟前
Go 并发模式深度解析:Fan-out/Fan-in 高效处理大规模数据流
开发语言·后端·golang
我是一颗柠檬13 分钟前
【Redis】持久化机制Day6(2026年)
数据库·redis·后端·缓存·database
Penge6668 小时前
Go 接口编译期断言
后端
我是一颗柠檬8 小时前
【MySQL全面教学】MySQL面试高频考点汇总Day15(2026年)
数据库·后端·mysql·面试
拽着尾巴的鱼儿9 小时前
springboot openfeign 自定义feign 接口重试机制
java·spring boot·后端
Ceelog9 小时前
久坐党自救指南:屏幕前 8 小时,身体到底在经历什么
前端·后端
XS03010610 小时前
并发编程 六
java·后端
雪宫街道10 小时前
synchronized 锁的范围:对象锁、类锁与代码块锁
java·jvm·后端·面试