⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sessionmanager.java

📁 本程序是作者开发的一个宽带娱乐系统的一个模块.
💻 JAVA
字号:
package com.singnet.util;


import java.util.ArrayList;
import java.util.Collection;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.http.HttpSession;
import com.singnet.common.UserInfo;
import com.singnet.common.UserOnlineInfo;
import java.text.ParseException;
import com.singnet.user.dao.UserOnlineDao;

public class SessionManager {
    /** 激活的session列表 */
    private static Map activeSessions = new Hashtable();
    /** 在线数据列表 */
    private static Map onlineMap = new Hashtable();
    private static SessionManager sm = new SessionManager();
    private static UserOnlineDao useronlinedao = new UserOnlineDao();
    private static String GUEST_ID="111111";
    public SessionManager() {
    }

    public SessionManager getSessionManager() {
        return sm;
    }

    /**
     * 清空session列表
     */
    public synchronized static void clearSession() {
        activeSessions.clear();
    }

    /**
     * 检索激活的session
     * 拷贝一个session副本列表
     */
    public static Collection getActiveSessions() {
        synchronized (activeSessions) {
            return new ArrayList(activeSessions.values());
        }
    }

    /**
     * 增加一个session到当前列表,只限于监听器调用
     */
    public static void addSession(HttpSession session) {
        activeSessions.put(session.getId(), session);
        SysUtils.addAccessCount();
    }

    /**
     * 删除一个session从当前列表,只限于监听器调用
     */
    public static void removeSession(HttpSession session) {
        activeSessions.remove(session.getId());
        removeOnline(session.getId());
    }


    /**
     * 判断一个用户是否登录
     */
    public static boolean isUserLoggedIn(UserInfo user) {
        return getActiveUsers().contains(user);
    }

    /**
     * 检索所有在线会员
     */
    public static Collection getActiveUsers() {
        Collection users = null;
        synchronized (activeSessions) {
            users = new ArrayList((int) (activeSessions.size() * 0.7));
            for (Iterator i = activeSessions.values().iterator(); i.hasNext(); ) {
                UserInfo u = getUserFromSession((HttpSession) i.next());
                if (u != null && u.getUid() != GUEST_ID) {
                    users.add(u);
                }
            }
        }
        return users;
    }

    /**
     * 检索所有游客
     */
    public static Collection getGuests() {
        Collection users = null;
        synchronized (activeSessions) {
// Pre-allocate a list which won't need expansion more
// than once.
            users = new ArrayList((int) (activeSessions.size() * 0.7));
            for (Iterator i = activeSessions.values().iterator(); i.hasNext(); ) {
                UserInfo u = getUserFromSession((HttpSession) i.next());
                if (u == null) {
                    users.add(u);
                }
            }
        }
        return users;
    }

    /**
     * 从指定的session中获得一个用户对象
     */
    public static UserInfo getUserFromSession(HttpSession session) {
        return (UserInfo) session.getAttribute("onlineuser");//存储在session中的用户信息
    }

    /**
     * 从当前列表取出一个session
     */
    public static HttpSession getSession(String sessionId) {
        return (HttpSession) activeSessions.get(sessionId);
    }

    /**
     * 检索一个用户所有的session对象,当多个客户端使用一个用户登录时有用
     */
    public static Collection getSessionsForUser(UserInfo user) {
        Collection sessions = new ArrayList();
        synchronized (activeSessions) {
            for (Iterator i = activeSessions.values().iterator(); i.hasNext(); ) {
                HttpSession session = (HttpSession) i.next();
                UserInfo u = getUserFromSession(session);
                if (user.equals(u)) {
                    sessions.add(session);
                }
            }
        }
        return sessions;
    }

    /**
     * 增加一个在线数据对象到在线数据列表,同时保存到数据库
     * @param sessionid
     * @param online
     * @throws BaseException
     */
    public static void addOnline(String sessionid, UserOnlineInfo online) {
        try {
            SysUtils.addAccessCount();
            //保存到数据库
            useronlinedao.save(online);
        } catch (Exception e) {
         e.printStackTrace();
        }
        onlineMap.put(sessionid, online);
    }

    /**
     * 删除一个在线数据对象,并设置退出时间保存到数据库
     * @param sessionid
     */
    public static void removeOnline(String sessionid) {
        if (StringUtils.isNotEmpty(sessionid)) {
            UserOnlineInfo online = (UserOnlineInfo) onlineMap.get(sessionid);
            if (null != online) {
                try {
                    //online.setOnlineOuttime(StringUtils.getLongDate());
                    //删除一个在线用户
                    useronlinedao.save(online);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            onlineMap.remove(sessionid);
        }
    }

}
/*
public void setLoginUser(XidooUser user, boolean bool)
throws BaseException
{
if (bool)
{
getRequest().getSession().setAttribute("openheart", user);
setACL(user);
XidooOnline online = new XidooOnline();
online.setUserId(user.getUserId());
online.setOnlineIntime(StringUtils.getLongDate());
online.setOnlineIp(getRequest().getRemoteAddr());
SessionManager.addOnline(getRequest().getSession().getId(),online);
} else
{
getRequest().getSession().setAttribute(LOGIN_USER, getAnonymousUser());
setACL(user);
SessionManager.removeOnline(getRequest().getSession().getId());
}
}
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -