学习使用J2EE Web应用的事件功能
来源:网络 更新时间:2014-12-16
在Servlet2.3规范中,Web应用事件是新增加的部分。它让你能最大程度地控制你的Web应用。在本文中,我们将学习两个很重要的应用事件:
应用的启动和停止
Session的创建和失效如它们的名字那样,应用启动事件发生在你的应用第一次被servlet容器装载和启动的时候;停止事件发生在Web应用停止的时候。
Session创建事件发生在每次一个新的session创建的时候,类似地Session失效事件发生在每次一个Session失效的时候。为了使用这些Web应用事件为你做些有用的事情,我们必须创建和使用一些特殊的“监听”类。下面,我们将研究这些监听类到地是什么以及我们如何去使用它们。
监听类:
它们是实现了下边两个接口中任何一个接口的简单的java类:
javax.servlet.ServletContextListener javax.servlet.http.HttpSessionListener
如果你想让你的类监听应用的启动和停止事件,你就得实现ServletContextListener接口;如果你想让你的类去监听Session的创建和失效事件,那你就得实现HttpSessionListener接口。 让我们看看在这些接口中你必须要实现的方法。
1.ServletContextListener :
接口包括如下两个方法:
public void contextInitialized (ServletContextEvent sce); public void contextDestroyed (ServletContextEvent sce);
如果你实现了一个接口,那你就必须实现它所有的方法。因此,如果你想利用应用的启动和停止事件,你就需要创建一个Java类并实现ServletContextListener接口。下边是这样的一个类的例子:
/*File : ApplicationWatch.java*/ import javax.servlet.ServletContextListener; import javax.servlet.ServletContextEvent; public class ApplicationWatch implements ServletContextListener { public static long applicationInitialized = 0L; /* 应用启动事件 */ public void contextInitialized (ServletContextEvent ce) { applicationInitialized = System.currentTimeMillis(); } /*应用停止事件 */ public void contextDestroyed (ServletContextEvent ce) {} }
在上边的代码中,ApplicationWatch类实现了ServletContextListener接口。它实现了接口中的两个方法,但只用了其中的一个方法,另一个方法中没有写任何代码。这个类把应用启动的时间记录在一个可以从其它应用类中存取应用启动时间的public static变量中。