• 监听器Listener


    [1]监听器简介

    > Listener是JavaWeb中三大组件之一。Servlet、Filter、Listener(均由服务器管理)
    > 三大组件都有的共同特点,都需要实现一个接口,并在web.xml文件配置。
    监听器:朝阳群众
    监听对象:明星
    监听的事件:干坏事
    调用方法:报警

    > JavaWeb中的监听器的监听对象是谁?(3个域对象)
      ServletContext
      HttpSession
      ServletRequest

    [2]监听器分类(监听的内容)
      > JavaWeb中的监听器共有三种,共8个监听器
      - 生命周期监听器,监听三个对象的创建和销毁的事件。(3个)

      - 属性监听器,监听三个对象中属性的变化。(3个)

      - session对象监听器,监听它session中的属性,以及session的活化和钝化。(2个)

    [3]生命周期监听器

    ServletContextListener(监听整个项目)
      - ServletContext生命周期监听器
      - void contextDestroyed(ServletContextEvent sce)
      - 该方法在ServletContext对象销毁前调用(监听项目即将卸载(服务器关闭))

      - void contextInitialized(ServletContextEvent sce)
      - 该方法在ServletContext对象创建之后调用。(监听项目开始启动(服务器启动))

      - ServletContextEvent 对象可以获取到ServletContext对象
      ServletContextEvent.getServletContext();

      HttpSessionListener(监听调用getSession()方法)
      - HttpSession生命周期监听器
      - void sessionCreated(HttpSessionEvent se)
      - 该方法在Session创建时调用

      - void sessionDestroyed(HttpSessionEvent se)
      - 在session销毁时调用

      - HttpSessionEvent
      - 可以获取HttpSession对象

    ServletRequestListener(监听一次请求)
    (ServletRequestListener监听到一个请求(一次服务器与浏览器通信):
    访问jspservlet均算一个请求(从浏览器发送请求,服务器响应请求,整个过程算一个监听请求))

        - 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域中的属性的。
    [5]HttpSessionBindingListener
      > 监听session域中某一个类的实例的添加和移除。
      > 该接口由JavaBean来实现,不需要再web.xml文件配置
        valueBound(HttpSessionBindingEvent event)
          - 当该类的实例,作为属性设置进session域中时调用
        valueUnbound(HttpSessionBindingEvent event)
          - 当该类的实例,从session域中被移除时调用

    [6]HttpSessionActivationListener
      > 监听session域中的某类属性,和session一起活化和钝化的事件。
      > 该接口由JavaBean来实现,同样不需要再web.xml中配置,但是该JavaBean需要实现Serializable接口!
        void sessionDidActivate(HttpSessionEvent se)
          - 当前对象和session一起被活化到内存时调用

        void sessionWillPassivate(HttpSessionEvent se)
          - 当前对象和session一起钝化到硬盘时调用

  • 相关阅读:
    一键安装vsftpd服务并开通ftp账户
    mysql 利用新建从库 使用 start slave until 恢复方法
    使用ThinBackup插件备份 jenkins
    docker 日志清理
    mysql5.7 MGR配置
    mysql5.7 开启增强半同步复制
    网站qps计算方法
    mysql不支持emoji表情的问题的解决方法
    网络安全
    Cronjob 简介
  • 原文地址:https://www.cnblogs.com/kangxingyue-210/p/7641129.html
Copyright © 2020-2023  润新知