<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

    主站蜘蛛池模板: 亚洲日韩欧洲无码av夜夜摸 | 亚洲1区2区3区精华液| 最近中文字幕完整免费视频ww| 久久精品国产亚洲沈樵| 国产一精品一AV一免费| 亚洲AV无码不卡在线播放| 色欲国产麻豆一精品一AV一免费| 亚洲国产老鸭窝一区二区三区| 免费国产黄网站在线观看可以下载 | 国产亚洲精品自在久久| 日韩精品无码免费专区网站| 亚洲国产精品久久久久婷婷软件 | 免费福利在线视频| 亚洲欧洲日本天天堂在线观看| 日韩在线免费视频| 亚洲av乱码一区二区三区按摩| 亚洲AV日韩精品一区二区三区| 91av免费在线视频| 91亚洲自偷手机在线观看| 男男AV纯肉无码免费播放无码| 精品国产日韩亚洲一区在线 | 亚洲91av视频| 最近免费中文字幕大全| 黄色一级视频免费观看| 亚洲国产日韩在线视频| 免费在线看v网址| 黄色片网站在线免费观看| 国产亚洲精品xxx| 成人性生交视频免费观看| 免费人人潮人人爽一区二区| 日本亚洲成高清一区二区三区 | 国产美女被遭强高潮免费网站| 国产久爱免费精品视频 | 中文字幕在线免费看线人| 精品亚洲成AV人在线观看| 免费高清在线爱做视频| 中国好声音第二季免费播放| 亚洲天堂2016| 亚洲人成无码网站| 成人黄18免费视频| a毛片免费全部在线播放**|