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. 通过浏览器查看nginx服务器状态配置方法

    通过浏览器查看nginx服务器状态配置方法 投稿:junjie 字体:[增加 减小] 类型:转载 这篇文章主要介绍了通过浏览器查看nginx服务器状态配置方法,本文讲解开启nginx-status的配 ...

  2. 改动Androidproject的名称(非Eclipse重命名)

    问题背景 在Eclipse,Import新的Android源代码project时.假设Eclipse的workspace已经存在同样名称project,是无法导入的. 网上有非常多改动工程名的方法.是 ...

  3. MySQL学习总结(五)表数据查询

    查询数据记录,是指从数据库对象表中获取所要查询的数据记录,该操作可以说是数据最基本的操作之一,也是使用频率最高.最重要的数据操作. 1.单表数据记录查询 1.1.简单数据查询 SELECT field ...

  4. es备份

    #!/bin/bash export LC_ALL=en_US.UTF- export LANG=en_US.UTF- Ip=10.0.10.10 Date=$(date +"%Y%m%d& ...

  5. SpringCloud系列十一:自定义Feign

    1. 回顾 上文我们讲解了如何为服务消费者配置Feign. 在Spring Cloud中,Feign的默认配置类是FeignClientsConfiguration,该类定义了Feign默认使用的编码 ...

  6. android旋转动画的两种实现方式

    在android开发,我们会常常使用到旋转动画,普通情况下旋转动画有两种实现方式,一种是直接通过java代码去实现,第二种是通过配置文件实现动画.以下是两种动画的基本是用法: 纯Java代码实现: / ...

  7. Atitit  hre框架v5 新特性  HREv5

    Atitit  hre框架v5 新特性  HREv5 1. V5新特性 apiurl2="/wrmiServlet";1 2. V1 新特性1 3. V2 新特性 添加php版1 ...

  8. Redis_发布订阅(基础)

    目录 前言 生产者和消费者 发布和订阅 Java实现 注意 前言 随着业务复杂, 业务的项目依赖关系增强, 使用消息队列帮助系统降低耦合度.发布订阅(pub/sub)是一种消息通信模式,主要目的是解除 ...

  9. Nginx https加密以及nginx日志配置与管理

    Nginx https加密以及nginx日志配置与管理 使用Nginx的优点Nginx作为WEB服务器,Nginx处理静态文件.索引文件.自动索引的效率非常高.Nginx作为代理服务器,Nginx可以 ...

  10. PHP抓取网络数据

    涉及到的知识点不多 file_get_contents:读取数据: preg_match_all:正则匹配: 和匹配之后的数据分析. 不同网页所需要抓取的数据是不同的,所以正则表达式自然也不一样,针对 ...