Dict.CN 在線詞典, 英語學習, 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          統(tǒng)計

          留言簿(23)

          積分與排名

          優(yōu)秀學習網站

          友情連接

          閱讀排行榜

          評論排行榜

          Servlet 監(jiān)聽器應用(轉)

          監(jiān)聽器概述
            1.Listener是Servlet的監(jiān)聽器 
            2.可以監(jiān)聽客戶端的請求、服務端的操作等。
            3.通過監(jiān)聽器,可以自動激發(fā)一些操作,如監(jiān)聽在線用戶數量,當增加一個HttpSession時,給在線人數加1。
            4.編寫監(jiān)聽器需要實現相應的接口
            5.編寫完成后在web.xml文件中配置一下,就可以起作用了
            6.可以在不修改現有系統(tǒng)基礎上,增加web應用程序生命周期事件的跟蹤

          常用的監(jiān)聽接口


            1.ServletContextAttributeListener
            監(jiān)聽對ServletContext屬性的操作,比如增加/刪除/修改
            2.ServletContextListener
            監(jiān)聽ServletContext,當創(chuàng)建ServletContext時,激發(fā)contextInitialized(ServletContextEvent sce)方法;當銷毀ServletContext時,激發(fā)contextDestroyed(ServletContextEvent sce)方法。
            3.HttpSessionListener
            監(jiān)聽HttpSession的操作。當創(chuàng)建一個Session時,激發(fā)session Created(SessionEvent se)方法;當銷毀一個Session時,激發(fā)sessionDestroyed (HttpSessionEvent se)方法。
            4.HttpSessionAttributeListener
            監(jiān)聽HttpSession中的屬性的操作。當在Session增加一個屬性時,激發(fā)attributeAdded(HttpSessionBindingEvent se) 方法;當在Session刪除一個屬性時,激發(fā)attributeRemoved(HttpSessionBindingEvent se)方法;當在Session屬性被重新設置時,激發(fā)attributeReplaced(HttpSessionBindingEvent se) 方法。

          使用范例:

          由監(jiān)聽器管理共享數據庫連接


            生命周期事件的一個實際應用由context監(jiān)聽器管理共享數據庫連接。在web.xml中如下定義監(jiān)聽器:
          <listener>
              <listener-class>XXX.MyConnectionManager</listener-class>
          </listener> Øserver創(chuàng)建監(jiān)聽器的實例,接受事件并自動判斷實現監(jiān)聽器接口的類型。要記住的是由于監(jiān)聽器是配置在部署描述符web.xml中,所以不需要改變任何代碼就可以添加新的監(jiān)聽器。

          public class MyConnectionManager implements ServletContextListener{  
            public void contextInitialized(ServletContextEvent e) { 
                  Connection con = // create connection 
                  e.getServletContext().setAttribute("con", con); 
              }  
             public void contextDestroyed(ServletContextEvent e) { 
                  Connection con = (Connection) e.getServletContext().getAttribute("con"); 
                  try {
                    con.close(); 
                  } 
                 catch (SQLException ignored) { } // close connection 
              } 
          }  
            監(jiān)聽器保證每新生成一個servlet context都會有一個可用的數據庫連接,并且所有的連接對會在context關閉的時候隨之關閉。 

          計算在線用戶數量的Linstener

          (1)
           Package xxx; 

           public class OnlineCounter {  
             private static long online = 0;     
             public static long getOnline(){
                return online;
              }
              public static void raise(){ 
                 online++;
              }
              public static void reduce(){ 
                 online--; 
             }


          import javax.servlet.http.HttpSessionEvent;
          import javax.servlet.http.HttpSessionListener;

          public class OnlineCounterListener implements HttpSessionListener{
              public void sessionCreated(HttpSessionEvent hse) { 
                  OnlineCounter.raise();  
              } 
             public void sessionDestroyed(HttpSessionEvent hse){  
                  OnlineCounter.reduce();
              } 
           } 

          在需要顯示在線人數的JSP中可是使用
          目前在線人數:
          <%@ page import=“xxx.OnlineCounter" %>
          <%=OnlineCounter.getOnline()%>

          退出會話(可以給用戶提供一個注銷按鈕):
          <form action="exit.jsp" method=post> 
            <input type=submit value="exit"> 
          </form> 

          exit.jsp: <%session.invalidate() ;%> 

          在web.xml中加入:
          <listener> 
            <listener-class>servletlistener111111.SecondListener</listener-class> </listener>

          怎么樣,就是這么簡單,不用對現有代碼做任何的修改。 
           

          posted on 2007-12-03 16:51 都市淘沙者 閱讀(831) 評論(0)  編輯  收藏 所屬分類: JSP/PHP

          主站蜘蛛池模板: 建水县| 仙桃市| 磴口县| 罗山县| 满城县| 松潘县| 吴桥县| 舞钢市| 张家口市| 古浪县| 大港区| 泊头市| 厦门市| 广水市| 栾川县| 偏关县| 阜新| 瓮安县| 临邑县| 冀州市| 大英县| 宣城市| 山东| 镇原县| 寻乌县| 秦皇岛市| 麻江县| 长岛县| 温宿县| 瓦房店市| 施甸县| 阜宁县| 平原县| 喀喇| 天津市| 乐清市| 十堰市| 汉川市| 蕲春县| 宜宾市| 永善县|