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
        
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM