zoukankan      html  css  js  c++  java
  • 利用listener实现无法使用同一用户登陆多次

    实现代码如下:

    public class LoginSessionListener implements HttpSessionAttributeListener {  //通过实现此接口完成对session中的属性值变化监听
        
        private static final String LOGIN_USER="loginUser";
    
        @Override
        public void attributeAdded(HttpSessionBindingEvent hsbe) {
            String attrName = hsbe.getName();//监听到session属性值发生添加操作,获取对应操作的属性名
            
            if(LOGIN_USER.equals(attrName)){//若属性名为登录属性名,判定为用户登录操作
                String attrVal = (String)hsbe.getValue();//获取添加的属性值,即用户登录名
                HttpSession session = hsbe.getSession();//该次操作的session对象
                String sessionId = session.getId();//该次操作的session对象ID
                
                String sessionId2 = LoginCache.getInstance().getSessionIdByUsername(attrVal);//从缓存对象里面,获得该用户登录名对应的sessionID值
                if(null == sessionId2){//未获得结果,不需要清理前次登录用户会话信息
                    
                }else{
                    HttpSession session2 = LoginCache.getInstance().getSessionBySessionId(sessionId2);//获取前次该用户登录对应的session对象
                    session2.invalidate();//清理前次登录用户会话存储信息,使得前次登录失效
                }
                
                //完成该次登录用户登录名、sessionID,session对象的缓存对象存储
                LoginCache.getInstance().setSessionIdByUserName(attrVal, sessionId);
                LoginCache.getInstance().setSessionBySessionId(sessionId, session);
                
            }
    
        }
    
        @Override
        public void attributeRemoved(HttpSessionBindingEvent arg0) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void attributeReplaced(HttpSessionBindingEvent arg0) {
            // TODO Auto-generated method stub
    
        }
    
    }
  • 相关阅读:
    Andorid手机振动器(Vibrator)的使用
    Log.i()的用法
    刀哥多线程现操作gcd-10-delay
    刀哥多线程全局队列gcd-09-global_queue
    刀哥多线程Barrier异步gcd-08-barrier_async
    刀哥多线程同步任务作用gcd-07-sync_task
    刀哥多线程之主队列gcd-06-main_queue
    刀哥多线程之并发队列gcd-05-dispatch_queue_concurrent
    刀哥多线程串行队列gcd-04-dispatch_queue_serial
    刀哥多线程之03GCD 常用代码
  • 原文地址:https://www.cnblogs.com/shouyaya/p/12064019.html
Copyright © 2011-2022 走看看