请问如何统计在线人数

yufan916 2009-06-24 07:57:32
给客户做了个网站,客户要求统计在线人数,包括不登录的,打开网页的,都算,这样用session就不行了,请问有什么好办法.急急急.
...全文
101 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
铁匠梁 2009-07-04
  • 打赏
  • 举报
回复
直接把登陆的IP地址当做一个用户可以不,一个机器上登录几个用户算做一个
xuexijava 2009-07-04
  • 打赏
  • 举报
回复
关注
CTO1206 2009-07-04
  • 打赏
  • 举报
回复
“包括不登录的,打开网页的,都算”是不是只要打开了网页就算??楼主说话要表达清楚哦!!
waya1222 2009-07-03
  • 打赏
  • 举报
回复
用集合放到session里面,然后取出判断集合的长度,集合的size()就行吧
ZiSheng 2009-06-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 DryKillLogic 的回复:]
引用 9 楼 ZiSheng 的回复:
用session监听,创建一个session的时候,说明一个用户来了,
销毁一个session的时候,说明一个用户走了,
登录一个用户的时候,说明是注册用户,
另外在销毁一个session的时候,你判断下是不是注册用户,不就完了,
这就会统计出在线用户,在线的注册会员了。




然后怎么统计出在线人数呢?可以判断session的数量吗?
[/Quote]
写个类,包含两个静态成员,一个是在线人数,一个是登录的注册用户,来个session
加一,走个session减一,不就得了。
Sou2012 2009-06-28
  • 打赏
  • 举报
回复
Publisher or DB
fskjb01 2009-06-27
  • 打赏
  • 举报
回复
用APPLICATION啦,这个和SESSION是JSP的9个隐含对象之一,它的作用域比SESSION要大!!
yang677888 2009-06-27
  • 打赏
  • 举报
回复
看看,学习啦
ddyouyue 2009-06-27
  • 打赏
  • 举报
回复
http是无状态协议,服务器无法保持连接,通过Session服务器可以保持会话
不登陆也是有session产生的,我觉得session可行。
xihui912 2009-06-27
  • 打赏
  • 举报
回复
打开浏览器 就有session了啊 用监听器吧
robyjeffding 2009-06-27
  • 打赏
  • 举报
回复
session监听器能够很好地统计用户在线人数的功能!
DryKillLogic 2009-06-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ZiSheng 的回复:]
用session监听,创建一个session的时候,说明一个用户来了,
销毁一个session的时候,说明一个用户走了,
登录一个用户的时候,说明是注册用户,
另外在销毁一个session的时候,你判断下是不是注册用户,不就完了,
这就会统计出在线用户,在线的注册会员了。
[/Quote]


然后怎么统计出在线人数呢?可以判断session的数量吗?
ZiSheng 2009-06-25
  • 打赏
  • 举报
回复
用session监听,创建一个session的时候,说明一个用户来了,
销毁一个session的时候,说明一个用户走了,
登录一个用户的时候,说明是注册用户,
另外在销毁一个session的时候,你判断下是不是注册用户,不就完了,
这就会统计出在线用户,在线的注册会员了。
starnight_cbj 2009-06-25
  • 打赏
  • 举报
回复
做一个全局静态的变量来存吧,或者用数据库来存存
archko 2009-06-25
  • 打赏
  • 举报
回复
HttpSessionBindingListener 实现这个的似乎是有操作session比如session.setAttribute("user",user);这样的,可以计算登录的用户有多少.
再上面的那个呢,可以计算所有在这个网站的人数有多少.了一个用户一个session,包括不登录的.
不知道这样说对不.
网站上看到的,在线人数,注册用户两个区别是不是这两个的区别啊.
shuai45 2009-06-24
  • 打赏
  • 举报
回复
就是找一容器存放数据吗
fys249931556 2009-06-24
  • 打赏
  • 举报
回复

import java.util.Map;
import java.util.HashMap;
import javax.servlet.http.*;
import javax.servlet.ServletContext;
public class UserInfo implements HttpSessionBindingListener {
// 用户信息
int userId;
String userName;
......
/**
* 当UserInfo类被绑定到session中时触发这个事件
* 具体信息请参见Servlet/JSPs的规范
*/
public void valueBound(HttpSessionBindingEvent event) {
HttpSession session = event.getSession ();
ServletContext ctx = session.getServletContext ();
Map map = (Map)ctx.getAttribute ("users");
if (map == null) { // 如果是服务器启动后的第一个登录用户,新建一个容器
map = new HashMap ();
ctx.setAttribute ("users", map);
}
map.put (userName, this.userName); // 把自己加入容器中
}
/**
* 当UserInfo类从session中删除时触发这个事件
* 具体信息请参见Servlet/JSPs的规范
*/
public void valueUnbound(HttpSessionBindingEvent event) {
HttpSession session = event.getSession ();
ServletContext ctx = session.getServletContext ();
Map map = (Map)ctx.getAttribute ("users");
map.remove (this.userName); // 把自己从容器中删除
}
......
}




JSP页面中使用以下代码:


<%
int userCount = 0;
java.util.Map map = (java.util.Map)application.getAttribute ("users");
if (map == 0) userCount = 0;
else userCount = map.size ();
%>;


fys249931556 2009-06-24
  • 打赏
  • 举报
回复
session 跟登录不登录没有关系。。。楼主搞清楚基础概念哦。。

cl55 2009-06-24
  • 打赏
  • 举报
回复
"包括不登录的,打开网页的,都算,这样用session就不行了", 他不登录也是有session的。
qiheia 2009-06-24
  • 打赏
  • 举报
回复
我晕,没看清楚内容,白答了。。。。。。。
加载更多回复(1)

81,094

社区成员

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

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