欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Listener开发 监听器 博客分类: Listener开发 listener 监听配置 

程序员文章站 2024-03-22 15:39:46
...
Listener开发
本章将详细介绍Listener的定义和作用,还将介绍如何配置Listener。将介绍Listener的分类以及常用的Listener,如ServletContext Listener和HttpSession Listener。
通过本章的学习,读者应该能够完成如下几个目标。
熟练掌握如何定义并配置Listener
熟练掌握ServletContextListener接口的实现和作用
熟练掌握ServletContextAttributeListener接口的实现和作用
熟练掌握HttpSessionListener接口的实现和作用
熟练掌握HttpSessionAttributeListener接口的实现和作用

1 Listener简介
Listener的中文译名为监听器,从字面上可以看出Listener主要用来监听之用。通过Listener可以监听容器中某一执行动作,并根据其要求做出相应的响应。
到目前Servlet 2.4开始,一共包含八个Listener接口,可以将其分为三类,分别如下。
第一类:与ServletContext有关的Listener接口。
包括两个Listener接口,分别是ServletContextListener和ServletContextAttributeListener。
第二类:与HttpSession有关的Listener接口。
包括四个Listener接口,分别是HttpSessionListener、HttpSessionAttributeListener、HttpSessionBindingListener和HttpSessionActivationListener。
第三类:与ServletRequest有关的Listener接口。
包括两个Listener接口,分别是ServletRequestListener和ServletRequestAttributeListener。

2 ServletContext Listener
      ServletContext Listener包含两个Listener接口,分别是ServletContextListener和ServletContextAttributeListener。其中ServletContextListener接口用来实现ServletContext的启动和销毁监听;ServletContextAttributeListener接口用来实现application范围属性变化的监听。

2.1 ServletContextListener接口
      ServletContextListener接口用来实现ServletContext的启动和销毁监听。该接口中包含两个方法,一个是contextInitialized()方法,用来监听ServletContext的启动和初始化;一个是contextDestroyed()方法,用来监听ServletContext的销毁。在这两个方法中还包含一个参数sce,其类型为ServletContextEvent。通过ServletContextEvent对象的 getServletContext()方法可以获得ServletContext对象。

2.2 ServletContextAttributeListener接口
      ServletContextAttributeListener接口用来实现application范围属性变化的监听。该接口中包含三个方法,一个是attributeAdded()方法,用来监听application范围属性的添加;一个是attributeReplaced()方法,用来监听application范围属性的替换;一个是attributeRemoved()方法,用来监听application范围属性的移除。在这两个方法中还包含一个参数scab,其类型为ServletContextAttributeEvent。通过ServletContextAttributeEvent对象的getName()方法可以获得属性的名称;通过ServletContextAttributeEvent对象的getValue()方法可以获得属性的值。

3 HttpSession Listener
     HttpSession Listener包含四个Listener接口,分别是HttpSessionListener、HttpSessionAttributeListener、HttpSessionBindingListener和HttpSessionActivationListener。其中HttpSessionListener接口用来实现sesion的初始化和销毁监听;HttpSessionAttributeListener接口用来实现session范围属性变化的监听。

3.1 HttpSessionListener接口
     HttpSessionListener接口用来实现session的初始化和销毁监听。该接口中包含两个方法,一个是sessionCreated()方法,用来监听session的创建和初始化;一个是sessionDestroyed()方法,用来监听session的销毁。在这两个方法中还包含一个参数se,其类型为HttpSessionEvent。通过HttpSessionEvent对象的getSession()方法可以获得session对象。

3.2 HttpSessionAttributeListener接口
      HttpSessionAttributeListener接口用来实现session范围属性变化的监听。该接口中包含三个方法,一个是attributeAdded ()方法,用来监听session范围属性的添加;一个是attributeReplaced()方法,用来监听session范围属性的替换;一个是attributeRemoved()方法,用来监听session范围属性的移除。在这三个方法中还包含一个参数se,其类型为HttpSessionBindingEvent。通过HttpSessionBindingEvent对象的getName()方法可以获得属性的名称;通过ServletContextAttributeEvent对象的getValue()方法可以获得属性的值。


类似 web.xml 配置
1 日志监听
<listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
    </context-param>
    <context-param>
        <param-name>log4jExposeWebAppRoot</param-name>
        <param-value>false</param-value>
    </context-param>

2 上下文监听
<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:biz-context.xml
            classpath:biz-context-ems.xml
            classpath:security.xml
            classpath:web-context-ems.xml
         </param-value>
    </context-param>