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

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

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

    隨筆 - 3, 文章 - 152, 評論 - 17, 引用 - 0
    數據加載中……

    類似QQ的同名用戶登錄問題的解決

    發現對于登錄問題的解決都說用session監聽,但是沒有人寫出示例代碼,今天寫了一個,希望對大家有所幫助.
    解決同名用戶登錄的問題,類似QQ,即同名用戶第二次登錄,第一次登錄的用戶就掉線.
    SessionListener.java監聽session的類,部署于/App/WEB-INF/classes/com/test下(其中App為你的應用程序目錄)
    package com.test;
    import javax.servlet.http.*;
    import java.util.*;

    public class SessionListener implements HttpSessionListener{
        private static HashMap hUserName = new HashMap();//保存sessionID和username的映射
        /**以下是實現HttpSessionListener中的方法**/
        public void sessionCreated(HttpSessionEvent se){
        }
       
        public void sessionDestroyed(HttpSessionEvent se){
            hUserName.remove( se.getSession().getId() );
        }
        /*
         * isAlreadyEnter-用于判斷用戶是否已經登錄以及相應的處理方法
         * @param sUserName String-登錄的用戶名稱
         * @return boolean-該用戶是否已經登錄過的標志
         */
        public static boolean isAlreadyEnter(HttpSession session,String sUserName){
            boolean flag = false;
            if(hUserName.containsValue(sUserName)){//如果該用戶已經登錄過,則使上次登錄的用戶掉線(依據使用戶名是否在hUserName中)
                flag = true;
                //遍歷原來的hUserName,刪除原用戶名對應的sessionID(即刪除原來的sessionID和username)
                Iterator iter = hUserName.entrySet().iterator();
                while (iter.hasNext()) {
                    Map.Entry entry = (Map.Entry)iter.next();
                    Object key = entry.getKey();
                    Object val = entry.getValue();
                    if( ( (String)val ).equals(sUserName) ){
                        hUserName.remove(key);
                    }
                }
                hUserName.put( session.getId(),sUserName );//添加現在的sessionID和username
                System.out.println("hUserName = " + hUserName);
            }
            else{//如果該用戶沒登錄過,直接添加現在的sessionID和username
                flag = false;
                hUserName.put( session.getId(),sUserName );
                System.out.println("hUserName = " + hUserName);
            }
            return flag;
        }
        /*
         * isOnline-用于判斷用戶是否在線
         * @param session HttpSession-登錄的用戶名稱
         * @return boolean-該用戶是否在線的標志
         */
        public static boolean isOnline(HttpSession session){
            boolean flag = true;
            if( hUserName.containsKey( session.getId() ) ){
                flag = true;
            }
            else{
                flag = false;
            }
            return flag;
        }
    }

    web.xml部署于/App/WEB-INF下
    <?xml version="1.0" encoding="ISO-8859-1"?>

    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "
    http://java.sun.com/j2ee/dtds/web-app_2.3.dtd">

    <web-app>

    <listener>
    <listener-class>
    com.inspirer.dbmp.SessionListener
    </listener-class>
    </listener>

    </web-app>
    應用部分
    1.在你的登錄驗證時,調用SessionListener.isAlreadyEnter(session,"admin")
    既可以判斷該用戶名的用戶是否登錄過,又可以使上次登錄的用戶掉線
    2.其他頁面調用SessionListener.isOnline(session),可以判斷該用戶是否在線.

    posted on 2005-03-05 14:57 閱讀(294) 評論(0)  編輯  收藏 所屬分類: J2ee

    主站蜘蛛池模板: 亚洲av午夜电影在线观看 | 免费a在线观看播放| 亚洲男人天堂影院| 久久久99精品免费观看| 久久被窝电影亚洲爽爽爽| 特级做A爰片毛片免费看无码 | 久久久高清日本道免费观看| 亚洲AV无码专区亚洲AV伊甸园| a级毛片高清免费视频| 亚洲日韩精品A∨片无码| 国产一级黄片儿免费看| 久久精品国产亚洲综合色| 国产成人精品一区二区三区免费| 亚洲高清在线视频| 中文字幕无码精品亚洲资源网| 污污免费在线观看| 伊人久久亚洲综合| 国产麻豆一精品一AV一免费| 色婷婷六月亚洲婷婷丁香| 免费精品国产自产拍在线观看图片 | a级毛片毛片免费观看永久| 亚洲AV无码乱码在线观看裸奔| 性无码免费一区二区三区在线| 亚洲欧洲国产成人精品| 成年女人喷潮毛片免费播放| 朝桐光亚洲专区在线中文字幕 | 亚洲国产精品无码久久青草| jizz免费在线观看| 在线视频免费观看高清| 大桥未久亚洲无av码在线| 国产亚洲色婷婷久久99精品91| 毛片无码免费无码播放| 亚洲一级免费视频| 可以免费观看的一级毛片| 国产激情免费视频在线观看| 亚洲一区在线免费观看| 国产精品V亚洲精品V日韩精品| 免费看又黄又无码的网站| 亚洲国产成人无码AV在线影院| 亚洲真人无码永久在线| 嘿嘿嘿视频免费网站在线观看|