package org.apple.util.sessionmanager.sessioncontext;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import javax.servlet.http.HttpSession;
import org.apple.util.log.CommonsLogging;
/**
* @author SimpleOnline开发团队 曹正辉
*/
public class SessionContextManager {
private static CommonsLogging logging = new CommonsLogging(SessionContextManager.class);
public static Map<String, SessionContext> sessionContextMap = new HashMap<String, SessionContext>();
public static Map<String, SessionContext> getSessionContextMap() {
return SessionContextManager.sessionContextMap;
}
/**
* session创建的时候把一个SessionContext加入SessionContextManager
*/
public static void addSessionContent(SessionContext sessionContext) {
if (sessionContext == null) {
throw new RuntimeException("sessionContext为空");
}
if (SessionContextManager.sessionContextMap.containsKey(sessionContext.getSession().getId())) {
throw new RuntimeException("session id 重复");
} else {
SessionContextManager.sessionContextMap.put(sessionContext.getSession().getId(), sessionContext);
}
}
/**
* session创建销毁的时候把一个SessionContext从SessionContextManager删除
*/
public static void removeSessionContent(SessionContext sessionContext) {
if (sessionContext == null) {
logging.debug("sessionContext为空");
return;
}
if (SessionContextManager.sessionContextMap.containsKey(sessionContext.getSession().getId())) {
SessionContextManager.sessionContextMap.remove(sessionContext.getSession().getId());
logging.info("当前系统在线人数" + SessionContextManager.sessionContextMap.size());
} else {
logging.info("不能在sessionContextMap找到特定的sessionContext");
}
}
/**
* 根据sessionId把一个SessionContext从Sessio我们nContextManager删除:
* 这种情况是直接通过SessionContextManager操作Session的销毁。
*
* @return 一个SessionContext实例,这样可以手动控制session的销毁
*/
public static SessionContext removeSessionContent(String sessionId) {
if (sessionId == null) {
logging.debug("sessionId为空");
return null;
}
if (SessionContextManager.sessionContextMap.containsKey(sessionId)) {
SessionContext sessionContext = sessionContextMap.get(sessionId);
SessionContextManager.sessionContextMap.remove(sessionId);
logging.info("当前系统在线人数" + SessionContextManager.sessionContextMap.size());
return sessionContext;
} else {
logging.info("不能在sessionContextMap找到特定的sessionContext");
return null;
}
}
/**
* 简单的一个信息SessionContex显示。真正的和用户信息相关的SessionContex遍历需要自己实现
*/
public static void list() {
if (SessionContextManager.sessionContextMap != null && SessionContextManager.sessionContextMap.size() > 0) {
Set<Entry<String, SessionContext>> set = SessionContextManager.sessionContextMap.entrySet();
Iterator<Entry<String, SessionContext>> iterator = set.iterator();
logging.info("SessionContext信息遍历:当前session个数为" + sessionContextMap.size());
System.out.println();
while (iterator.hasNext()) {
Map.Entry<String, SessionContext> entry = iterator.next();
SessionContext sessionContext = entry.getValue();
HttpSession session = sessionContext.getSession();
logging.info("当前用户session为" + session + " session创建时间是" + session.getCreationTime() + " 已经使用了" + sessionContext.getHourSinceLogin() + "小时" + " sessionId为:" + session.getId() + " 最近session活动时间:" + session.getLastAccessedTime() + "用户是否登录" + sessionContext.isLogined());
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
session容器管理.zip (24个子文件)
SessionManager
.project 2KB
.mymetadata 302B
src
cn
pzhu
test
User.java 330B
UserLoginServlet.java 2KB
core
org
apple
util
sessionmanager
sessioncontextlistener
UserHttpSessionListener.java 2KB
sessioncontext
SessionContext.java 3KB
SessionContextManager.java 4KB
WebRoot
WEB-INF
classes
cn
pzhu
test
User.class 718B
UserLoginServlet.class 2KB
org
apple
util
sessionmanager
sessioncontextlistener
UserHttpSessionListener.class 2KB
sessioncontext
SessionContextManager.class 4KB
SessionContext.class 2KB
lib
servlet-api.jar 86KB
Apple-CommonsLogging.jar 508KB
web.xml 846B
index.jsp 834B
META-INF
MANIFEST.MF 36B
.myeclipse
.settings
org.eclipse.wst.jsdt.ui.superType.container 49B
org.maven.ide.eclipse.prefs 271B
org.eclipse.jdt.core.prefs 330B
org.eclipse.wst.jsdt.ui.superType.name 6B
com.genuitec.eclipse.j2eedt.core.prefs 1KB
.jsdtscope 500B
.classpath 452B
共 24 条
- 1
资源评论
- sunlina892014-12-10学习一下关于session的东西。 谢谢分享。
- danniel1632013-09-29关于session,我个人觉得还是有点难的,看了 这个源代码,觉得还不错。
战歌IT
- 粉丝: 122
- 资源: 2409
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功