`
韩悠悠
  • 浏览: 840409 次
  • 性别: 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文件记录了监听器所做的动作。
 

 

分享到:
评论

相关推荐

    jsp/servlet中过滤器和监听器的区别

    - **定义**:监听器是实现了特定接口的Java类,用于监听Web应用中特定事件的发生,如会话创建、销毁、请求到达、上下文初始化等。 - **工作原理**:监听器通过实现Servlet规范中的各种监听器接口,如`...

    JAVA Servlet监听器listener学习资料

    - 监听器是Java Servlet API的一部分,它们是实现了特定监听接口的类,用于监听服务器、Servlet上下文(ServletContext)、HttpSession以及请求对象等发生的事件。 - 监听器可以自动触发某些操作,例如监控在线...

    Servlet常用语法Demo

    `ServletContext`是整个Web应用的共享上下文,它可以用来在不同Servlet之间共享信息,或获取全局配置。例如,`getContextPath()`获取Web应用的根路径,`getAttribute()`和`setAttribute()`用于存储和获取数据。 8....

    servlet基础与servlet容器模型

    7. **监听器**(Listener):监听Web应用中特定事件,如会话创建、销毁、上下文初始化等,可执行相应操作。 Servlet容器模型的另一个关键特性是多线程模型。由于HTTP请求是无状态的,Servlet容器通常为每个请求创建...

    Java Servlet开发与实例

    - **事件监听**:如`ServletContextListener`监听上下文初始化和销毁,`HttpSessionListener`监听会话创建和结束。 7. **MVC框架**: - **Model-View-Controller**模式常与Servlet结合使用,Spring MVC是广泛应用...

    servlet api servlet api

    - `ServletConfig`:存储Servlet的初始化参数和上下文信息。 - `ServletContext`:代表整个Web应用的共享环境,用于Servlet间通信和共享资源。 4. **Servlet配置**: Servlet通常在`web.xml`部署描述符文件中...

    用于servlet程序的开发的servlet-jar包

    3. **ServletContext**:代表整个web应用的上下文,提供了获取应用级资源、注册监听器和事件以及与其他Servlet通信的方法。 4. **HttpServletRequest** 和 **HttpServletResponse**:这两个接口分别代表了HTTP请求...

    Java Servlet帮助文档

    监听器是实现了特定接口的对象,它们监听Servlet上下文、session和请求事件。例如,ServletContextListener可以监听上下文的初始化和销毁事件,HttpSessionListener可以监听会话的创建和失效事件。 综上所述,Java ...

    Servlet参考手册.zip

    7. **监听器(Listener)**:监听器是实现了特定接口的类,用于监听Servlet上下文、会话和请求事件。它们可以在Servlet的生命周期事件发生时自动执行代码。 8. **异步处理**:从Servlet 3.0开始,Servlet支持异步...

    servletapi.rar

    8. **监听器(Listener)**:ServletAPI定义了一系列事件监听器接口,如ServletContextListener、ServletRequestListener和HttpSessionListener,它们可以在特定事件(如Servlet上下文初始化、请求到达或会话创建)...

    JavaWeb开发技术-Listener监听器.pptx

    - **事件(Event)**:事件是应用程序中发生的一种状态改变,例如用户点击按钮、页面加载完成或Servlet上下文初始化等。 - **事件源(Event Source)**:事件的发起者,通常是用户交互的对象或者系统组件。 - **...

    Servlet API 中文版+英文版 chm

    6. **Servlet上下文**:ServletContext接口代表了整个Web应用的共享环境,所有Servlet都可以访问。它提供获取初始化参数、广播事件、存储全局数据等功能。 7. **请求和响应对象**:HttpServletRequest和...

    监听器源代码.zip

    6. **Spring框架中的监听器**: Spring框架提供了ApplicationContextListener,允许在Spring应用上下文初始化和关闭时执行自定义逻辑。此外,ApplicationEvent和ApplicationListener接口允许在Spring应用中发布和处理...

    servlet.jar包

    此外,Servlet API还提供了过滤器(Filter)和监听器(Listener)的概念,它们允许开发者在请求到达Servlet之前进行拦截处理,或者监听特定的事件,如session创建、销毁等。 JSP技术则是基于Servlet的,它将HTML和...

    Servlet基础知识总结

    `ServletContext`是代表Web应用程序上下文的对象,它可以被多个Servlet共享。 ##### 2、`HttpServlet`对象介绍(接口) `HttpServlet`是抽象类,继承自`GenericServlet`,为HTTP协议提供了默认的实现。它重写了`...

    Servlet 的API文档

    - `getContextPath()`: 获取Servlet上下文路径。 - `getAttribute(String name)`: 获取全局属性。 - `log(String message)`: 记录日志信息。 五、Filter和FilterChain 1. `Filter`:可以拦截和修改请求或响应,实现...

    Servlet培训课件(中软国际)

    而监听器则可以监听Web应用中的各种事件,如会话创建、销毁、请求上下文初始化等,提供了一种动态管理应用状态的手段。 除了这些,课程可能还会介绍Servlet容器,如Tomcat,它是运行Servlet的环境。Servlet容器接收...

    Servlet中文api帮助文档

    五、Servlet上下文 `ServletContext`接口代表了整个Web应用的共享环境,它可以在所有Servlet之间传递信息。可以使用`getInitParameter()`获取全局初始化参数,`setAttribute()`和`getAttribute()`用于存储和检索对象...

    Servlet过滤器与侦听器.ppt

    `getServletConfig()`和`getServletContext()`方法分别返回Servlet的配置信息和应用程序上下文。 `HttpServlet`是`GenericServlet`的子类,专门为处理HTTP协议而设计。`HttpServlet`重写了`service()`方法,根据...

    servlet 3.0 jar 包综合下载

    4. **上下文监听器(Context Listener)**:除了传统的`ServletContextListener`,Servlet 3.0还允许通过注解注册监听器,使得应用程序可以在部署时自动初始化或清理资源。 5. **微容器(Micro-container)**:...

Global site tag (gtag.js) - Google Analytics