您的位置:首页 > 其它

统计用户在线列表

2008-08-03 13:44 295 查看
现在正在做一个用户在线列表(已登陆),想用HttpSessionListener接口实现。

但发现好像HttpSessionListener只能统计在线人数。
不知有什么方法能实现? 就像聊天室里的那个在线列表一样的。

谢谢!!
---------------------------------------------------------------

package SessionCounter;

import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import com.oztime.right.UserObject;

public class SessionCounter implements HttpSessionListener {

private static int activeSessions = 0;
private static Vector v= new Vector();
public void sessionCreated(HttpSessionEvent se) {
}

public static void createsession(HttpSessionEvent se ) {
UserObject user1 =(UserObject)se.getSession().getAttribute("UserObject");
if(v.contains(user1)==false){
v.add(user1);
activeSessions++;
System.out.println("===================用户名称=================="+user1.getName());
System.out.println("===================用户数量=================="+activeSessions);
}

}

public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
UserObject user2=(UserObject)se.getSession().getAttribute("UserObject");
if(v.contains(user2)==true){
v.remove(user2);
activeSessions--;
System.out.println("===================removed=================="+user2.getName());
}

}
public static void Destroysession(UserObject user) {
//System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
//UserObject user3=(UserObject)se.getSession().getAttribute("UserObject");
System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"+user.getName());
if(v.contains(user)==true){
v.removeElement(user);
activeSessions--;
System.out.println("====================================="+user.getName()+"---退出登录!!!");
}

}

public static int getActiveSessions() {
return activeSessions;

}

public static Vector getVector() {
return v;
}
}

===========================================================
在用户登陆后调用的

SessionCounter.createsession(new HttpSessionEvent(session));

SessionCounter.Destroysession(user); //注user 为用户实体
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: