java web 单点登录

来源:互联网 发布:姚明个人数据统计 编辑:程序博客网 时间:2024/04/28 11:15

本文主要介绍的是如何简单地实现 web版的单点登录,

主要是实现,用户把自己之前登录的账号挤下去

不说废话 直接上代码 

1,建立一个应用对象 

在登录的action中 

//创建application对象把所有登录的用户session存在里面

ServletContext application = request.getSession().getServletContext();
        Collection<HttpSession> sessions = null;
        if (application.getAttribute("usercount") == null) {
            sessions = new ArrayList<HttpSession>();
            application.setAttribute("usercount", sessions);
        } else {
            sessions = (Collection<HttpSession>) application
                    .getAttribute("usercount");
        }

//已登录处理登录的用户

new LoginManager().login(sessions, session);

//括号里面是LoginManager类 用来清除 同意用户之前的session

此类里面已经处理了 session过期 的问题

(package com.tenchong.util;

import java.util.ArrayList;
import java.util.Collection;

import javax.servlet.http.HttpSession;

import com.tenchong.entity.TuserEntity;

public class LoginManager {

    public HttpSession login(Collection<HttpSession> sessions,HttpSession session) {
        ArrayList<HttpSession> sessionde=new ArrayList<HttpSession>();
        for (HttpSession s : sessions) {

        
            try {
                if (((TuserEntity) s.getAttribute("user_session")).getId() == ((TuserEntity) session
                    .getAttribute("user_session")).getId()) {

                sessions.remove(s); // 移除集合中的重复session元素
                
                    s.invalidate();// 废弃之前登陆的session
                    break;
            

            }

            } catch (Exception e) {
                sessionde.add(s);
            } finally {
    
            }
        
    }
        for(int i=0;i<sessionde.size();i++){
            sessions.remove((HttpSession)sessionde.get(i));
        }
        sessions.add(session);
        return null;
}
}    )


2.处理这些之后 手动退出的时候 要清除 application中的对应session

在loginout的 action中


Collection<HttpSession> sessions = (Collection<HttpSession>) application
        .getAttribute("usercount");
        sessions.remove(session);//session 是  request,getsession();



0 0
原创粉丝点击