Servlet上下文监听器实例

下面编写一个实例,使它能够对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文件记录了监听器所做的动作。
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值