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

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

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

    posts - 19, comments - 53, trackbacks - 0, articles - 283
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Listener 監(jiān)聽器的整理

    Posted on 2009-09-01 22:47 Gavin.lee 閱讀(441) 評論(0)  編輯  收藏 所屬分類: web 積累(前端 + 后臺)
    package com.Gavin.tools.sessioncount;

    import java.util.ArrayList;
    import java.util.List;
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpSessionBindingEvent;
    import javax.servlet.http.HttpSessionBindingListener;

    /**
     * 不需要在web.xml中部署
     * 向session綁定一個屬性時調用。
     * 每一個會話過程均啟動一個監(jiān)聽器
     * HttpSessionBindingListener必須實例化后放入某一個session中,才可以進行監(jiān)聽。 
     * session.setAttribute("listener",sessionListener);  將監(jiān)聽器植入HttpSession,這將激發(fā)監(jiān)聽器調用valueBound方法
     * 
     *         session.removeAttribute("listener")
     *         Session Time Out
     *         session.invalidate()
     *         session.setAttribute("onlineUserListener", "其他對象"); 即可自動調用監(jiān)聽器的valueUnbound方法。
     
    */


    public class HttpSessionBindingEventTest implements HttpSessionBindingListener {

        
    public String username;
        
        
    public HttpSessionBindingEventTest(String username) {
            
    this.username = username;
        }

        
        List onlineUserList 
    = null;
        
        
    public void valueBound(HttpSessionBindingEvent event) {
            HttpSession session 
    = event.getSession();
            ServletContext application 
    = session.getServletContext();
            
    // 把用戶名放入在線列表
            List onlineUserList = (List) application.getAttribute("onlineUserList");
            
    // 第一次使用前,需要初始化
            if (onlineUserList == null{
                onlineUserList 
    = new ArrayList();
                application.setAttribute(
    "onlineUserList", onlineUserList);
            }

            onlineUserList.add(
    this.username);
            
            
    //username已經(jīng)通過構造方法傳遞給 listener,在數(shù)據(jù)綁定時,可以直接把它放入用戶列表。
        }


        
    public void valueUnbound(HttpSessionBindingEvent event) {
            HttpSession session 
    = event.getSession();
            ServletContext application 
    = session.getServletContext();// 從在線列表中刪除用戶名  
            List onlineUserList = (List) application.getAttribute("onlineUserList");
            onlineUserList.remove(
    this.username);
        }

        
        
    public List getOnlineCount() {
            
    return onlineUserList;
        }

    }


    //把用戶名放入在線列表
    //session.setAttribute("onlineUserList", new HttpSessionBindingEventTest(username));



    HttpSessionListener:一旦,進入一個網(wǎng)站,這個網(wǎng)站就自動為瀏覽器分配一個session,調用sessionCreated(),當session過期或銷毀時候,調用sessionDestroyed,這時候有兩種方法:session.invalidate();和等待session自動過期。

    <session-config>      
         
    <session-timeout>1</session-timeout>   
    </session-config> 

    #session過期時間,時間單位是一分鐘,并且只能是整數(shù),如果是零或負數(shù),那么會話就永遠不會超時。    
     public void sessionCreated(HttpSessionEvent arg0) {}
     public void sessionDestroyed(HttpSessionEvent arg0) {} 
    例:http://m.tkk7.com/jzone/articles/284193.html

    HttpSessionAttributeListener:在向session增加、刪除和修改屬性時調用
     public void attributeAdded(HttpSessionBindingEvent arg0) {}
     public void attributeRemoved(HttpSessionBindingEvent arg0) {}
     public void attributeReplaced(HttpSessionBindingEvent arg0) {}


    HttpSessionActivationListener:分布式環(huán)境下Session激活和失活時調用
     public void sessionDidActivate(HttpSessionEvent arg0) {}
     public void sessionWillPassivate(HttpSessionEvent arg0) {}


    ServletContextListener:在一個application啟動和結束時調用 
     public void contextDestroyed(ServletContextEvent arg0) {}
     public void contextInitialized(ServletContextEvent arg0) {}
    例:http://www.cnblogs.com/jackyrong/archive/2006/09/04/494759.html
    http://www.qqgb.com/Program/Java/JavaBlog/Program_145756.html


    ServletContextAttributeListener:在向application增加、刪除和修改 Attributes時調用
     public void attributeAdded(ServletContextAttributeEvent arg0) {}
     public void attributeRemoved(ServletContextAttributeEvent arg0) {}
     public void attributeReplaced(ServletContextAttributeEvent arg0) {}

    主站蜘蛛池模板: 国产成人麻豆亚洲综合无码精品| 亚洲黄色片在线观看| a毛片成人免费全部播放| 国产亚洲成人久久| 亚洲电影在线免费观看| 蜜臀亚洲AV无码精品国产午夜.| 亚洲精品无码专区久久同性男| 特级精品毛片免费观看| 亚洲精品亚洲人成在线| 亚洲不卡AV影片在线播放| 久久成人无码国产免费播放| 亚洲卡一卡二卡乱码新区| 久久亚洲色一区二区三区| 香蕉97超级碰碰碰免费公| 国产激情久久久久影院老熟女免费| 亚洲电影在线免费观看| 亚洲国产午夜福利在线播放| 久久WWW免费人成一看片| 一区二区三区免费在线观看| 亚洲av乱码一区二区三区| 亚洲午夜福利在线观看| 日韩一区二区免费视频| 一级毛片免费不卡在线| 免费手机在线看片| 亚洲1区1区3区4区产品乱码芒果| 亚洲人成人无码网www电影首页| 好男人看视频免费2019中文| 中文字幕免费不卡二区| 国产亚洲精品美女2020久久| 精品久久久久久亚洲精品| 国产成人精品日本亚洲| 亚洲成AⅤ人影院在线观看| 美女视频黄的全免费视频网站| 免费人成激情视频在线观看冫| 最新亚洲人成网站在线观看| 亚洲成a人片在线网站| 国产V亚洲V天堂无码| 亚洲视频在线免费| 日本牲交大片免费观看| 大学生一级毛片免费看| 久久国产色AV免费观看|