监听器

Posted qq628b229e2808e

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了监听器相关的知识,希望对你有一定的参考价值。

代理设计模式

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

????代理设计模式步骤

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

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

监听器简介

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

????监听器相关的概念

  • 事件源:被监听的对象
  • 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内存中

以上是关于监听器的主要内容,如果未能解决你的问题,请参考以下文章

统计在线人数

监听器应用统计网站人数自定义session扫描器踢人小案例

java监听器之实现在线人数显示

Listener监听器,实现一个显示在线用户人数

监听器(测试在线人数的)第一种 HttpSessionBindingListener

java web用监听器listener简单的实现在线统计人数