`
Black_Sun
  • 浏览: 20486 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

系统记录当前在线用户列表

 
阅读更多
public class SessionListener implements HttpSessionListener,
	HttpSessionAttributeListener {

private static HashMap<String, SysUser> userMap = new HashMap<String, SysUser>();// 保存sessionID和user的映射

private static HashMap<String, HttpSession> sessionMap = new HashMap<String, HttpSession>();// 保存sessionID

/** 以下是实现HttpSessionListener中的方法* */
/* 创建session时 */
public void sessionCreated(HttpSessionEvent se) {}

/* session失效时,删除列表中用户信息 */
public void sessionDestroyed(HttpSessionEvent se) {
	userMap.remove(se.getSession().getId());
	sessionMap.remove(se.getSession().getId());
}

/** 以下是实现HttpSessionAttributeListener中的方法* */
/* 调用session.setAttribute( "user", "**** ")时,添加用户信息到列表中 */
public void attributeAdded(HttpSessionBindingEvent se) {
	if (se.getName().equals("user")) {
		userMap.put(se.getSession().getId(), (SysUser) se.getValue());
	}
}

/* 调用session.removeAttribute( "user", "**** ")时,删除列表中用户信息 */
public void attributeRemoved(HttpSessionBindingEvent se) {
	if (se.getName().equals("user")) {
		LoginServlet.userLogout(se.getSession());
		userMap.remove(se.getSession().getId());
	}
}

/* 调用更改 "user "属性值时同时更改列表中用户信息 */
@SuppressWarnings("unchecked")
public void attributeReplaced(HttpSessionBindingEvent se) {}

/* 返回用户列表 */
public static HashMap getList() {
	return userMap;
}

public int getOnlineNumber() {
	return userMap.size();
}

public synchronized static HashMap<String, HttpSession> getSessionMap() {
	return sessionMap;
}

public static HashMap<String, SysUser> getUserMap() {
	return userMap;
}
2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics