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. Python 中实现装饰器时使用 @functools.wraps 的理由

    Python 中使用装饰器对在运行期对函数进行一些外部功能的扩展.但是在使用过程中,由于装饰器的加入导致解释器认为函数本身发生了改变,在某些情况下——比如测试时——会导致一些问题.Python 通过  ...

  2. 程序员的笔记工具——Markdown

    安利一款轻量级的标记语言——Markdown 如上,Markdown作为一门语言,十分钟即可入门,熟练以后麻麻再也不用担心我在文章排版上浪费时间了!! 入门资源可参考如下回答(建议拣一条完整的看完上手 ...

  3. iBatis in或not in 查询

    iBatis in或not in 查询 open:内容开头 close:内容结尾 conjunction:分隔符   <isNotNull prepend="and" pro ...

  4. Function.prototype.bind、call与apply方法简介

    前言 前段时间面试遇见一题,题目内容大概是 function Parent() { this.prop = 'parent'; } Parent.prototype.get = function() ...

  5. 控制应用程序重启,外部程序C# 实例

    第一步:新建一个控制台项目,作为关闭当前应用程序的调用程序. using System; using System.Configuration; using System.Diagnostics; n ...

  6. 基于Verilog的以2为底取对数函数log2(x)

    参考资料:xilinx AXI4 Stream Peripherals 源码 //*********************************************************** ...

  7. c++ telescoping constructor is NOT supported until c++11

    Telescoping constructor: see Effective Java 2nd Edition Item 2 If you want to use telescoping constr ...

  8. Idea 2017的激活方式

    https://blog.csdn.net/wangyuanjun008/article/details/79233491

  9. centos IP 配置 和 克隆的centos解决上网问题

    1. vi /etc/sysconfig/network-scripts/ifcfg-eth0 2. DEVICE=eth1HWADDR=00:0C:29:D2:9A:F5TYPE=EthernetU ...

  10. 基础的 Web Services 平台是 XML + HTTP。

    HTTP 协议是最常用的因特网协议. XML 提供了一种可用于不同的平台和编程语言之间的语言. Web services 平台的元素: SOAP (简易对象访问协议) UDDI (通用描述.发现及整合 ...