中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > J2EE
学习使用J2EE Web应用的事件功能
作者:Faisal Khan 时间:2006-09-28 11:30 出处:javaresearch 责编:月夜寒箫
              摘要:学习使用J2EE Web应用的事件功能
在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变量中。

我将很快解释如何告诉服务器我们有这个监听类,但首先让我们看看HttpSessionListener接口有什么不同的方法。

2.HttpSessionListener :

这个接口也只包含两个方法,分别对应于Session的创建和失效:

 

public void sessionCreated
            (HttpSessionEvent se);
            public void sessionDestroyed
            (HttpSessionEvent se);

如上边的ApplicationWatch例子那样,我们也创建了一个实现HttpSessionListener接口的类。如下:

 

/*File : SessionCounter.java*/
            import javax.servlet.http.HttpSessionListener;
            import javax.servlet.http.HttpSessionEvent;
            public class SessionCounter
            implements HttpSessionListener
            {
            private static int activeSessions =0;
            /* Session创建事件 */
            public void sessionCreated
            (HttpSessionEvent se)
            {
            activeSessions++;
            }
            /* Session失效事件 */
            public void sessionDestroyed
            (HttpSessionEvent se)
            {
            if(activeSessions>0)activeSessions--;
            }
            public static int getActiveSessions()
            {
            return activeSessions;
            }
            }

在上边的代码中,SessionCounter类实现了HttpSessionListener接口,其目的是计算活动会话的数量。

好了,我们已经学习了什么是Web应用事件,有什么接口可以用以及看到了一些实现这些接口的例子。让我们看看如何告诉应用服务器我们有这些监听类。

Web.xml :

我们通过把类路径加入/WEB-INF/web.xml文件的标签 中来告诉服务器我们的监听类。下边是一个web.xml文件的例子:

 

<!-- Web.xml -->
            <?xml version="1.0" encoding="ISO-8859-1"?>
            <!DOCTYPE web-appPUBLIC "-//Sun Microsystems,
            Inc.//DTD Web Application 2.3
            //EN""http://java.sun.com
            /j2ee/dtds/web-app_2.3.dtd">
            <web-app>
            <!-- Listeners -->
            <listener>
            <listener-class>
            com.stardeveloper.web.listener.SessionCounter
            </listener-class>
            </listener>
            <listener>
            <listener-class>
            com.stardeveloper.web.listener.
            ApplicationWatch</listener-class>
            </listener>
            </web-app>

如上所示,在web.xml文件中声明监听类是非常简单的。现在,每次的服务器的启动和停止,会话的创建和失效,配置好的监听类的相应的方法就会被调用。就这么简单!

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有