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

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

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

    posts - 27,  comments - 14,  trackbacks - 0
    要有這么一個(gè)監(jiān)聽器,當(dāng)加入session時(shí)就可以觸發(fā)一個(gè)加入session事件,在session過期時(shí)就可以觸發(fā)一個(gè)刪除事件,那么我們的把要處理的東西加入到這兩個(gè)事件中就可以做很多于SESSION相關(guān)連的事。如在線用戶的管理,單點(diǎn)登陸等等。
    在J2EE中可以實(shí)現(xiàn)HttpSessionBindingListener接口,此接口有兩要實(shí)現(xiàn)的方法。
     void valueBound(HttpSessionBindingEvent event) 當(dāng)實(shí)現(xiàn)此接口的監(jiān)聽類和session綁定時(shí)觸發(fā)此事件。
    void valueUnbound(HttpSessionBindingEvent event) 當(dāng)session過期或?qū)崿F(xiàn)此接口的監(jiān)聽類卸裁時(shí)觸發(fā)此事件。

    下面是一個(gè)示例解決方案:可以把登陸用戶的信息記錄在緩沖池中,當(dāng)SESSION過期時(shí),用戶信息自動(dòng)刪除。

    一個(gè)用戶信息接口:
    public interface LoginUserMessage {}

    一個(gè)用戶緩沖池:
    public class LoginUserPool {
        
    private Map map = new HashMap();
        
    private static LoginUserPool loginUserPool = new LoginUserPool();
        
    private LoginUserPool(){}
        
    public static LoginUserPool getInstance() {
            
    return loginUserPool;
        }

        
    public void addLoginUserMessage(String sessionId,LoginUserMessage loginUserMessage){
           map.remove(sessionId);
           map.put(sessionId,loginUserMessage);
        }

        
    public LoginUserMessage removeLoginUserMessage(String sessionId){
            
    return  (LoginUserMessage) map.remove(sessionId);
        }

        
    public LoginUserMessage getLoginUserMessage(String sessionId){
            
    return (LoginUserMessage) map.get(sessionId);
        }

        
    public Map getLoginUserMessages(){
            
    return map;
        }

        
    public boolean isEmpty(){
            
    return  map.isEmpty();
        }

    }


    一個(gè)HttpSessionBindingListener接口的監(jiān)聽類:
    public class UserLoginListener implements HttpSessionBindingListener{
        
    private final Log logger = LogFactory.getLog(getClass());
        
    private String sessionId = null;
        
    private LoginUserMessage loginUserMessage = null;
        
    private LoginUserPool loginUserPool = LoginUserPool.getInstance();

        
    public LoginUserMessage getLoginUserMessage() {
            
    return loginUserMessage;
        }

        
    public void setLoginUserMessage(LoginUserMessage loginUserMessage) {
            
    this.loginUserMessage = loginUserMessage;
        }

        
    public String getSessionId() {
            
    return sessionId;
        }

        
    public void setSessionId(String sessionId) {
            
    this.sessionId = sessionId;
        }

        
    /**//* (non-Javadoc)
         * 
    @see javax.servlet.http.HttpSessionBindingListener#valueBound(javax.servlet.http.HttpSessionBindingEvent)
         
    */

        
    public void valueBound(HttpSessionBindingEvent event) {
            
    // TODO Auto-generated method stub
            if(this.getLoginUserMessage() != null){
                loginUserPool.addLoginUserMessage(
    this.getSessionId(),this.getLoginUserMessage());
                logger.info(
    "用戶信息加入緩存池成功");
            }

            
    this.setLoginUserMessage(null);
        }


        
    /**//* (non-Javadoc)
         * 
    @see javax.servlet.http.HttpSessionBindingListener#valueUnbound(javax.servlet.http.HttpSessionBindingEvent)
         
    */

        
    public void valueUnbound(HttpSessionBindingEvent event) {
            
    // TODO Auto-generated method stub
            if(!loginUserPool.isEmpty()){
                loginUserPool.removeLoginUserMessage(sessionId);
                logger.info(
    "用戶信息從緩存池中移除成功");
            }

        }


    }

    這樣子的話,當(dāng)在應(yīng)用中把userLoginListener加入到session中時(shí),就會自動(dòng)把用戶信息加入到緩沖池中了。
    如:
     session.setAttribute("userLoginListener",userLoginListener);



    (原創(chuàng),轉(zhuǎn)載請保留文章出處http://m.tkk7.com/bnlovebn/archive/2007/07/04/128006.html

    posted on 2007-07-12 17:11 Scott.Pan 閱讀(395) 評論(0)  編輯  收藏 所屬分類: 代碼收藏夾
    <2007年7月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲第一极品精品无码久久| 亚洲国产成人精品久久久国产成人一区二区三区综| 亚洲男人av香蕉爽爽爽爽| 亚洲精品国产首次亮相| 性做久久久久久免费观看| 亚洲欧洲日产专区| 一色屋成人免费精品网站| 亚洲噜噜噜噜噜影院在线播放 | 亚洲成在人线aⅴ免费毛片| 国产成人亚洲精品| 午夜视频免费成人| 国产亚洲精品2021自在线| 亚洲精品97久久中文字幕无码| a毛片成人免费全部播放| 亚洲精品无码永久中文字幕| 久久久久国色av免费看 | 亚洲三级视频在线| 妞干网在线免费观看| 国产精品观看在线亚洲人成网| 免费一级成人毛片| xxxxxx日本处大片免费看| 欧洲亚洲国产清在高| 国产成人精品免费视频大| 亚洲第一成年网站视频| 亚洲高清无码在线观看| 一区二区三区福利视频免费观看| 亚洲乱码日产精品BD在线观看| 女人18毛片水真多免费播放| 日韩在线视频线视频免费网站| 久久综合九九亚洲一区| 久久久久免费看黄A片APP| 美女裸体无遮挡免费视频网站| 亚洲精品无码鲁网中文电影| 国产男女爽爽爽爽爽免费视频| 边摸边吃奶边做爽免费视频网站| 亚洲中文字幕无码一区| 国产成人精品久久免费动漫| 特色特黄a毛片高清免费观看| 亚洲激情在线视频| 日本人护士免费xxxx视频| 国产一级淫片a免费播放口|