1. JavaWeb 监听器概述

  • 在 JavaWeb 被监听的事件源为: ServletContext, HttpSession, ServletRequest, 即三大域对象.
  • 监听域对象"创建"与"销毁"的监听器;
  • 监听域对象"操作域属性"的监听器;
  • 监听 HttpSession 的监听器;
  • J2EE 文档 javax.servlet 包下;
ServletContext 事件源
  1. 生命周期监听: ServletContextListener, 它有两个方法, 一个在出生后调用,一个在死亡前调用;

    • void contextInitialized(ServletContextEvent sce);: 创建 ServletContext 时,调用;
    • void contextDestroyed(ServletContext sce);: 销毁 ServletContext 时, 调用;
  2. 属性监听: ServletContextAttributeListener,它有三个方法:

    • void attributeAdded(ServletContextAttributeEvent event);: 添加属性时调用;
    • void attributeReplaced(ServletContextAttributeEvent event);: 替换属性时调用;
    • void attributeRemoved(ServletContextAttributeEvent event);: 移除属性时调用
HttpSession 事件源
  • 生命周期监听: HttpSessionListener
  • 属性监听: HttpSessionAttributeListener
ServletRequest 事件源
  • 生命周期监听: ServletRequestListener
  • 属性监听: ServletRequestAttributeListener
事件对象
  1. ServletContextEvent:

    • 主要方法 ServletContext getServletContext(), 获取事件源;
  2. HttpSessionEvent
    • HttpSesssion getSession(), 获取事件源;
  3. ServletRequest
    • ServletContext getServletContext();
    • ServletRequest getServletRequest();
  4. ServletContextAttributeEvent
    • ServletContext getServletContext(): 获取事件源;
    • String getName(): 获取属性名;
    • Object getValue(): 获取替换之前的属性值;

2. 感知监听

2.1 特点
  • 它用来添加到 JavaBean 上,而不是添加到三大域上!
  • 这两个监听器都不需要在 web.xml 中注册;
  • 与 HttpSession 相关.
2.2 监听器
  1. HttpSessionBindingListener, 它有两个方法

    • void valueBound(HttpSessionBindingEvent event);
    • void valueUnbound(HttpSessionBindingEvent event);

3. session 钝化和活化相关的监听器

  • Tomcat 会在 session 长时间不被使用时钝化 session 对象, 所谓钝化 session, 就是把 session 通过

    序列化的方式保存到硬盘文件中. 当用户再使用 session 时, Tomcat 还会把钝化的对象再活化 session,

    所谓活化就是把硬盘文件中的 session 在反序列化会内存.
3.1 监听器
  1. HttpSessionActivationListener, 它有两个方法

    • public void sessionWillPassivate(HttpSessionEvent event): 当对象感知被活化时调用本方法;
    • public void sessionDidActivate(HttpSessionEvent event): 当对象感知被钝化时调用本方法;
  2. 配置 Tomcat 钝化 session 的参数, 目录: tomcat/conf/catalina/localhost, 文件名称为项目名称

<Context>
// 该参数固定, maxIdleSwap 表示 session 最大不活动时间 1 分钟
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1"> // 设置 session 序列化地址 Tomcat/work/catalina/localhost/listener/mysession 目录下
<Store className="org.apache.catalina.session.FileStore" directory="mysession"/>
</Context>

参考资料:

