社区
Web 开发
帖子详情
怎样取得服务器中的所有session
victor_sun
2005-06-13 08:40:08
由于工作需要,我将用户信息放置在session中,我又一个模块是想取得所有同时在线用户的信息,所以小弟须取得服务器端所有的session,然后取得所有的在线用户的信息,不知各位大侠可否帮忙,不胜感激。
...全文
1554
14
打赏
收藏
怎样取得服务器中的所有session
由于工作需要,我将用户信息放置在session中,我又一个模块是想取得所有同时在线用户的信息,所以小弟须取得服务器端所有的session,然后取得所有的在线用户的信息,不知各位大侠可否帮忙,不胜感激。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jybbh
2005-06-15
打赏
举报
回复
mark
tys1105
2005-06-15
打赏
举报
回复
同意minisun2000(天生不专一)楼主的说法。
zouzhejun
2005-06-15
打赏
举报
回复
关注一下
minisun2000
2005-06-15
打赏
举报
回复
又是统计在线用户的,给个例子你。
大体的思路是:用户列表用HashMap保存,其中key为SessionID,value为Session中设置的username(可以为其他)属性值;当在Session中添加username(可以为其他)属性的时候向用户列表中添加用户;Session失效或者删除Session的username(可以为其他)属性的时候在用户列表中删除该用户。
可以判断Session失效,但是对特殊情况:如客户端关闭浏览器等没有办法处理
package com.test;
import javax.servlet.http.*;
import java.util.*;
public class SessionListener implements HttpSessionListener,HttpSessionAttributeListener{
private static HashMap hUserName = new HashMap();//保存sessionID和username的映射
/**以下是实现HttpSessionListener中的方法**/
/*创建session时,什么都不做*/
public void sessionCreated(HttpSessionEvent se){
}
/*session失效时,删除列表中用户信息*/
public void sessionDestroyed(HttpSessionEvent se){
hUserName.remove( se.getSession().getId() );
}
/**以下是实现HttpSessionAttributeListener中的方法**/
/*调用session.setAttribute("username","****")时,添加用户信息到列表中*/
public void attributeAdded(HttpSessionBindingEvent se){
if(se.getName().equals("username")){
hUserName.put(se.getSession().getId(),se.getValue());
}
}
/*调用session.removeAttribute("username","****")时,删除列表中用户信息*/
public void attributeRemoved(HttpSessionBindingEvent se){
if(se.getName().equals("username")){
if(hUserName.containsValue(se.getValue())){
Iterator iter = hUserName.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry)iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
if( ( (String)val ).equals(se.getValue()) ){
hUserName.remove(key);
}
}
}
}
}
/*调用更改"username"属性值时同时更改列表中用户信息*/
public void attributeReplaced(HttpSessionBindingEvent se){
if(se.getName().equals("username")){
if(hUserName.containsValue(se.getValue())){
Iterator iter = hUserName.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry)iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
if( ( (String)val ).equals(se.getValue()) ){
hUserName.remove(key);
hUserName.put(key,se.getValue());
}
}
}
}
}
/*返回用户列表*/
public static HashMap getList(){
return hUserName;
}
}
在WEB-INF下面的web.xml中配置监听
<listener>
<listener-class>com.test.SessionListener</listener-class>
</listener>
ytcx_lt_82
2005-06-15
打赏
举报
回复
ding
yb1682003
2005-06-15
打赏
举报
回复
我建议保存在application中一个变量。用一个Map来保存,这样你不但可以知道有多少人在线,并且还可以知道此人是谁。
hadecsdn
2005-06-15
打赏
举报
回复
关注中...
lyneville
2005-06-15
打赏
举报
回复
dennisjl(dennis)实现的方法有个缺点,就是:如果客户浏览器不是正常途径退出的时候就……
fengyue2001
2005-06-15
打赏
举报
回复
dennisjl(dennis) 得方法好实现,但是统计的可能不会很准
King6860
2005-06-15
打赏
举报
回复
使用HttpSessionListener事件监听器即可,
当SESSION 注册的时候,把信息放进MAP 或者其他容器,
当SESSION 失效,删除,取的时候,直接取MAP。。
个人建议。。
良少
2005-06-15
打赏
举报
回复
使用HttpSessionListener事件监听器即可!
用它监听所有session的上线下线
liwenchao
2005-06-15
打赏
举报
回复
取得所有同时在线用户的信息不是用session,而是用application!
dennis
2005-06-15
打赏
举报
回复
想获得在线用户信息, 不能用你说的方法.
我是这样处理的: 用户一登录, 就在数据库中设置为已登录的标志, session无效时, 设置为"退出"标志. 然后通过查询数据库来判断一个用户是否已经登录.
hxc0906
2005-06-14
打赏
举报
回复
帮你顶
php如何保存
服务器
会话,关于PHP
中
保存在
服务器
中
的对应会话的
SESSION
内容会改变的问题...
用户在登录后,
SESSION
中
的token值在半小时后自动更新,引发会话超时,尽管数据库
中
的token保持不变。问题可能是由于未设置的会话超时或
服务器
配置导致的。监控显示
session
文件
中
的token发生了变化,导致与数据库
中
的token校验失败,进而触发重新登录提示。需要检查
session
管理、
服务器
设置及可能的自动更新机制。
session
存在
服务器
什么位置,Web开发
中
的
Session
详解及原理分析
本文深入探讨了Web开发
中
的Http
Session
机制,解释了HTTP协议无状态特性与
Session
状态保持的关系。详细阐述了
Session
的工作原理,包括
Session
ID的生成、传递和使用,以及
Session
的生命周期。此外,还介绍了Cookie机制,讨论了
Session
在分布式环境下的共享问题和解决方案,特别提到了Spring
Session
在解决
Session
共享问题上的作用和优势。
cookie是
服务器
状态管理机制,Web开发
中
的
Session
详解及原理分析
本文详细介绍了Web开发
中
的
Session
和Cookie机制。
Session
主要用于保持用户状态,其生命周期和管理由
服务器
端负责,而Cookie是保存在客户端,用于在用户多次访问同一网站时保持状态。当涉及到分布式系统的
Session
共享时,可以使用Spring
Session
配合Redis等存储方式进行管理。文章还讨论了Spring
Session
在分布式环境下的解决方案,以及其优点和存储方式。
分布式
服务器
中
的
Session
(会话)管理
本文探讨了在大型分布式网站
中
实现高可用性的会话管理方法,包括会话复制、会话粘滞、利用Cookie保存
Session
及使用独立的
Session
服务器
等技术手段。
session
在不同
服务器
中
的共享代码
本文介绍了一个使用MySQL存储PHP
Session
数据的自定义实现方案。通过创建一个
Session
类来处理与数据库的交互,包括打开连接、读取、写入、销毁会话数据及垃圾回收等操作。此外还介绍了如何设置跨子域共享
Session
以及多
服务器
间共享
Session
的方法。
Web 开发
81,111
社区成员
341,727
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章