<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 120,  comments - 19,  trackbacks - 0
    在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文件中聲明監聽類是非常簡單的。現在,每次的服務器的啟動和停止,會話的創建和失效,配置好的監聽類的相應的方法就會被調用。

    posted on 2006-01-25 10:11 阿成 閱讀(238) 評論(0)  編輯  收藏 所屬分類: J2EE
    主站蜘蛛池模板: 亚洲熟妇成人精品一区| 日本中文一区二区三区亚洲| 亚洲国产香蕉碰碰人人| 在线免费视频你懂的| 免费一级毛片正在播放| 羞羞漫画小舞被黄漫免费| vvvv99日韩精品亚洲| 免费夜色污私人影院网站电影| 亚洲国产黄在线观看| 久久er国产精品免费观看8| 亚洲中文久久精品无码| 亚洲免费人成在线视频观看 | 亚洲精品视频免费| 一级毛片免费在线| 国产亚洲综合久久系列| 十八禁无码免费网站| 亚洲精品视频专区| 久久精品免费一区二区喷潮 | 十八禁的黄污污免费网站| av在线亚洲欧洲日产一区二区| 两个人看的www免费视频| 中文字幕亚洲第一在线| 成年人在线免费观看| 美女无遮挡免费视频网站| 国产AⅤ无码专区亚洲AV| 久久99热精品免费观看牛牛| 亚洲人成在久久综合网站| 永久久久免费浮力影院| 久久最新免费视频| 亚洲国产综合精品| 国产又大又粗又硬又长免费| 99精品免费视品| 亚洲不卡中文字幕| 亚洲免费日韩无码系列 | 免费夜色污私人影院网站| 亚洲av伊人久久综合密臀性色| 精品久久久久成人码免费动漫| 美女视频黄频a免费观看| 亚洲国产精品一区二区第一页 | 中文字幕在线免费播放| 亚洲人色大成年网站在线观看|