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. linq-to-sql实现left join,group by,count

    linq-to-sql实现left join,group by,count 用linq-to-sql实现下面的sql语句: SELECT p.ParentId, COUNT(c.ChildId) FR ...

  2. Linux 中 eclipse 的tomcat端口号被占用

    1.打开ubuntu启动器(快捷键是 win)--键入 sys--找到 系统监视器(System Monitor) 2.打开系统监视器--找到进程中的java 这个进程--结束该进程

  3. Ionic学习笔记1_基本布局

    <body> <!-- 头部 -->                               bar里嵌入子元素:title,button,button-bar和 inpu ...

  4. waterfall.js

    jq-waterfall是一款仿Pinterest网站的响应式无限动态加载图片瀑布流特效jQuery插件.该瀑布流特效使用ajax调用来动态加载图片,达到无限加载的效果.它使用简单,兼容性好,值得推荐 ...

  5. Spring Boot全日志设置

    说在前面 这里日志分两种.一种是tomcat的输出(系统)日志,一种是自己定义的日志. 系统日志设置 目标 当springboot接收到请求时记录日志到文件中 实现 你只需要在你的绿叶applicat ...

  6. objc_setAssociatedObject 使用(转)

    2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ...

  7. VS中去除SrouceControl的信息

    如果在不连接TFS的情况下,编辑一个已经source control的solution,总是会有烦人的提示信息.如果你确定不再需要source control,可以这么干. Here is how t ...

  8. apple touch icon 大小总结

    <!-- For Chrome for Android: --> <link rel="icon" sizes="192x192" href= ...

  9. 通过 after() 和 before() 方法添加若干新元素

    after() 和 before() 方法能够通过参数接收无限数量的新元素.可以通过 text/HTML.jQuery 或者 JavaScript/DOM 来创建新元素. 在下面的例子中,我们创建若干 ...

  10. Linux vi 文件编辑

    1.通过vi filename 进入编辑状态 2.退出 vi 编辑器 退出命令 说明 q 如果文件未被修改,会直接退回到Shell:否则提示保存文件. q! 强行退出,不保存修改内容. wq w 命令 ...