[1]监听器简介
    > Listener是JavaWeb中三大组件之一。Servlet、Filter、Listener
    > 三大组件都有的共同特点,都需要实现一个接口,并在web.xml文件配置。
       监听器:朝阳群众
       监听对象:明星
       监听的事件:干坏事
       调用方法:报警
   
   > JavaWeb中的监听器的监听对象是谁?
       ServletContext
       HttpSession
       ServletRequest

[2]监听器分类 
    > JavaWeb中的监听器共有三种,共8个监听器
       - 生命周期监听器,监听三个对象的创建和销毁的事件。
   
       - 属性监听器,监听三个对象中属性的变化。
   
       - session对象监听器,将它session中的属性,以及session的活化和钝化。

[3]生命周期监听器
    ServletContextListener
       - ServletContext生命周期监听器
              - void contextDestroyed(ServletContextEvent sce)
                - 该方法在ServletContext对象销毁前调用
     
                - void contextInitialized(ServletContextEvent sce) 
                  - 该方法在ServletContext对象创建之前调用。
 
             - ServletContextEvent 对象可以获取到ServletContext对象
                  ServletContextEvent.getServletContext();
    
    HttpSessionListener
         - HttpSession生命周期监听器
            - void sessionCreated(HttpSessionEvent se)
                - 该方法在Session创建时调用
     
            - void sessionDestroyed(HttpSessionEvent se)
               - 在session销毁时调用
    
            - HttpSessionEvent
               - 可以获取HttpSession对象
   
    ServletRequestListener
       - void requestDestroyed(ServletRequestEvent sre)
          - 在request对象销毁时调用
   
       - void requestInitialized(ServletRequestEvent sre)
          - 在request对象创建时调用
   
       - ServletRequestEvent
          可以获取ServletContext对象和ServletRequest
  
  编写一个监听器的步骤:
   1.创建一个类并实现一个接口。
   2.在web.xml文件中注册监听器。

[4]属性监听器

  > 属性监听器,监听三个域中的属性的变化:添加一个属性,替换一个属性,移除一个属性

  > ServletContextAttributeListener

    - 监听ServletContext中的属性的变化

      void attributeAdded(ServletContextAttributeEvent scab)

    - 当向ServletContext中添加属性时调用

      attributeRemoved(ServletContextAttributeEvent scab)

    - 移除属性时调用

      attributeReplaced(ServletContextAttributeEvent scab)

    - 替换一个属性时调用

   > HttpSessionAttributeListener

     void attributeAdded(HttpSessionBindingEvent se)

     void attributeRemoved(HttpSessionBindingEvent se)

     void attributeReplaced(HttpSessionBindingEvent se)

      - HttpSessionBindingEvent

        1.可以获取到属性名 getName()

        2.可以获取属性的旧值 getValue()

        3.可以获取到HttpSession对象 getSession();

 > ServletRequestAttributeListener

     void attributeAdded(ServletRequestAttributeEvent srae)     

     void attributeRemoved(ServletRequestAttributeEvent srae)

     void attributeReplaced(ServletRequestAttributeEvent srae)

> 以下两个监听器监听session域中的属性的。

  1 HttpSessionBindingListener

    > 监听session域中某一个类的实例的添加和移除。

    > 该接口由JavaBean来实现,不需要再web.xml文件配置

      valueBound(HttpSessionBindingEvent event)

        - 当该类的实例,作为属性设置进session域中时调用

      valueUnbound(HttpSessionBindingEvent event)

        - 当该类的实例,从session域中被移除时调用

  2 HttpSessionActivationListener

    > 监听session域中的某类属性,和session一起活化和钝化的事件。

    > 该接口由JavaBean来实现,同样不需要再web.xml中配置

      void sessionDidActivate(HttpSessionEvent se)

        - 当前对象和session一起被活化到内存时调用

      void sessionWillPassivate(HttpSessionEvent se)

        - 当前对象和session一起钝化到硬盘时调用

