首页 新闻 会员 周边

struts2里如何实现回话跟踪

0
悬赏园豆:100 [待解决问题]

如题,谢谢!

全世界无眠的主页 全世界无眠 | 初学一级 | 园豆:0
提问于:2011-07-05 13:07
< >
分享
所有回答(2)
0

获取session,用弱引用存储起来。通过比较最后连接时间和session过期时间可以跟踪session销毁等

joseph chong | 园豆:224 (菜鸟二级) | 2011-07-05 13:14
能再详细点吗
支持(0) 反对(0) 全世界无眠 | 园豆:0 (初学一级) | 2011-07-05 13:16
获取session可以用:((HttpServletRequest)ActionContext.getContext().get(HTTP_REQUEST)).getSession()
获取之后你可以存储到容器里,个人建议用WeakReference包装。
至于销毁监听什么的,可以起一个后台线程,遍历一下session,比较session的最后连接时间和session的等待时间
支持(0) 反对(0) joseph chong | 园豆:224 (菜鸟二级) | 2011-07-05 13:25
还有个比较简单的就是写Listener
支持(0) 反对(0) joseph chong | 园豆:224 (菜鸟二级) | 2011-07-05 13:27
HttpSessionAttributeListener,HttpSessionListener
前者是对session属性进行监听,后者可以监听session的创建和销毁
支持(0) 反对(0) joseph chong | 园豆:224 (菜鸟二级) | 2011-07-05 13:29
0

自己实现一个Application ,比如用 HashTable 或者其他结构体,保存登录的用户.配合拦截器和listener.可以实现任何你想要的.

如:

你可以有意识的控制某个会话的结束时间.实时的监控某用户的操作等.只要你想...

jifsu | 园豆:215 (菜鸟二级) | 2011-07-05 19:04
比如:
//@singleton 表示单例
final class AppSystem{
List onlineUsers = new ArrayList();

// any method
//@sync 表示同步
void adduser();
void removeUser();
boolean isOnline(User user);
......
}

class User{
int id;
String name;
String sessionId;
Date loginDate;
String currentPage;
.......
}
支持(0) 反对(0) jifsu | 园豆:215 (菜鸟二级) | 2011-07-05 19:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册