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币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 常用工具集参考用于图像等数据处理
- 音乐展示网页、基于Stenography的图像数字水印添加与提取,以及基于颜色矩和Tamura算法的图像相似度评估算法py源码
- 基于EmguCV(OpenCV .net封装),图像数字水印加解密算法的实现,其中包含最低有效位算法,离散傅里叶变换算法+文档书
- 基于matlab+DWT的图像水印项目,数字水印+源代码+文档说明+图片+报告pdf
- (优秀毕业设计)基于python实现的数字图像可视化水印系统的设计与实现,多种数字算法实现+源代码+文档说明+理论演示pdf
- 基于DWT-DCT-SVD和deflate压缩的数字水印方法python源码+Gui界面+演示视频(高分毕业设计)
- 基于matlab实现DWT、DCT、SVD算法数字图像水印可视化系统+GUI界面+文档说明+详细注释(高分毕业设计)
- NCIAE-Data-Structure大一大二笔记
- 学习wireshark笔记
- digital-image-数据可视化笔记
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功