Listener随笔的更多相关文章

  1. FineUIMvc随笔 - 动态创建表格列

    声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 用户需求 用户希望实现动态创建表格列,在 WebForms 中,我们通过在 Page_Init 中创建列来实现: 但是在 MVC ...

  2. FineUIMvc随笔(4)自定义回发参数与自定义回发

    声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 不能忘却的回发 在上一篇文章中,我们对FineUIMvc中的回发进行了详细描述,目的是为了告诉大家: 1. FineUIMvc中 ...

  3. FineUIMvc随笔(1)动态创建表格列

    声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. <FineUIMvc随笔>目录 FineUIMvc随笔(1)动态创建表格列 FineUIMvc随笔(2)怎样在控件中 ...

  4. 解决android sdk 运行出现 could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037:的问题

    ionic3项目,在添加android平台后,cordova run android 出现 以下问题: error: could not install *smartsocket* listener: ...

  5. FineUIMvc随笔(7)扩展通知对话框(显示多个不重叠)

    声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 这篇文章我们将改造 FineUIMvc 默认的通知对话框,使得同时显示多个也不会重叠.并提前出一个公共的JS文件,供大家使用. ...

  6. JavaWeb随笔整理

    JavaWeb随笔整理 为方便阅读,故整理了相关学习笔记 前端相关 HTML CSS JavaScript BootStrap 数据库相关 MySQL基础 MySQL表的约束和数据库设计 MySQL多 ...

  7. AI人工智能系列随笔

    初探 AI人工智能系列随笔:syntaxnet 初探(1)

  8. 【置顶】CoreCLR系列随笔

    CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...

  9. C++随笔:.NET CoreCLR之GC探索(4)

    今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...

随机推荐

  1. NFS存储服务

    NFS存储服务笔记======================================================================NFS共享存储是什么: 英文名-Netwo ...

  2. TypeError: Fetch argument 0 has invalid type <type 'int'>, must be a string or Tensor. (Can not convert a int into a Tensor or Operation.)

    6月5日的時候,修改dilated_seg.py(使用tensorflow)出現了報錯: TypeError: Fetch argument 0 has invalid type <type ' ...

  3. PHP超全局变量$_SERVER分析

    $_SERVER 是一个包含了诸如头信息(header).路径(path).以及脚本位置(script locations)等等信息的数组.这个数组中的项目由 Web 服务器创建.不能保证每个服务器都 ...

  4. P1100 高低位交换

    题目描述 给出一个小于2^{32}232的正整数.这个数可以用一个3232位的二进制数表示(不足3232位用00补足).我们称这个二进制数的前1616位为“高位”,后1616位为“低位”.将它的高低位 ...

  5. C#下用于同时使用OpenCvSharp和Emgu.CV两个库的相互转换库

    很久以前做的一个图像处理项目,在.NET平台上使用OpenCV,但因为同时使用了C#支持的两个比较有名的库,由于封装方式不同,难免要转换两个库之间的Mat对象. 同时还封装了一些WPF下,System ...

  6. [Tools] Wireshark Primer Tutorials

    介绍就不说了,安装也没必要讲,关于如何使用,网上的辣鸡文过多,视频又太冗余. 我推荐看下面有条理的入门教程. 界面说明:http://openmaniak.com/cn/wireshark_use.p ...

  7. 不同应用共享redis应用,但分数据库存储数据

    日常开发工作中,常常遇到这种情况 项目A ,需要使用redis 项目B ,也需使用redis …… 原来傻乎乎的在服务器上装几个redis,通过不同的端口号来进行使用 其实redis可用有16个数据库 ...

  8. 【系统监控】性能监测 vmstat,mpstat,iostat

    一.系统整体性能监测工具:uptime [root@WebServer ~]# uptime (同w命令输出的第一行信息) 09:40:52 up 5 days, 57 min, 1 user, lo ...

  9. Pandas透视表和交叉表

    透视表 参数名 说明 values 待聚合的列的名称.默认聚合所有数值列 index 用于分组的列名或其他分组键,出现在结果透视表的行 columns 用于分组的列表或其他分组键,出现在结果透视表的列 ...

  10. 使用PLSQL导出表

    前提是登录PLSQL的用户具有导出数据的权限 菜单Tools-->Export Tables