zoukankan      html  css  js  c++  java
  • session 控制单点登录

    在我登录成功之后,我会

    session.setAttribute("user", userMap);//设置session

    所以就写了一个监听器来控制登录的。

    package org.system.utils;
    
    import java.util.Map;
    import java.util.concurrent.ConcurrentHashMap;
    
    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpSessionAttributeListener;
    import javax.servlet.http.HttpSessionBindingEvent;
    
    public class OnlineUserListener implements HttpSessionAttributeListener {
        private final static ConcurrentHashMap<Integer, HttpSession> onlineMap = new ConcurrentHashMap<>();
    
        @Override
        public void attributeAdded(HttpSessionBindingEvent event) {
            /* 获取session里面的用户信息 */
            @SuppressWarnings("unchecked")
            Map<String, Object> userMap = (Map<String, Object>) event.getSession().getAttribute("user");
            int userId = (int) userMap.get("id");
            if (onlineMap.containsKey(userId)) {
                onlineMap.get(userId).invalidate();
            }
            onlineMap.put(userId, event.getSession());
            
            HttpSessionAttributeListener.super.attributeAdded(event);
        }
    
    }

    在web.xml里配置监听器

     <listener>
            <listener-class>org.system.utils.OnlineUserListener</listener-class>
        </listener> 
  • 相关阅读:
    题解-CF468E Permanent
    CSP2021 游记
    二项式系数相关
    欧拉反演
    欧拉函数
    [快速幂]1
    GMT绘制地形起伏
    华为mate8双击唤醒屏幕
    回家乡了
    CSP-S2021
  • 原文地址:https://www.cnblogs.com/hellokitty1/p/9773931.html
Copyright © 2011-2022 走看看