监听器

代理设计模式

当某一个对象发生某一个事件时,通知另一个对象,让另一个对象做某事

🐤代理设计模式步骤

  • 定义好协议(接口)
  • 遵守协议(实现接口)
  • 成为代理
  • 调用代理方法

监听器的内部使用的就是代理模式

监听器简介

  • 能监听某个对象的状态变化的组件
  • 监听域对象的变化

🐤监听器相关的概念

  • 事件源:被监听的对象
    • request
    • session
    • servletContext
  • 监听器:监听事件源的对象
    • 8个监听器
  • 注册监听器:监听器与事件源相绑定
  • 响应行为:监听到事件源变化时,去做什么事情

监听器划分

  • 三个监听域对象的创建与销毁
    • ServletContextListener
    • HttpSessionListener
    • ServletRequestListener
  • 三个监听域对象当中属性变化
    • ServletContextAttributeListener
    • HttpSessionAttributeListener
    • ServletRequestAttributeListener

域监听器

ServletContextListener

  • 监听ServletContext域的创建与销毁的监听器ServletContextListener
  • ServletContext域生命周期
    • 服务器启动创建
    • 服务器关闭销毁
  • 监听器的编写步骤
    • 编写一个监听器类去实现监听器ServletContextListener接口
    • 覆盖监听器的方法
public class ServletContextListenerTest implements ServletContextListener {
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("Servlet创建");
    }

    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("Servlet销毁");
    }
}
  • 需要在web.xml中进行配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <listener>
        <listener-class>com.bntang666.ServletContextListenerTest</listener-class>
    </listener>
</web-app>
  • 作用
    • 初始化的工作:初始化对象、初始化数据、加载数据库驱动、连接池的初始化
    • 加载一些初始化的配置文件
    • 任务调度

HttpSessionListener

  • 监听HttpSession域的创建与销毁的监听器HttpSessionListener
  • HttpSession的生命周期
    • 第一次调用request.getSession时创建
    • 服务器关闭、session过期、手动销毁
  • 编写步骤
    • 同上
  • 运用场景
    • 记录访问人数

ServletRequestListener

  • 监听ServletRequest域创建与销毁的监听器ServletRequestListener
  • ServletRequest的生命周期
    • 创建:每一次请求都会创建request
    • 销毁:请求结束

Session中对象存储监听

  • 一个对象存储到session当中的几种状态
    • 绑定状态:就一个对象被放到session域中
    • 解绑状态:就是这个对象从session域中移除了
    • 钝化状态:是将session内存中的对象持久化(序列化)到磁盘
    • 活化状态:就是将磁盘上的对象再次恢复到session内存中
posted @   BNTang  阅读(152)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示