怎样取得服务器中的所有session 想获得在线用户信息, 不能用你说的方法. 我是这样处理的: 用户一登录, 就在数据库中设置为已登录的标志, session无效时, 设置为"退出"标志. 然后通过查询数据库来判断一个用户是否已经登录. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用HttpSessionListener事件监听器即可! 用它监听所有session的上线下线 使用HttpSessionListener事件监听器即可,当SESSION 注册的时候,把信息放进MAP 或者其他容器,当SESSION 失效,删除,取的时候,直接取MAP。。个人建议。。 dennisjl(dennis) 得方法好实现,但是统计的可能不会很准 dennisjl(dennis)实现的方法有个缺点,就是:如果客户浏览器不是正常途径退出的时候就…… 我建议保存在application中一个变量。用一个Map来保存,这样你不但可以知道有多少人在线,并且还可以知道此人是谁。 又是统计在线用户的,给个例子你。大体的思路是:用户列表用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> 同意minisun2000(天生不专一)楼主的说法。 取得所有同时在线用户的信息不是用session,而是用application! 用SSH整合的项目有个空指针无法解决,望解答,感激... win7下tomcat的http://localhost:8080无法打开 关于IE7限制alert的问题! 我发在应用服务器子论坛的一个帖子,大家帮我看看,一起结贴 请教一个累死asp里split的方法(jsp的) 小弟想去北京找工作,(JAVA) weblogic 6.1 sp2 注册码??? 关于SVN的一个问题 跪求大神进来指导一下我这个菜鸟,跪谢 最近用腾讯云服务器出现的问题,求大神解答 高手求教.在weblogic下部署struts应用问题. jb工程导入问题?
用它监听所有session的上线下线
当SESSION 注册的时候,把信息放进MAP 或者其他容器,
当SESSION 失效,删除,取的时候,直接取MAP。。个人建议。。
大体的思路是:用户列表用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>