`

J2EE中监听器Listener的应用

阅读更多

来自http://blog.csdn.net/uciqxkj/archive/2008/11/06/3238853.aspx

 

本文以二个Listener实例来讲述ServletContext、HttpSession对象生命周期及ServletContext、HttpSession对象中属性变化情况。

实例一:

         用于监听ServletContext对象生命周期及ServletContext对象中属性的变化情况的监听器ContextListener,分别实现了ServletContextListener,ServletContextAttributeListener接口。代码如下:

  1. package  com.hc.znpb.servlet;
  2. import  javax.servlet.ServletContextAttributeEvent;
  3. import  javax.servlet.ServletContextAttributeListener;
  4. import  javax.servlet.ServletContextEvent;
  5. import  javax.servlet.ServletContextListener;
  6. /**
  7.  * ServletContext对象监听器.<br>
  8.  * 作用:监听ServletContext对象生命周期及ServletContext对象中属性变化情况
  9.  * 
  10.  * <pre>
  11.  * Copy Right Information : HC
  12.  * Project : znpb
  13.  * JDK version used : jdk 1.5.12
  14.  * Version : 1.0
  15.  * Modification history : Sep 27, 2008
  16.  * </pre>
  17.  */
  18. public   class  ContextListener  implements  ServletContextListener,
  19.         ServletContextAttributeListener {
  20.      /**
  21.      * 当应用关闭时将执行此方法
  22.      */
  23.      public   void  contextDestroyed(ServletContextEvent arg0) {
  24.              System.out.println( "【监听到】应用被关闭!" );
  25.     }
  26.      /**
  27.      * 当应用启动时将执行此方法
  28.      */
  29.      public   void  contextInitialized(ServletContextEvent arg0) {
  30.          System.out.println( "【监听到】应用被启动!" );
  31.     }
  32.      /**
  33.      * 当ServletContext对象中新增属性时将执行此方法
  34.      */
  35.      public   void  attributeAdded(ServletContextAttributeEvent arg0) {
  36.          System.out.println( "【监听到】ServletContext对象中新增一名为"  + arg0.getName()
  37.                 +  "的属性,其属性值为:"  + arg0.getValue());
  38.     }
  39.      /**
  40.      * 当ServletContext对象中删除属性时将执行此方法
  41.      */
  42.      public   void  attributeRemoved(ServletContextAttributeEvent arg0) {
  43.          System.out.println( "【监听到】ServletContext对象中一名为"  + arg0.getName()
  44.                 +  "的属性被删除!" );
  45.     }
  46.      /**
  47.      * 当ServletContext对象中更新属性时将执行此方法
  48.      */
  49.      public   void  attributeReplaced(ServletContextAttributeEvent arg0) {
  50.          System.out.println( "【监听到】ServletContext对象中一名为"  + arg0.getName()
  51.                 +  "的属性被更新!" );
  52.     }
  53. }

实例二:

    用于监听HttpSession对象生命周期及HttpSession对象中属性的变化情况的监听器SessionListener,分别实现了HttpSessionListener,HttpSessionAttributeListener接口。代码如下:

  1. package  com.hc.znpb.servlet;
  2. import  javax.servlet.http.HttpSessionAttributeListener;
  3. import  javax.servlet.http.HttpSessionBindingEvent;
  4. import  javax.servlet.http.HttpSessionEvent;
  5. import  javax.servlet.http.HttpSessionListener;
  6. import  com.hc.znpb.util.SysUtil;
  7. /**
  8.  * Session监听器.<br>
  9.  * 作用:用于监听HttpSession对象的生命周期及HttpSession对象中属性变化情况
  10.  * 
  11.  * <pre>
  12.  * Copy Right Information : HC
  13.  * Project : znpb
  14.  * JDK version used : jdk 1.5.12
  15.  * Version : 1.0
  16.  * Modification history : Sep 27, 2008
  17.  * </pre>
  18.  */
  19. public   class  SessionListener  implements  HttpSessionAttributeListener,
  20.         HttpSessionListener {
  21.      // 在线人数统计
  22.      private   int  userCount =  0 ;
  23.      /**
  24.      * 当HttpSession对象中新增属性时将执行此方法
  25.      */
  26.      public   void  attributeAdded(HttpSessionBindingEvent arg0) {
  27.          System.out.println( "【监听到】HttpSession对象中新增一名为"  + arg0.getName()
  28.                 +  "的属性,其属性值为"  + arg0.getValue());
  29.     }
  30.      /**
  31.      * 当HttpSession对象中删除属性时将执行些方法
  32.      */
  33.      public   void  attributeRemoved(HttpSessionBindingEvent arg0) {
  34.          System.out.println( "【监听到】HttpSession对象中一名为"  + arg0.getName()
  35.                 +  "的属性被删除!" );
  36.     }
  37.      /**
  38.      * 当HttpSession对象中更新属性时将执行些方法
  39.      */
  40.      public   void  attributeReplaced(HttpSessionBindingEvent arg0) {
  41.          System.out.println( "【监听到】HttpSession对象中一名为"  + arg0.getName()
  42.                 +  "的属性被修改!" );
  43.     }
  44.      /**
  45.      * 当新生一个新的HttpSession对象(新用户上线)时执行此方法
  46.      */
  47.      public   void  sessionCreated(HttpSessionEvent arg0) {
  48.         // 在线人数加1
  49.         arg0.getSession().setAttribute(SysUtil.SESSION_COUNT_USERS,
  50.                  new  Integer( this .userCount++));
  51.         System.out.println( "【监听到】新用户"  + arg0.getSession().getId() +  "上线!" );
  52.         System.out.println( "【在线用户数】"  +  this .userCount +  "人" );
  53.     }
  54.      /**
  55.      * 当新生一个HttpSession对象销毁(新用户下线)时执行此方法
  56.      */
  57.      public   void  sessionDestroyed(HttpSessionEvent arg0) {
  58.          / / 在线人数减1
  59.         arg0.getSession().setAttribute(SysUtil.SESSION_COUNT_USERS,
  60.                  new  Integer(-- this .userCount));
  61.         System.out.println( "【监听到】新用户"  + arg0.getSession().getId() +  "下线!" );
  62.         System.out.println( "【在线用户数】"  +  this .userCount +  "人" );
  63.     }
  64. }

最后修改web.xml文件,如下:

  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>
  2. < web-app   xmlns = "http://java.sun.com/xml/ns/j2ee"
  3.      xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"   version = "2.4"
  4.      xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
  5.      < listener >
  6.          < listener-class >
  7.             com.hc.znpb.servlet.ContextListener
  8.          </ listener-class >
  9.      </ listener >
  10.      < listener >
  11.          < listener-class >
  12.             com.hc.znpb.servlet.SessionListener
  13.          </ listener-class >
  14.      </ listener >
  15. </ web-app >

分享到:
评论

相关推荐

    非常简单的J2EE购物车

    8. **过滤器和监听器**:在J2EE应用中,过滤器(Filter)可以用来拦截和修改请求或响应,监听器(Listener)用于监听特定事件,如会话的创建和销毁。这些组件可以用来实现功能,如登录验证、权限控制和会话超时提醒...

    轻量级J2EE企业应用实战3

    5. **事件监听器**:通过`listener`元素注册事件监听器,比如`lee.MyLoadListener`和`lee.MySaveListener`。这种方式虽然简单,但是不能共享监听器实例,对于多个监听器来说,每次都会创建新的实例。 #### 四、事件...

    J2EE_1.5_API中文帮助文档.chm(完全可用)

    在1.5版本中,Servlet 2.4规范引入了包括过滤器(Filter)和监听器(Listener)在内的增强功能,使开发者可以更灵活地控制请求和响应流程。 2. **JSP(JavaServer Pages)**:JSP是用于创建动态网页的Java技术。JSP...

    J2EE JAR包(J2EE1.3 J2EE1.4 J2EE5.0 )

    1. **Servlet 2.3规范**:增加了过滤器(Filter)和监听器(Listener)的概念,增强了对HTTP请求处理的灵活性。 2. **JSP 1.2规范**:引入了EL(Expression Language),使得页面表达式更加简洁。 3. **EJB 2.0**:...

    j2ee 笔记 j2ee 笔记 j2ee 笔记

    监听器用于监听应用程序中的某些事件,如应用程序初始化、销毁、会话创建等。 示例代码: ```java public class AppListener implements ServletContextListener { public void contextInitialized...

    J2EE中关于web.xml文件的配置

    通过 web.xml 文件,我们可以对 Web 应用进行配置,例如设置应用程序的名称、描述、过滤器、监听器、Servlet、会话超时等等。 以下是 web.xml 文件中的一些常用元素: 1. `&lt;web-app&gt;`:web.xml 文件的根元素,用于...

    J2EE5.0帮助手册_J2EE文档_

    此外,Servlet 2.5还增强了过滤器(Filter)和监听器(Listener)的功能。 ### 5. JavaMail API J2EE 5.0提供了JavaMail API,用于处理电子邮件。开发者可以通过`javax.mail`包中的类和接口发送、接收邮件,实现...

    Java实训教程 Java软件开发实战 web开发技术 第6章 listener 共21页.pptx

    - **熟悉不同类型的监听器**:掌握Java Web环境中提供的多种监听器类型,并理解它们的应用场景。 - **掌握监听器的使用方法**:学会如何在项目中实现和部署监听器,以便监控和响应特定事件。 #### 二、监听器技术...

    韩顺平j2ee视频实战教程

    同时,监听器(Listener)则可以监听Web组件的生命周期事件,例如监听session的创建、销毁,或者监听ServletContext的初始化和销毁。 此外,课程可能还会涵盖MVC设计模式、JSP和JSTL的使用,以及Servlet与JDBC的...

    J2EE中关于web.xml文件的配置[文].pdf

    7. **&lt;listener&gt;**: listener元素声明事件监听器,它们会在特定的Servlet容器事件(如会话创建、销毁等)发生时被调用。 8. ****: 此元素用于定义Servlet,包括其类名和初始化参数,使得Servlet能够在应用启动时被...

    J2EE中Servlet技术帮助文档(超详细和易懂)

    八、监听器(Listener) ServletContextListener、ServletRequestListener和ServletSessionListener等监听器接口,可以帮助我们在特定事件(如应用启动、请求到达、会话创建)发生时执行相应操作。 九、MVC框架与...

    J2EE Servlet 2.5中文文档

    7. **过滤器和监听器**:Servlet 2.5引入了过滤器(Filter)和监听器(Listener)的概念,过滤器可以拦截请求和响应,实现数据转换、权限验证等功能;监听器则可以监听特定的事件,如会话的创建和销毁,以便进行相应...

    J2EE中文API

    5. **监听器(Listener)**:可以监听Servlet容器的特定事件,如会话创建、销毁等,实现自动化管理。 J2EE中文API文档是针对中国开发者编写的,旨在帮助他们更好地理解和使用这些技术。文档通常包括以下内容: 1. ...

    J2EE技术面试题(WORD文档格式)

    面试中可能涉及Servlet的生命周期、过滤器(Filter)、监听器(Listener)的使用,以及Servlet与JSP的协同工作。 5. **EJB(Enterprise JavaBeans)**:EJB是J2EE中用于构建企业级应用的组件模型,提供了一种规范来...

    j2ee及java面试题

    面试中可能涉及消息队列、主题、持久化消息、消息监听器等。 7. **JNDI(Java Naming and Directory Interface)**:JNDI提供了查找和管理资源的接口,如查找EJB、数据源等。面试中可能涉及目录服务的基本概念和...

    J2EE5.0API中文帮助

    例如,增强了过滤器(Filter)和监听器(Listener)的功能,支持动态部署,以及更好的错误处理机制。 **6. JAX-RS(Java API for RESTful Web Services)** JAX-RS是Java中实现RESTful服务的标准API,首次在J2EE ...

    J2EE期中考试卷子

    14. Spring初始化:Spring的IOC容器初始化通常使用Servlet监听器(Listener)进行。 15. Struts2核心控制器:Struts2的核心控制器是过滤器(Filter)。 16. MVC模式:M代表模型(Model),C代表控制器(Controller...

    J2EE开发范例

    书中的源代码部分将详细展示如何在实践中应用J2EE技术。 以下是基于J2EE的一些关键知识点: 1. **Servlet和JSP**:Servlet是Java EE中的核心组件,用于处理HTTP请求,而JSP(JavaServer Pages)则提供了方便的视图...

    j2EE面试题分类集合

    - **过滤器(Filter)与监听器(Listener)**:用于拦截请求、响应,监听Web组件的状态。 - **会话管理**:Cookie和Session的原理、使用和注意事项。 - **MVC模式**:模型-视图-控制器架构的理解及其在Web开发中...

    J2EE&Servlet API 帮助文档

    7. **Listener**:Servlet 2.5支持事件监听器,如HttpSessionListener、ServletRequestListener和ServletContextListener,它们可以在特定事件(如session创建或销毁)发生时执行操作。 **J2EE API** J2EE API不仅...

Global site tag (gtag.js) - Google Analytics