`
韩悠悠
  • 浏览: 826852 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Servlet上下文监听器实例

    博客分类:
  • web
阅读更多

下面编写一个实例,使它能够对ServletContext以及属性进行监听。由以上介绍可知,该类需要实现ServletContextAttributeListener和ServletContextListener接口类,其详细代码如下:

 

package servlet;

import java.io.FileOutputStream;

import java.io.PrintWriter;

import javax.servlet.ServletContext;

import javax.servlet.ServletContextAttributeEvent;

import javax.servlet.ServletContextAttributeListener;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

public class MyServletContextListener 

              implements ServletContextListener,ServletContextAttributeListener{

          private ServletContext context = null;                                               //定义一个ServletContext对象变量,赋为null

          public void contextInitialized(ServletContextEvent s) {

                    //TODO 该方法实现了ServletContextListener接口定义的方法,对ServletContext进行初始化

                    this.context = s.getServletContext();                               //初始化一个ServletContext对象

                    print("ServletContext初始化......");                                  //打印出该方法的操作信息

          }

          public void contextDestroyed(ServletContextEvent s) {

                    //TODO 该方法实现了ServletContextListener接口类定义方法,用于释放ServletContext对象

                    this.context = null;

                    print("ServletContext被释放......");

          }

          public void attributeAdded(ServletContextAttributeEvent sa) {

                    //TODO 当上下文添加属性时,将调用该方法。这里只是将添加的属性信息打印出来

                    print("增加ServletContext对象的一个属性:attributeAdded('"+sa.getName()+"',' "+sa.getValue()+"')");

          }

          public void attributeRemoved(ServletContextAttributeEvent sa) {

                    //TODO 当把ServletContext中的某个属性删除时,调用该方法

                    print("删除ServletContext对象的某一个属性:attributeRemoved('

                             "+sa.getName()+"','")");

          }

          public void attributeReplaced(ServletContextAttributeEvent sa) {

                    //TODO 当上下文进行属性值更新时,将调用该方法

                    print("更改ServletContext对象的某一个属性:attributeReplaced('

                             "+sa.getName()+"','"+sa.getValue()+"')");   

          }        

          private void print(String message){

                    //调用该方法在txt文件中打印出message字符串信息

                    PrintWriter out = null;

                    try{

                             out = new PrintWriter(new FileOutputStream("D:\\output.txt",true));

                             out.println(new java.util.Date().toLocaleString()+" ContextListener: "+message);

                             out.close();

                    }

                    catch(Exception e)

                    {

                             e.printStackTrace();

                    }

          }

}

 

 

程序说明:该监听器类实现了ServletContextAttributeListener和ServletContextListener两个接口类中的5个方法:

   ● contextInitialized(ServletContextEvent s)方法用来初始化ServletContext对象。

   ● contextDestroyed(ServletContextEvent s)方法在上下文中删除某个属性时调用。

   ● attributeAdded(ServletContextAttributeEvent sa)方法在上下文中添加一个新的属性时调用。

   ● attributeReplaced(ServletContextAttributeEvent sa)方法在更新属性时调用。

   ● attributeRemoved(ServletContextAttributeEvent sa)方法在上下文中删除某个属性时会被调用。

在使用这个监听器之前还需要在Web模块中的web.xml配置文件中进行声明,代码如下:

<listener>

   <listener-class>servlet.MyServletContextListener</listener-class>

</listener>

接下来就编写JSP程序来操作ServletContext的属性,看看监听器程序作出什么反应,该JSP的一段代码如下:

 

 

<%

   out.println(“Test ServletContextListener”);

   application.setAttribute(“userid”,”zzb”);                     //添加一个属性

   application.setAttribute(“userid”,”zzb2”);                            //替换掉已经添加的属性

   application.removeAttribute(“userid”);                       //删除该属性

%>

代码说明:当第一次添加属性userid时,监听器调用contextInitialized(ServletContextEvent s)初始化监听方法和attributeAdded(ServletContextAttributeEvent sa)添加属性监听方法。

可以查看D根目录下的output.txt文件内容,如下:

2006-7-12 14:07:50 ContextListener: ServletContext初始化......

2006-7-12 14:13:55 ContextListener: 增加ServletContext对象的一个属性:attributeAdded('userid','zzb')

2006-7-12 14:13:55 ContextListener: 更改ServletContext对象的某一个属性:attributeReplaced ('userid','zzb2')

2006-7-12 14:13:55 ContextListener: 删除ServletContext对象的某一个属性:attributeRemoved ('userid')

该log文件记录了监听器所做的动作。
 

 

分享到:
评论

相关推荐

    Java™ Servlet 规范.

    1.6.1 监听器(Listener)顺序 ...............................................................................................................14 1.6.2 注解处理 .............................................

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    Servlet3.1规范(最终版) PDF

    1.6.1 监听器(Listener)顺序 ...............................................................................................................14 1.6.2 注解处理 ...............................................

    spring源代码解析

    下面我们使用ContextLoaderListener作为载入器作一个详细的分析,这个Servlet的监听器是根上下文被载入的地方,也是整个 Spring web应用加载上下文的第一个地方;从加载过程我们可以看到,首先从Servlet事件中得到...

    java源码包---java 源码 大量 实例

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    关于JSP配置文件web.xml加载顺序详解

    2、紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文。 3、容器将转换为键值对,并交给servletContext。 4、容器创建中的类实例,创建监听器。 二、 load-on-startup ...

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    JAVA基础知识点HTML格式教程编程实例20000源代码

    注释、AroundInvoke、异步、集群、上下文、数据源 EAR文件、EJB-Servlet、二进制实体、嵌入式实体、实体继承、实体生命周期 实体监听、实体管理器、实体合并、实体序列化、实体主键、实体关系 实体二级表、实体更新...

    疯狂Android讲义源码

     2.7.5 上下文菜单 141  2.8 本章小结 143  第3章 事件处理 144  3.1 Android的事件处理 145  3.2 基于监听的事件处理 145  3.2.1 事件监听的处理模型 145  3.2.2 事件和事件监听器 148  3.2.3 内部类作为...

    java源码包2

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    java源码包3

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    java源码包4

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    Spring中文帮助文档

    2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. IoC(控制反转)...

    Spring API

    2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. IoC(控制反转)...

    Spring攻略(第二版 中文高清版).part2

    13.4 管理集成测试中的应用上下文 520 13.4.1 问题 520 13.4.2 解决方案 520 13.4.3 工作原理 521 13.5 向集成测试注入测试夹具 526 13.5.1 问题 526 13.5.2 解决方案 526 13.5.3 工作原理 527 13.6...

    Spring攻略(第二版 中文高清版).part1

    13.4 管理集成测试中的应用上下文 520 13.4.1 问题 520 13.4.2 解决方案 520 13.4.3 工作原理 521 13.5 向集成测试注入测试夹具 526 13.5.1 问题 526 13.5.2 解决方案 526 13.5.3 工作原理 527 13.6...

Global site tag (gtag.js) - Google Analytics