`

ServletContextListener的用法

 
阅读更多


这个J2EE小提示阐述了ServletContextListener的用法。这个事件类作为Web应用服务的一部分,处理Web应用的 servlet上下文(context)的变化的通知。这可以解释为,好像有个人在服务器旁不断地通知我们服务器在发生什么事件。那当然需要监听者了。因此,在通知上下文(context)初始化和销毁的时候,ServletContextListner非常有用。

import javax.servlet.ServletContextListener;

import javax.servlet.ServletContextEvent;

import javax.servlet.*;

public class MyListener implements ServletContextListener {

private ServletContext context = null;

 public void contextDestroyed(ServletContextEvent event){

  //Output a simple message to the server's console

  System.out.println("The Simple Web App. Has Been Removed");

  this.context = null;

}

 // 这个方法在Web应用服务做好接受请求的时候被调用。

public void contextInitialized(ServletContextEvent event){

  this.context = event.getServletContext();

  //Output a simple message to the server's console

  System.out.println("The Simple Web App. Is Ready");

}


}


<web-app>

<listener>

  <listener-class>

   com.listeners.MyContextListener

  </listener-class>

</listener>

<servlet/>

<servlet-mapping/>

</web-app> 

ServletContextListener接口有两方需要实现的方法:

contextInitialized()和contextDestroyed();

Listener,译为监听者.顾名思义,它会监听Servlet容器,当应用开始的时候它会调用contextInitialized()方法;

当应用关闭的时候,它同样会调用contextDestroyed()方法.

我们可以利用这个特性初始化一些信息,当然我们也可以利用Servlet类init()方法,并在配置文件中让它启动应用的时候

就执行,并且在关闭的时候执行destroy()方法.但是继承此接口应该更符合容器的应用.

举个简单的例子:在一些论坛,社区及聊天室当中,删除在线的超时用户就可以利用这个接口来实现.

可以利用JAVA的TimerTask及Timer类来实现每隔一定的时间进行自动检测.

实例代码如下:

UserOnlineTimerTask.java

-----------------

package com.bcxy.servlet;

import java.util.TimerTask;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

public class UserOnlineTimerTask extends TimerTask {

Log log = LogFactory.getLog(UserOnlineTimerTask.class);

public void run() {

// 删除超时在线用户

log.info("删除在线的超时用户....");

}


}

------------------------------------

------------------------------------

SysListener.java

-----------------------------------

package com.bcxy.servlet;

import java.io.IOException;

import java.util.Timer;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServlet;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

public class SysListener

extends HttpServlet

implements ServletContextListener {

Log log = LogFactory.getLog(SysListener.class);

Timer timer = new Timer();

public void service(ServletRequest request, ServletResponse response)

throws ServletException, IOException {

//


}

public void contextInitialized(ServletContextEvent sce) {

log.info("initial context....");

timer.schedule(new UserOnlineTimerTask(), 0, 10000);


}

public void contextDestroyed(ServletContextEvent sce) {

log.info("destory context....");

timer.cancel();

}


}

--------------------------------

如果你没有使用log4j的话,你可以把log.info()改为System.out.println()会得到同样的结果.


http://blog.sina.com.cn/s/blog_4679d9850100987y.html

 

 

分享到:
评论

相关推荐

    ServletContextListener使用详解

    我们可以通过实现 ServletContextListener 接口,并在 contextInitialized() 方法中加载数据,使用 setAttribute() 方法将数据提交到内存中去。然后,其他的 Servlet 就可以通过 getAttribute() 方法将数据取出。 ...

    ServletContextListener,Timer,TimerTask学习笔记

    当Web应用启动时,服务器会自动调用实现了`ServletContextListener`接口类的`contextInitialized`方法,而在Web应用停止时,会调用`contextDestroyed`方法。这为开发者提供了一个全局的、统一的入口点来执行一些初始...

    ServletContextListener的应用

    在Java Web开发中,`ServletContextListener`是一个非常重要的接口,它是Servlet API的一部分,定义了两个方法:`contextInitialized`和`contextDestroyed`。这个接口的主要作用是监听Servlet上下文(`...

    SpringMVC中ervletContextListener的使用

    `ServletContextListener`是一个接口,它包含两个方法:`contextInitialized`和`contextDestroyed`。当Web应用程序启动时,服务器会调用`contextInitialized`方法,而在应用程序关闭时调用`contextDestroyed`。...

    ServletContextListener完成在线人数统计和显示人员列表

    首先,让我们了解一下`ServletContextListener`的基本用法。要创建一个`ServletContextListener`,你需要实现`javax.servlet.ServletContextListener`接口,并重写两个方法:`contextInitialized...

    Java基于ServletContextListener实现UDP监听

    在这篇文章中,我们将介绍如何使用ServletContextListener来实现UDP监听。 在UDP监听中,需要使用DatagramSocket来创建一个UDP套接字,以便监听UDP数据报。同时,需要使用ServletContextListener来监听Servlet上...

    Listener:ServletContextListener,sesson,请求侦听器

    开发者可以参考这些代码,学习如何在自己的项目中使用监听器来增强功能和优化性能。 总结来说,`ServletContextListener`、session监听和请求侦听器是Java Web开发中不可或缺的组件,它们使得开发者能够更好地控制...

    java 监听使用

    ### Java监听器使用详解 #### 一、引言 在Java Web开发中,尤其是在使用...综上所述,通过合理地使用`ServletContextListener`,开发者可以有效地管理和控制Web应用的生命周期事件,从而提升应用的整体性能和稳定性。

    JSP监听器用法分析.docx

    本文将深入探讨JSP监听器的使用方法和常见应用场景。 **一、监听器接口** 1. **ServletContextAttributeListener**:这个接口用于监听ServletContext对象中属性的变化,包括添加、删除或修改属性。当这些事件发生...

    java定时任务,每天定时执行任务

    在这里,我们使用 Calendar.getInstance() 方法获取当前时间,然后使用 set 方法设置执行时间为每天的凌晨 2 点。 知识点 3:TimerManager 类的实现 在 TimerManager 类中,我们使用 Timer 和 TimerTask 实现了...

    定时器实例

    最后,使用 ServletContextListener 监听器来启动定时器。 ```java package util; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet....

    jsp定时执行的三种方法

    本文将详细介绍在JSP环境下实现定时执行任务的三种方法:利用`java.util.Timer`类、通过`ServletContextListener`接口以及采用Spring框架中的`ScheduledTimerTask`。 ### 1. 使用`java.util.Timer` `java.util....

    java定时器的实现

    本文将详细介绍如何使用`Timer`类结合`ServletContextListener`接口来实现在Web应用中启动并管理一个定时任务。 #### 二、Java定时器的基本概念 1. **`java.util.Timer`类**:`Timer`类是Java中用于执行定时任务的...

    Servlet监听器例子

    在这个“Servlet监听器例子”中,我们将深入探讨如何使用`ServletContextListener`, `HttpSessionListener`, 和 `HttpSessionAttributeListener`来实现不同的功能。 首先,`ServletContextListener`接口用于监听...

    java web使用监听器实现定时周期性执行任务demo

    我们可以通过实现`javax.servlet.ServletContextListener`接口,并重写`contextInitialized`和`contextDestroyed`方法,分别在Web应用启动和停止时执行代码。 2. **定时任务实现**:在`contextInitialized`方法中,...

    JSP监听器用法分析

    本文实例讲述了JSP监听器用法。分享给大家供大家参考,具体如下: 监听器也叫Listener,是servlet服务的监听器。它可以监听客户端的请求,服务端的操作等。比如统计在线用户数量。每当增加一个HttpSession时,就会...

    Servilet概述

    基于 ServletContex 的监听器可以继承两个接口并实现接口中相应的方法:ServletContextListener 接口定义了两个方法 contextInitialized 和 contextDestroyed,分别在 ServletContex 创建和销毁时触发;...

    Java定时执行任务的三种方法

    当使用Spring框架时,可以利用Spring的定时任务支持。通过`ScheduledTimerTask`,我们可以方便地在Spring配置文件中声明和管理定时任务。配置示例: ```xml &lt;!-- TimerFactoryBean配置 --&gt; &lt;!-...

    Java定时器在Web中的应用.doc

    Java定时器在Web应用中的实现主要涉及到`java.util.Timer`类和`ServletContextListener`接口,它们在Spring、Struts、Hibernate等框架环境下同样适用。本文将详细解释如何使用这两个核心组件来实现在Web环境中定时...

Global site tag (gtag.js) - Google Analytics