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

📄 sessionmap.java

📁 本平台是以web2.0为基本的标准
💻 JAVA
字号:
package com.afuer.chat;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * This map stores the user sessions.
 */
public class SessionMap {
    private static Map sessionMap = new HashMap();

    /**
     * Each item in the <code>SessionMap</code>.
     */
    public static class SessionItem implements Comparable {
        private String sessionId;
        private String ip;
        private Date lastAccessTime;
        private String user;

        public String getIp() {
            return ip;
        }

        public void setIp(String ip) {
            this.ip = ip;
        }

        public Date getLastAccessTime() {
            return lastAccessTime;
        }

        public void setLastAccessTime(Date lastAccessTime) {
            this.lastAccessTime = lastAccessTime;
        }

        public String getSessionId() {
            return sessionId;
        }

        public void setSessionId(String sessionId) {
            this.sessionId = sessionId;
        }

        public String getUser() {
            return user;
        }

        public void setUser(String user) {
            this.user = user;
        }

        public int compareTo(Object o) {
            if (o == null) {
                return -1;
            }
            if (!(o instanceof SessionItem)) {
                return -1;
            }
            SessionItem item = (SessionItem) o;
            if (this.user == null) {
                if (item.user == null) {
                    return this.ip.compareTo(item.ip);
                }
                else {
                    return 1;
                }
            }
            else {
                if (item.user == null) {
                    return -1;
                }
                else {
                    return this.user.toLowerCase().compareTo(item.user.toLowerCase());
                }
            }
        }

    }

    public static synchronized void access(String sessionId, String ip) {
        SessionItem item = (SessionItem) sessionMap.get(sessionId);
        if (item == null) {
            item = new SessionItem();
            item.sessionId = sessionId;
            item.ip = ip;
            item.lastAccessTime = new Date();
            sessionMap.put(sessionId, item);
        }
        else {
            item.lastAccessTime = new Date();
        }
    }

    public static synchronized List getUserList() {
        List list = new ArrayList();
        Set toBeRemoveSet = new HashSet();

        Date now = new Date();
        for (Iterator it = sessionMap.keySet().iterator(); it.hasNext();) {
            String key = (String) it.next();
            SessionItem item = (SessionItem) sessionMap.get(key);
            if (now.getTime() - item.getLastAccessTime().getTime() > 60000) {
                toBeRemoveSet.add(key);
            }
            else {
                list.add(item);
            }
        }

        for (Iterator it = toBeRemoveSet.iterator(); it.hasNext();) {
            sessionMap.remove(it.next());
        }

        Collections.sort(list);
        return list;
    }

    public static synchronized void setSessionUser(String sessionId, String user) {
        if (user != null && user.length() > 0) {
            SessionItem item = (SessionItem) sessionMap.get(sessionId);
            if (item != null) {
                item.user = user;
            }
        }
    }
}

⌨️ 快捷键说明

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