zoukankan      html  css  js  c++  java
  • session用户账号认证(一个用户登陆,踢出前一个用户)

    在web.xml中配置:

    <listener>
        <listener-class>cn.edu.hbcf.common.listener.SessionAttributeListener</listener-class>
      </listener>

    然后写一个实体类:

    package cn.edu.hbcf.common.listener;
    
    import java.util.Map;
    import java.util.concurrent.ConcurrentHashMap;
    
    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpSessionAttributeListener;
    import javax.servlet.http.HttpSessionBindingEvent;
    
    import cn.edu.hbcf.common.constants.WebConstants;
    import cn.edu.hbcf.privilege.pojo.BaseUsers;
    
    public class SessionAttributeListener implements HttpSessionAttributeListener {
    
         public static Map<String, HttpSession> sessionMap=new ConcurrentHashMap<String, HttpSession>();  
         @Override 
         public void attributeAdded(HttpSessionBindingEvent arg0) { 
             if(arg0.getName().equals(WebConstants.CURRENT_USER)){
                // Enumeration session = arg0.getSession().getServletContext().getAttributeNames();
                 HttpSession session = arg0.getSession();
            //     ServletContext application = session.getServletContext();
                 BaseUsers user = (BaseUsers)session.getAttribute(WebConstants.CURRENT_USER);
                 if(sessionMap.containsKey(user.getAccount())){//踢掉前一次登录    
                     try {
                        HttpSession session2=sessionMap.remove(user.getAccount());    
                         session2.invalidate();
                    } catch (Exception e) {
                    }   
                    // application.removeAttribute(user.getAccount());
                }   
                sessionMap.put(user.getAccount(), session);  
            //    application.setAttribute(user.getAccount(), user);
             }
            
         }
        @Override
        public void attributeRemoved(HttpSessionBindingEvent arg0) {
        }
        @Override
        public void attributeReplaced(HttpSessionBindingEvent se) {
            // TODO Auto-generated method stub
            
        }
    
    }
  • 相关阅读:
    Shortest path of the king
    二分查找c++简单模板
    2017广东工业大学程序设竞赛B题占点游戏
    2017广东工业大学程序设竞赛C题爬楼梯
    2017广东工业大学程序设竞赛E题(倒水)
    p1250 种树 贪心
    P1248 加工生产调度 贪心
    P1209 [USACO1.3]修理牛棚 Barn Repair 贪心
    P1607 [USACO09FEB]庙会班车Fair Shuttle 贪心
    P2602 [ZJOI2010]数字计数 数位dp
  • 原文地址:https://www.cnblogs.com/zrui-xyu/p/4936899.html
Copyright © 2011-2022 走看看