用HttpSessionListener如何显示在线用户列表

jk3278jk 2004-03-29 12:04:08
现在正在做一个用户在线列表(已登陆),想用HttpSessionListener接口实现。

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

谢谢!!
...全文
287 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
duan123 2004-04-01
  • 打赏
  • 举报
回复
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;
}
}
jk3278jk 2004-04-01
  • 打赏
  • 举报
回复
没人理
jk3278jk 2004-04-01
  • 打赏
  • 举报
回复
这么简单的问题没人会吗?
jk3278jk 2004-04-01
  • 打赏
  • 举报
回复
哦,原来是这样。 谢谢!

程序写的不错!好。!
duan123 2004-04-01
  • 打赏
  • 举报
回复
你的疑问是对的

public static void createsession(HttpSessionEvent se ) {
UserObject user1 =(UserObject)se.getSession().getAttribute("UserObject");
这个方法是自定义的

是在用户登陆后调用的


SessionCounter.createsession(new HttpSessionEvent(session));
jk3278jk 2004-04-01
  • 打赏
  • 举报
回复
请教duanyuxy123 几个问题

public static void createsession(HttpSessionEvent se ) {
UserObject user1 =(UserObject)se.getSession().getAttribute("UserObject");
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
上面这行代码能否取得用户对象(UserObject)表示疑问???
因为此事件是session创建时产生的。你并没有对也不可能对session 赋值。你怎么获取? session刚建立,只有sessionID值其他均为空!!

if(v.contains(user1)==false){
v.add(user1);
activeSessions++;
System.out.println("====用户名称==============="+user1.getName());
System.out.println("====用户数量==============="+activeSessions);
}
}

能否说清楚一些??

再一个createsession好像不是HttpSessionListener的接口。你是如何使用的???


jk3278jk 2004-03-31
  • 打赏
  • 举报
回复
哦???
jk3278jk 2004-03-30
  • 打赏
  • 举报
回复
哦???
offsider 2004-03-30
  • 打赏
  • 举报
回复
www.1768.org 在线名单
jk3278jk 2004-03-29
  • 打赏
  • 举报
回复
to :swei412()
那应该怎么做? 还有什么接口能实现吗? 我要源码!

谢谢!!
swei412 2004-03-29
  • 打赏
  • 举报
回复
为什么一定要用HttpSessionListener呢
HttpSessionListener中有个sessionCreated(HttpSessionEvent se),在创建Session时被调用,所以要想在其中判断用户是否登陆比较难
jk3278jk 2004-03-29
  • 打赏
  • 举报
回复
谁使用application和session的做过聊天室? 如果做过那聊天室的话。这个问题就解决了
追求自由 2004-03-29
  • 打赏
  • 举报
回复
关注
jk3278jk 2004-03-29
  • 打赏
  • 举报
回复
没有人知道吗?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