zoukankan      html  css  js  c++  java
  • 170817关于Listener的知识点

            1.  Listener   监听器简介
                        Listener是JavaWeb中三大组件之一。Servlet、Filter、Listener
                        三大组件都有的共同特点,都需要实现一个接口,并在web.xml文件配置。


            2. JavaWeb中的监听器的监听对象是谁?
                        ServletContext
                        HttpSession
                        ServletRequest

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

             4.生命周期监听器:

                        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

                                 ServletRequest生命周期监听器
                                       void requestDestroyed(ServletRequestEvent sre) 
                                       在request请求响应时调用
       
                                       void requestInitialized(ServletRequestEvent sre) 
                                       在request请求开始时调用
       
                                       ServletRequestEvent
                                       可以获取ServletContext对象和ServletRequest

                                      

                       编写一个监听器的步骤:
                             1.创建一个类并实现一个接口。
                             2.在web.xml文件中注册监听器。

              5. 属性监听器   

                     属性监听器,监听三个域中的属性的变化:

                          添加一个属性,替换一个属性,移除一个属性   

                                  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();  

                                               (1)实现接口

                                                  

                                               (2)做运算       

                                           

                                                 结果

                                                 

                                                (3)

                                            

                                                  结果

                                               

                                   ServletRequestAttributeListener  

                                             void attributeAdded(ServletRequestAttributeEvent srae)  

                                             void attributeRemoved(ServletRequestAttributeEvent srae)

                                             void attributeReplaced(ServletRequestAttributeEvent srae)

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

                           

                           

                          

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

                           

                       

                          

                          

                           活化后:

                              

                          

                              

        

                            

  • 相关阅读:
    GuavaCache简介(一)
    四层、七层负载均衡的区别
    腾讯云服务器 Centos6.5 安装 nginx1.12.0
    tomcat8性能优化
    JAVA 正则表达式的三种模式: 贪婪, 勉强和占有的讨论
    java中值传递和引用传递
    架构师书籍
    大型网站架构系列:20本技术书籍推荐
    RabbitMQ
    支付宝付款流程
  • 原文地址:https://www.cnblogs.com/12344321hh/p/7379665.html
Copyright © 2011-2022 走看看