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

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

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

    小海賊的夜晚

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      14 隨筆 :: 0 文章 :: 9 評(píng)論 :: 0 Trackbacks
    概述:

       在Servlet2.3規(guī)范中,Web應(yīng)用事件是新增加的部分。它讓你能最大程度地控制你的Web應(yīng)用。在本文中,我們將學(xué)習(xí)兩個(gè)很重要的應(yīng)用事件:
  • 應(yīng)用的啟動(dòng)和停止
  • Session的創(chuàng)建和失效
    如它們的名字那樣,應(yīng)用啟動(dòng)事件發(fā)生在你的應(yīng)用第一次被servlet容器裝載和啟動(dòng)的時(shí)候;停止事件發(fā)生在Web應(yīng)用停止的時(shí)候。 
        Session創(chuàng)建事件發(fā)生在每次一個(gè)新的session創(chuàng)建的時(shí)候,類似地Session失效事件發(fā)生在每次一個(gè)Session失效的時(shí)候。為了使用這些Web應(yīng)用事件為你做些有用的事情,我們必須創(chuàng)建和使用一些特殊的“監(jiān)聽(tīng)”類。下面,我們將研究這些監(jiān)聽(tīng)類到地是什么以及我們?nèi)绾稳ナ褂盟鼈儭?BR> 
    監(jiān)聽(tīng)類:

    它們是實(shí)現(xiàn)了下邊兩個(gè)接口中任何一個(gè)接口的簡(jiǎn)單的java類:
  • javax.servlet.ServletContextListener 
  • javax.servlet.http.HttpSessionListener  
        如果你想讓你的類監(jiān)聽(tīng)?wèi)?yīng)用的啟動(dòng)和停止事件,你就得實(shí)現(xiàn)ServletContextListener接口;如果你想讓你的類去監(jiān)聽(tīng)Session的創(chuàng)建和失效事件,那你就得實(shí)現(xiàn)HttpSessionListener接口。 讓我們看看在這些接口中你必須要實(shí)現(xiàn)的方法。
    1.ServletContextListener :
    接口包括如下兩個(gè)方法:
  • public void contextInitialized(ServletContextEvent sce); 
  • public void contextDestroyed(ServletContextEvent sce); 
     
       如果你實(shí)現(xiàn)了一個(gè)接口,那你就必須實(shí)現(xiàn)它所有的方法。因此,如果你想利用應(yīng)用的啟動(dòng)和停止事件,你就需要?jiǎng)?chuàng)建一個(gè)Java類并實(shí)現(xiàn)ServletContextListener接口。下邊是這樣的一個(gè)類的例子:
     
    /*File : ApplicationWatch.java*/
    import javax.servlet.ServletContextListener;
    import javax.servlet.ServletContextEvent;
    public class ApplicationWatch implements ServletContextListener {
    public static long applicationInitialized = 0L;
    /* 應(yīng)用啟動(dòng)事件 */
    public void contextInitialized(ServletContextEvent ce) {
    applicationInitialized = System.currentTimeMillis();
    }
    /*應(yīng)用停止事件 */
    public void contextDestroyed(ServletContextEvent ce) {}
    }

       在上邊的代碼中,ApplicationWatch類實(shí)現(xiàn)了ServletContextListener接口。它實(shí)現(xiàn)了接口中的兩個(gè)方法,但只用了其中的一個(gè)方法,另一個(gè)方法中沒(méi)有寫(xiě)任何代碼。這個(gè)類把應(yīng)用啟動(dòng)的時(shí)間記錄在一個(gè)可以從其它應(yīng)用類中存取應(yīng)用啟動(dòng)時(shí)間的public static變量中。 

       我將很快解釋如何告訴服務(wù)器我們有這個(gè)監(jiān)聽(tīng)類,但首先讓我們看看HttpSessionListener接口有什么不同的方法。
    2.HttpSessionListener :
    這個(gè)接口也只包含兩個(gè)方法,分別對(duì)應(yīng)于Session的創(chuàng)建和失效:
  • public void sessionCreated(HttpSessionEvent se); 
  • public void sessionDestroyed(HttpSessionEvent se);

       如上邊的ApplicationWatch例子那樣,我們也創(chuàng)建了一個(gè)實(shí)現(xiàn)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創(chuàng)建事件 */
    public void sessionCreated(HttpSessionEvent se) {
           activeSessions++;
    }
    /* Session失效事件 */
    public void sessionDestroyed(HttpSessionEvent se) {
    if(activeSessions>0)activeSessions--;
    }

    public static int getActiveSessions() {
    return activeSessions;
    }
    }

       在上邊的代碼中,SessionCounter類實(shí)現(xiàn)了HttpSessionListener接口,其目的是計(jì)算活動(dòng)會(huì)話的數(shù)量。
       好了,我們已經(jīng)學(xué)習(xí)了什么是Web應(yīng)用事件,有什么接口可以用以及看到了一些實(shí)現(xiàn)這些接口的例子。讓我們看看如何告訴應(yīng)用服務(wù)器我們有這些監(jiān)聽(tīng)類。

    Web.xml :

       我們通過(guò)把類路徑加入/WEB-INF/web.xml文件的標(biāo)簽<listener>中來(lái)告訴服務(wù)器我們的監(jiān)聽(tīng)類。下邊是一個(gè)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文件中聲明監(jiān)聽(tīng)類是非常簡(jiǎn)單的。現(xiàn)在,每次的服務(wù)器的啟動(dòng)和停止,會(huì)話的創(chuàng)建和失效,配置好的監(jiān)聽(tīng)類的相應(yīng)的方法就會(huì)被調(diào)用。就這么簡(jiǎn)單!

    總結(jié):

       在本文中我們學(xué)習(xí)了什么是Web應(yīng)用事件和我們?nèi)绾瓮ㄟ^(guò)創(chuàng)建特殊的“監(jiān)聽(tīng)”類來(lái)使用它們。之后我們分別創(chuàng)建了兩個(gè)實(shí)現(xiàn)了ServletContextListener和HttpSessionListener接口的類。我們也學(xué)習(xí)了如何在web.xml文件中使用專門(mén)的<listener>和<listener-class>標(biāo)簽來(lái)聲明這些監(jiān)聽(tīng)類。
  • posted on 2005-08-03 14:36 海賊 閱讀(288) 評(píng)論(0)  編輯  收藏 所屬分類: Servlet and JSP
    主站蜘蛛池模板: 亚洲va在线va天堂va手机| 久久免费看黄a级毛片| 亚洲男人天堂2022| 精品亚洲永久免费精品| 免费观看大片毛片| 182tv免费观看在线视频| 91精品全国免费观看青青| 亚洲人成网站999久久久综合| 亚洲国产AV无码专区亚洲AV| 亚洲区小说区图片区| 野花高清在线观看免费完整版中文 | 精品亚洲麻豆1区2区3区| 久久亚洲2019中文字幕| 日韩免费电影在线观看| 国产又黄又爽又猛免费app| 久久精品无码专区免费青青| 拍拍拍无挡免费视频网站| 一个人免费播放在线视频看片| 亚洲妇女无套内射精| 中文字幕亚洲精品无码| 亚洲电影免费观看| 久久水蜜桃亚洲av无码精品麻豆| 亚洲乱码国产乱码精品精| 国产亚洲精品资在线| 亚洲午夜av影院| 亚洲国产成人久久综合区| 波多野结衣视频在线免费观看| 麻豆国产精品入口免费观看| 成人黄18免费视频| 成人免费一区二区无码视频| 久草视频免费在线| 成人午夜免费福利视频| 91麻豆最新在线人成免费观看| 亚洲免费在线观看视频| 国产精品入口麻豆免费观看| 妻子5免费完整高清电视| 97视频热人人精品免费| 妞干网手机免费视频| 国产男女猛烈无遮档免费视频网站| 成年女人毛片免费播放人| 黄网址在线永久免费观看|