如何做在线用户名单?

gdsean 2002-07-31 08:02:46
有三种用户:
1。guest
2。登陆后信息保存在session里面的
3。用cookie登陆的


考虑了两种办法:
1。列举所有session对象检查里面保存的信息确定用户身份
但是好像没有这个技术
2。然后按一般思路解决办法:登陆的时候在application或者数据库注册状态
离开的时候修改不在线状态。
问题是无法正确知道用户退出行为(关闭IE等等)

谁能给点提示?
...全文
91 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yun15291li 2002-08-04
  • 打赏
  • 举报
回复
你可以建个表存放在线人名单呀。
当用户登陆时候存储一个session
然后判断此session是否为空。
不为空就加入数据库。
从库中读取在线名单。
退出的时候从库中消除该用户就可以了。
在定义个iserrorpage页面。
如果用户非法退出session过期清除数据库就可以了吧。
不知道说得对不对。
见笑了。
gdsean 2002-08-04
  • 打赏
  • 举报
回复
在sun问了一下得到回答如下:
Since you cannot access other sessions besides the current one, you will need to store the current users somewhere other than the session. Here is an option.

public class User implements HttpSessionBindingListener{
private String userid ;
private MyServlet servlet ;
public User(Stirng userid, MyServlet servlet) { this.userid = userid;
this.servlet = servlet ;
} //assume standard accessor Methods.
public void valueBound(HttpSessionBindingEvent ev) { getServlet().currentUsers.addElement( getUserID() );
}
public void valueUnBound(HttpSessionBindingEvent ev) {
for(int i = 0; i < getServlet().currentUsers.size(); i++) {
if( ((User)getServlet().currentUsers.elementAti)).getUserID().equals( getUserID() ) )
{
getServlet().currentUsers.remove(i);
break ;
}
}
}}

public class MyServlet extends HttpServlet{
public Vector currentUsers ;
}
Then, you can access the servlets currentUsers vector for a list of current users. Readup on HttpSessions and the HttpSessionBindingListener classes.

You will put the person's information in a Bean and then store it in the session when they logon/return/etc. The Listener handles the rest.
Eddie 2002-08-01
  • 打赏
  • 举报
回复
如果用数据库那错误处理需要更完善。

而且需要对所有在线的用户进行监视,以防断线或是没有按要求退出的用户长期处于在线状态,否则他们不正常退出后,以后就进入不来了。

这样一来,对服务器的需求就很大.......效率显然会随着用户的增加而越来越低.......

ziyang 2002-08-01
  • 打赏
  • 举报
回复
我认为用<body onunload="exit.jsp">然后在exit.jsp里面处理比较好一点。
pei_yanni 2002-08-01
  • 打赏
  • 举报
回复
楼上的,如果用户直接关闭浏览器,而不签退呢?
goatherd7807 2002-08-01
  • 打赏
  • 举报
回复
我想给你一个我的执行程序想法:(使用数据库)
1、用户登陆时,update数据库中他的登陆信息为在线(比如在线为1、下线为0);
2、用户下线后,update他的信息为0;
这样可以很准确的反映用户是否在线!
gdsean 2002-07-31
  • 打赏
  • 举报
回复
包含了<body onunload="exit.jsp">
页面有错误。。。
可乐加水 2002-07-31
  • 打赏
  • 举报
回复
我觉得一般的使用application来保存,
然后用<body onunload="exit.jsp">
来处理用户退出的问题
还可以用session绑定
Tomcat4 2002-07-31
  • 打赏
  • 举报
回复
老问题了,在onUnload事件里想办法!
<body onunload="exit.jsp">

81,122

社区成员

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

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