监听器 Listener

本文介绍了Java监听器的概念,详细解析了如何自定义监听器的步骤,并探讨了Servlet的8种监听器,包括生命周期监听和属性监听。通过实例讲解了监听器在不同场景下的作用和实现方式。

监听器概念

监听器就是一个实现特定接口的普通java程序,
这个程序专门用于监听一个java对象的方法调用或属性改变,
当被监听对象发生上述事件后,监听器某个方法将立即被执行。

监听器典型案例:掩耳盗铃

被监听对象(事件源-盗铃的人)  监听器对象(铃铛)  事件对象(发现盗铃就弄死他)

自己定义一个监听器原理分析

  • 需求 定义一个person,监听person的状态

  • 步骤

    • 第一步: 定义一个接口,生命要监听的方法

    • 第二步:在类中调用监听器方法

    • 第三步: 设置监听,监听动作

书写监听器的基本步骤

    1.写类  (实现相应Listener接口)

    2.配置web.xml     <listener><listener-class>包名.类名</   listener-class></listener>

Servlet监听器 8个监听

关于生命周期的监听
  • ServletContextListener

    ServletContextListener接口用于监听ServletContext对象的创建和销毁事件。
    当ServletContext对象被创建时,激发contextInitialized(sc)方法
    当ServletContext对象被销毁时,激发contextDestroyed(sc)方法
    
    
    创建:服务器启动针对每一个Web应用创建ServletContext
    销毁:服务器关闭前先关闭代表每一个Web应用的ServletContext对象 
    
  • HttpSessionListener

    HttpSessionListener接口用于监听HttpSession的创建和销毁
    
    创建一个Session时,sessionCreated(HttpSessionEvent se)方法将会被调用
    销毁一个Session时,sessionDestroyed(HttpSessionEvent se)方法将会被调用。
    用户每一次访问时,服务器创建session
    销毁:如果用户的session 30分钟没有使用,服务器就会销毁session,
    我们在web.xml里面也可以配置session失效时间
    
  • ServletRequestListener

    接口用于监听ServletRequest对象的创建和销毁
    
    Request对象被创建时,监听器的requestInitialized方法将会被调用
    Request对象被销毁时,监听器的requestDestroyed方法将会被调用
    
    创建:用户每一次访问,都会创建一个request
    销毁:当前访问结束,request对象就会销毁
    
关于属性的监听
  • ServletContextAttributeListener
  • HttpSessionAttributeListener
  • ServletRequestAttributeListener

    这三个接口中都定义了三个方法来处理被监听对象中的属性的增加,
    删除和替换的事件,同一个事件在这三个接口中对应的方法名称完全相同,
    只是接受的参数类型不同。
    
不需要在web.xml配置的监听
  • HttpSessionBindingListener

    保存在Session域中的对象可以有多种状态:
    绑定到Session中;从Session域中解除绑定;
    随Session对象持久化到一个存储设备中;随Session对象从一个存储设备中恢复
    
    
    实现了HttpSessionBindingListener接口的JavaBean对象
    可以感知自己被绑定到Session中和从Session中删除的事件
    当对象被绑定到HttpSession对象中时,web服务器调用该对象的void valueBound(HttpSessionBindingEvent event)方法
    当对象从HttpSession对象中解除绑定时,web服务器调用该对象的void valueUnbound(HttpSessionBindingEvent event)方法
    
  • HttpSessionActivationListener

    实现了HttpSessionActivationListener接口的JavaBean(需要序列化)对象可以      感知自己被活化和钝化的事件
    
    
    当往磁盘序列化时钝化
    
    活化:从磁盘中读取出来时活化
    
有什么用?
统计在线人数


登陆(踢人)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值