⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章
⭐作者主页:@逐梦苍穹
⭐所属专栏:Java Web
目录
Listener
1、概述
在Java Web中,Listener(监听器)JavaWeb 三大组件(Servlet、Filter、Listener)之一。
它可以用于监听Web应用程序中发生的事件,例如:ServletContext、HttpSession、ServletRequest等对象的创建和销毁、属性值的修改等事件。
通过Listener,我们可以在这些事件发生时,执行一些特定的操作,例如:记录日志、初始化数据、清理资源等。
监听器可以监听就是在 application,session,request 三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件。
request 和 session 已经学习过了,而 application 是 ServletContext 类型的对象。ServletContext 代表整个web应用,在服务器启动的时候,tomcat会自动创建该对象。在服务器关闭时会自动销毁该对象。
2、分类
监听器类别 | 监听器类型 | 监听事件类型 | 监听器方法 |
ServletContext | ServletContextListener | ServletContext创建和销毁事件 | contextInitialized(ServletContextEvent) |
contextDestroyed(ServletContextEvent) | |||
ServletContextAttributeListener | ServletContext中属性的添加、删除和修改事件 | attributeAdded(ServletContextAttributeEvent) | |
attributeRemoved(ServletContextAttributeEvent) | |||
attributeReplaced(ServletContextAttributeEvent) | |||
Session | HttpSessionListener | HttpSession创建和销毁事件 | sessionCreated(HttpSessionEvent) |
sessionDestroyed(HttpSessionEvent) | |||
HttpSessionAttributeListener | HttpSession中属性的添加、删除和修改事件 | attributeAdded(HttpSessionBindingEvent) | |
attributeRemoved(HttpSessionBindingEvent) | |||
attributeReplaced(HttpSessionBindingEvent) | |||
HttpSessionBindingListener | 实现了HttpSessionBindingListener接口的对象在HttpSession中被绑定或解绑的事件 | valueBound(HttpSessionBindingEvent) | |
valueUnbound(HttpSessionBindingEvent) | |||
HttpSessionActivationListener | 实现了HttpSessionActivationListener接口的对象在HttpSession中被活化或钝化的事件 | sessionWillPassivate(HttpSessionEvent) | |
sessionDidActivate(HttpSessionEvent) | |||
Request | ServletRequestListener | ServletRequest创建和销毁事件 | requestInitialized(ServletRequestEvent) |
requestDestroyed(ServletRequestEvent) | |||
ServletRequestAttributeListener | ServletRequest中属性的添加、删除和修改事件 | attributeAdded(ServletRequestAttributeEvent) | |
attributeRemoved(ServletRequestAttributeEvent) | |||
attributeReplaced(ServletRequestAttributeEvent) |
这个表格可能内容比较多,没有辨识度不太好看,下面贴一张我自己笔记软件的表:
对于上面的表格,归纳一个简化版,如下:
2.1、重点
这个详细的表格里面只有 ServletContextListener 这个监听器后期会接触到,重点了解这部分。ServletContextListener 是用来监听 ServletContext 对象的创建和销毁。
ServletContextListener 接口中有以下两个方法
- void contextInitialized(ServletContextEvent sce):ServletContext 对象被创建了会自动执行的方法
- void contextDestroyed(ServletContextEvent sce):ServletContext 对象被销毁时会自动执行的方法
3、相关代码
简单了解监听器代码基本的东西如何写(主要是注解方面):
步骤如下:
- 定义一个类,实现ServletContextListener 接口
- 重写所有的抽象方法
- 使用 @WebListener 进行配置
4、使用场景简单说明
Listener可以用于以下场景:
- ServletContext监听器:监听Web应用程序的启动和关闭事件,进行一些初始化或清理工作,比如读取配置文件、初始化数据库连接池等。
- HttpSession监听器:监听用户会话的创建和销毁事件,可以在会话创建时初始化用户相关信息,在会话销毁时清理资源等。
- ServletRequest监听器:监听客户端请求的创建和销毁事件,可以记录请求日志、统计请求次数等。
通过Listener,我们可以方便地实现一些与业务逻辑相关的操作,如记录日志、统计访问量、控制并发访问、加载配置文件等。