JavaWeb 之监听器的更多相关文章

  1. JavaWeb中监听器+过滤器+拦截器区别、配置和实际应用

    JavaWeb中监听器+过滤器+拦截器区别.配置和实际应用 1.前沿上一篇文章提到在web.xml中各个元素的执行顺序是这样的,context-param-->listener-->fil ...

  2. JavaWeb基础—监听器Listener

    javaWeb三大组件: servlet listener(用的不多) filter 什么叫监听器: 初次相见:AWT 二次相见:SAX(XML解析时)Bundle 绑定 监听器是一个接口,内容由我们 ...

  3. JavaWeb中监听器

     一.事件源:三大域! ServletContext 生命周期监听:ServletContextListener,它有两个方法,一个在创建时调用,一个在销毁时调用: void contextIniti ...

  4. Javaweb基础--->监听器listener(转发)

    JavaWeb中的监听器 1.基本概念 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 Servl ...

  5. IT兄弟连 JavaWeb教程 监听器1

    1  基本概念 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通java程序,这个程序 ...

  6. 深入分析JavaWeb Item38 -- 监听器(Listener)高速学习

    一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其它对象身上发生的事件或状态改变进行监听和对应处理的对象,当被监视的对象发生情况时,马上採取对应的行动.监听器事实上就是一个实现特定接口的普 ...

  7. 深入分析JavaWeb Item39 -- 监听器(Listener)学习进阶

    一.监听域对象中属性的变更的监听器 域对象中属性的变更的事件监听器就是用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信 ...

  8. javaweb之监听器详解

    在servlet中定义了多种类型的监听器,他们用于监听事件源分别是servletContext,httpsession,servletrequest 这三个域对象. servlet中监听器主要有三类: ...

  9. JavaWeb -- sevlet 监听器

    1.三个域对象的监听(创建和销毁) servletContext,  session, request 监听器 ServletContext监听器: public class MyServletCon ...

随机推荐

  1. C#实现的根据日期得到今天是星期几

    算法如下:   基姆拉尔森计算公式: W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7  在公式中d表示日期中的日数,m表示月份数,y表示年数.注意:在公式中有 ...

  2. Quartz.net基于数据库的任务调度管理(Only.Jobs)

    一 前言: 各大调度组件优缺点在这就不讨论了,使用Quartz.net是因为它可以执行秒级任务. Only.Jobs 项目通过将各Job存储在数据库中,启动一个专门的Job管理任务来循环调度各Job的 ...

  3. iframe元素获取

    应用场景:main.jsp 中有Iframe,其中包含 home.jsp,在main.jsp中的dom元素绑定的方法操作home.jsp中元素.或反之操作.

  4. ping的原理以及ICMP

    ping 的原理:     ping 程序是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接.     ping 使用的是ICMP协议,它发送icmp回送请求消 ...

  5. MyBatis官方教程及源代码解析——mapper映射文件

    缓存 1.官方文档 MyBatis 包括一个非常强大的查询缓存特性,它能够非常方便地配置和定制. MyBatis 3 中的缓存实现的非常多改进都已经实现了,使得它更加强大并且易于配置. 默认情况下是没 ...

  6. Win7安装.Net framework 3.5时出错的某解决办法

    情况: Win7卸载了.Net Framework 3.5后, 做了些盘符的Symlink操作, 将一些大文件从C盘移到D盘. 再次安装.Net 3.5时, 怎么都装不上, 直接下载离线安装包, 一装 ...

  7. oracle数据库性能优化方案精髓整理收集回想

    oracle数据库性能优化整体法则: 一.降低数据訪问(降低硬盘房訪问次数) 二.返回更少的数据(降低网络传输或磁盘訪问) 三.降低交互次数(降低网络传输) 四.降低server开销(降低cpu及内存 ...

  8. elasticJob分片跑批

    业务迅速发展带来了跑批数据量的急剧增加.单机处理跑批数据已不能满足需要,另考虑到企业处理数据的扩展能力,多机跑批势在必行.多机跑批是指将跑批任务分发到多台服务器上执行,多机跑批的前提是”数据分片”.e ...

  9. iOS开发之Auto Layout入门(转)

    随着iPhone6与iOS8的临近,适配的问题讲更加复杂,最近学习了一下Auto Layout的使用,与大家分享. 什么是Auto Layout? Auto Layout是iOS6发布后引入的一个全新 ...

  10. 给linux操作系统安装中文环境

    如果设置的默认环境是英文,需要安装中文环境.最简答的方法如下: sudo apt-get install language-pack-zh-hant sudo apt-get install lang ...