程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 學習使用J2EE Web應用的事件功能

學習使用J2EE Web應用的事件功能

編輯:關於JAVA

在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文件的例子:

  

  

  

  

  Inc.//DTD Web Application 2.3

  //EN""http://Java.sun.com

  /J2EE(J2EE培訓 )/dtds/web-app_2.3.dtd">

  

  

  

  

  com.stardeveloper.web.listener.SessionCounter

  

  

  

  

  com.stardeveloper.web.listener.

  ApplicationWatch

  

  

  

  如上所示,在web.XML文件中聲明監聽類是非常簡單的。現在,每次的服務器的啟動和停止,會話的創建和失效,配置好的監聽類的相應的方法就會被調用。就這麼簡單!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved