JavaWeb阶段 - Listener学习总结

概述

  • JavaWeb三大组件:Servlet,Filter,Linstener
  • Listener也称之为监听器,用于对其他对象发生事件或状态改变进行监听和处理,当被监听的对象发生改变时,立即采取相应处理
  • 用于监听Web应用程序中的 ServletContext,HttpSession,ServletRequest 等域对象的创建与销毁事件,以及监听域对象中的属性发生修改的事件

分类

  • 监听域对象自身的创建和销毁的事件监听器
  • 监听域对象中的属性的增加和删除的事件监听器
  • 监听绑定到 HttpSession 域中的某个对象的状态的事件监听器
域对象创建时机销毁时机
ServletContextWeb服务器启动时Web服务器关闭时
HttpSession浏览器开始于服务器会话时调用HttpSession.invalidate()或超过最大有效时间间隔时
ServletRequest请求开始时访问结束后

监听器编写

  • Servlet规范为每种事件监听器都定义了相应的接口,开发人员编写事件监听器程序只需实现这些接口,Web服务器根据接口注册相应的监听对象上
  • 监听器在web.xml中注册,可注册多个Servlet事件监听器,服务器按照它们在web.xml文件中的注册顺序来加载和注册Servlet事件监听器
  • Web容器调用与之相关的事件监听器的相关方法,开发人员在这些方法中编写事件处理代码即被执行
  • 一个Web应用程序只会为每个事件监听器创建一个对象,因此存在多线程安全问题
  • web.xml中标签
    • <listener>:注册listener
      • <listener-class>:listener地址

生命周期监听器

ServletContextListener接口(常用)
  • 监听ServletContext对象的创建和销毁事件
  • public void contextInitialized(ServletContextEvent sce)
    • ServletContext对象的创建时被触发
  • public void contextDestroyed(ServletContextEvent sce)
    • ServletContext对象的销毁时被触发
HttpSessionListener接口(常用)
  • 监听HttpSession对象的创建和销毁事件
  • public void sessionCreated(HttpSessionEvent se)
    • Session对象的创建时被触发
  • public void sessionDestroyed(HttpSessionEvent se)
    • Session对象的销毁时被触发
ServletRequestListener接口
  • 监听ServletRequest对象的创建和销毁事件
  • public void requestInitialized(ServletRequestEvent sre)
    • ServletRequest对象的创建时被触发
  • public void requestDestroyed(ServletRequestEvent sre)
    • ServletRequest对象的销毁时被触发

属性操作监听器

ServletContextAttributeListener接口
  • public void attributeAdded(ServletContextAttributeEvent event)
    • 向appliction中添加属性时调用
  • public void attributeRemoved(ServletContextAttributeEvent event)
    • 从appliction中删除属性时调用
  • public void attributeReplaced(ServletContextAttributeEvent event)
    • 替换application中的属性时调用
HttpSessionAttributeListener接口(常用)
  • public void attributeAdded(HttpSessionBindingEvent event)
    • 向session中添加属性时调用
  • public void attributeRemoved(HttpSessionBindingEvent event)
    • 从session中删除属性时调用
  • public void attributeReplaced(HttpSessionBindingEvent event)
    • 替换session中的属性时调用
ServletRequestAttributeListener接口
  • public void attributeAdded(ServletRequestAttributeEvent event)
    • 向request中添加属性时调用
  • public void attributeRemoved(ServletRequestAttributeEvent event)
    • 从request中删除属性时调
  • public void attributeReplaced(ServletRequestAttributeEvent event)
    • 替换request中的属性时调用

感知型监听器(与HttpSession相关的指定类属性变化)

HttpSessionBindingListener接口
  • public void valueBound(HttpSessionBindingEvent event)
    • 当该类实例设置进session域中时调用
  • public void valueUnbound(HttpSessionBindingEvent event)
    • 当该类的实例从session域中移除时调用
HttpSessionActivationListener接口
  • public void sessionWillPassivate(HttpSessionEvent se)
    • 当对象session被序列化(钝化)后调用
  • public void sessionDidActivate(HttpSessionEvent se)
    • 当对象session被反序列化(活化)后调用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值