沙漠中的魚

          欲上天堂,先下地獄
          posts - 0, comments - 56, trackbacks - 0, articles - 119
            BlogJava :: 首頁 ::  :: 聯系 :: 聚合  :: 管理

          保證網站用戶(或管理員)在同一時間只登陸一次在很多場合是很必要的!下面舉一個基于Java平臺實現的例子。
              第一步:創建SessionListenter類

           

          import javax.servlet.http.HttpSession;
          import javax.servlet.http.HttpSessionEvent;
          import javax.servlet.http.HttpSessionListener;
          import org.apache.log4j.Logger;
          import org.jpxx.sw.Constants;
          import org.jpxx.sw.Factory; 

          /**
           * 該監聽器用于監聽后臺管理員登陸。只允許統一管理員在同一時間登陸一次。
           * 
          @author Jun Li
           * 
          @version  $Revision: 1.0.2 $, $Date: 2009/01/05 $
           * 
          @since 1.0.0
           
          */

          public class SessionListener implements HttpSessionListener 

              Logger log 
          = Factory.getSingletonInstance().getLogger(SessionListener.class);
              
          public void sessionCreated(HttpSessionEvent event) {
              }
           

              
          public void sessionDestroyed(HttpSessionEvent event) {
                  HttpSession session 
          = event.getSession();
                  
          // 獲取存儲管理員的session
                  Object o = session.getAttribute(Constants.JPXX_ADMIN_LOGIN_USERNAME_SESSION);
                  
          if(o!=null){
                      String userName 
          = o.toString();
                      
          // 登陸的用戶都存儲在Hashtable中,用戶退出,從Hashtable中刪除該用戶
                      Factory.getUsers().remove(userName);
                      log.error(
          "刪除用戶:" + userName + "       " + new java.util.Date());
                  }

              }

          }

          說明:由于該類來自于項目,有很多操作都進行了封裝,您稍作修改即可正常使用。注釋掉Logger,聲明一個靜態變量private static Hashtable user = new Hashtable();在sessionCreated()方法中將剛登陸的用戶添加到user中。您還需要寫注銷的頁面(jsp或者servlet),在頁面里面調用session.invalidate(); 該方法會觸發sessionDestroyed()事件!

              第二部:將該監聽器注冊到web.xml
          <listener>
                  
          <listener-class>org.jpxx.sw.business.SessionListener</listener-class>
          </listener>
          說明:僅僅依靠session監聽器不可能100%可靠,有可能用戶不正常退出(例如直接關閉瀏覽器、系統斷電等等)。針對直接關閉瀏覽器有如下解決方案:在被關閉的頁面里面插入如下語句:
          <body scroll="no" onUnload="Jpxx.forceLogout();" onbeforeunload="Jpxx.forceLogout();">

          Jpxx.forceLogout()方法通過AJAX技術來強制注銷用戶,即調用session.invalidate()方法。

          轉載:http://www.jpxx.org/?tid=54
          主站蜘蛛池模板: 莆田市| 松江区| 大新县| 青冈县| 台安县| 保山市| 锦州市| 荥经县| 安泽县| 依兰县| 崇明县| 永定县| 兴和县| 巨鹿县| 阿图什市| 舒兰市| 特克斯县| 盐源县| 贺州市| 海丰县| 沭阳县| 无极县| 巫溪县| 崇左市| 乌兰浩特市| 余姚市| 江孜县| 舟山市| 科技| 谷城县| 怀柔区| 万安县| 思茅市| 武强县| 海盐县| 保康县| 荔浦县| 贡嘎县| 曲靖市| 都江堰市| 同心县|