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

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

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

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

    都市淘沙者

    荔枝FM Everyone can be host

    統計

    留言簿(23)

    積分與排名

    優秀學習網站

    友情連接

    閱讀排行榜

    評論排行榜

    Servlet 監聽器應用(轉)

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

    常用的監聽接口


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

    使用范例:

    由監聽器管理共享數據庫連接


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

    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 
        } 
    }  
      監聽器保證每新生成一個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 都市淘沙者 閱讀(830) 評論(0)  編輯  收藏 所屬分類: JSP/PHP

    主站蜘蛛池模板: 春意影院午夜爽爽爽免费| 两性色午夜视频免费播放| 亚洲国产精品视频| 一个人看的www免费视频在线观看 一个人免费视频观看在线www | 亚洲日韩国产精品乱| 香蕉免费一区二区三区| 亚洲精品456人成在线| av在线亚洲欧洲日产一区二区| 精品一区二区三区无码免费视频 | 亚洲无线码在线一区观看| 亚洲成人免费在线观看| 日韩精品无码免费视频| 亚洲美女免费视频| 亚洲Aⅴ无码一区二区二三区软件| 99精品视频在线观看免费播放 | 亚洲免费日韩无码系列| 亚洲国产成人久久99精品| 亚洲福利精品电影在线观看| 免费观看黄色的网站| caoporm碰最新免费公开视频| 亚洲人成伊人成综合网久久| 国产亚洲成人在线播放va| 毛片免费视频播放| 国产猛男猛女超爽免费视频| 国产精品亚洲精品日韩动图| 亚洲高清免费在线观看| 亚洲人成电影网站国产精品| 成人性生交大片免费看无遮挡| 少妇性饥渴无码A区免费| 免费在线观看亚洲| 亚洲AV一二三区成人影片| 亚洲AV美女一区二区三区| MM131亚洲国产美女久久| 日韩精品免费电影| 中文字幕无码不卡免费视频| 无码人妻一区二区三区免费n鬼沢| 九九免费久久这里有精品23| 亚洲欧美熟妇综合久久久久| 亚洲剧情在线观看| 亚洲视频在线免费播放| 亚洲v高清理论电影|