当前位置: 技术问答>java相关
谁会JSP-在线人员统计
来源: 互联网 发布时间:2015-09-14
本文导语: 有没有用过JSP做的在线人数统计的朋友? 敬请指点指点 | 1.肯定有一个登录页面,form提交用户名、密码等信息post给服务器。 2.服务器上的servlet接收客户端的数据,然后取数据库中的记录,得...
有没有用过JSP做的在线人数统计的朋友? 敬请指点指点
|
1.肯定有一个登录页面,form提交用户名、密码等信息post给服务器。
2.服务器上的servlet接收客户端的数据,然后取数据库中的记录,得到用户的相关信息,判断用户合法性。
3.如果身份检查通过,即登录成功,那么就可以将该用户的相关信息记录下来。
public class UserConnect {
String m_strUser = "";
String m_strPWD = "";
String m_strLang = "";
public void setUser(String strUser) {
m_strUser = strUser;
}
public void setLang(String strLang) {
m_strLang = strLang;
}
public String getUser() {
return m_strUser;
}
public String getLang() {
return m_strLang;
}
}
4.将这些用户类存放在HashMap中。
public class UserConnectList {
HashMap m_UserConnectMap;
public UserConnectList() {
m_UserConnectMap = new HashMap();
}
public void add(String strSign, UserConnect userConnect){
if (userConnect != null && !m_UserConnectMap.containsKey(strSign))
m_UserConnectMap.put(strSign, userConnect);
}
public void remove(String strSign){
if (m_UserConnectMap.containsKey(strSign))
m_UserConnectMap.remove(strSign);
}
public int size() {
return m_UserConnectMap.size();
}
public Iterator beginIterator() {
return m_UserConnectMap.values().iterator();
}
public UserConnect find(String strSign) {
return (UserConnect) m_UserConnectMap.get(strSign);
}
public boolean isEmpty() {
return m_UserConnectMap.isEmpty();
}
}
5.取在线人数的时候,就可以从servlet中取得UserConnectList即可。
2.服务器上的servlet接收客户端的数据,然后取数据库中的记录,得到用户的相关信息,判断用户合法性。
3.如果身份检查通过,即登录成功,那么就可以将该用户的相关信息记录下来。
public class UserConnect {
String m_strUser = "";
String m_strPWD = "";
String m_strLang = "";
public void setUser(String strUser) {
m_strUser = strUser;
}
public void setLang(String strLang) {
m_strLang = strLang;
}
public String getUser() {
return m_strUser;
}
public String getLang() {
return m_strLang;
}
}
4.将这些用户类存放在HashMap中。
public class UserConnectList {
HashMap m_UserConnectMap;
public UserConnectList() {
m_UserConnectMap = new HashMap();
}
public void add(String strSign, UserConnect userConnect){
if (userConnect != null && !m_UserConnectMap.containsKey(strSign))
m_UserConnectMap.put(strSign, userConnect);
}
public void remove(String strSign){
if (m_UserConnectMap.containsKey(strSign))
m_UserConnectMap.remove(strSign);
}
public int size() {
return m_UserConnectMap.size();
}
public Iterator beginIterator() {
return m_UserConnectMap.values().iterator();
}
public UserConnect find(String strSign) {
return (UserConnect) m_UserConnectMap.get(strSign);
}
public boolean isEmpty() {
return m_UserConnectMap.isEmpty();
}
}
5.取在线人数的时候,就可以从servlet中取得UserConnectList即可。
|
大概的可以做,
如果要很精确的,就很难了
如果要很精确的,就很难了
|
可以这样设计,
登录页面用jsp做。提交的数据通过servlet,将用户相关信息存在servlet中,用“用户类”存放用户信息,用HashMap存放各个用户类。
取在线用户时,就从HashMap中取出用户类即可。
当用户关闭浏览器时,提交退出数据到servlet,然后讲该用户从HashMap中删除。
登录页面用jsp做。提交的数据通过servlet,将用户相关信息存在servlet中,用“用户类”存放用户信息,用HashMap存放各个用户类。
取在线用户时,就从HashMap中取出用户类即可。
当用户关闭浏览器时,提交退出数据到servlet,然后讲该用户从HashMap中删除。
|
用数据库呀!建一个登陆状态的项次,其他的就是用户的信息了,当用户登陆时,update其登陆状态为1,下线就为0,这样选择出状态为1的就是在线人员了呀!
如果你需要即时在线,也可以使用application做的
如果你需要即时在线,也可以使用application做的
|
用数据库或者文件来处理好。
|
cuicen_simon(simon) 说的再详细一点
goatherd7807() 如果用户不登陆怎么办
goatherd7807() 如果用户不登陆怎么办
|
关键是怎么才能知道用户下线,前提是不依赖于客户端。各位有什么好的建议吗?
|
做一个
foo.html 不停的刷新自己
然后用session是否过期来判断用户是否在
可以setMaxSessionInactiveInterval()来设置session活动间隔
foo.html 不停的刷新自己
然后用session是否过期来判断用户是否在
可以setMaxSessionInactiveInterval()来设置session活动间隔
|
如果不依赖客户端就想知道用户什么时候下线,只有用超时来控制。不过这样不能准确地得到用户离线的时间。
|
实时的统计好象很困难。
统计一个时间段之内那就有很多方法。
你自己熟悉什么就使用什么啊。
假如一定有一个登陆界面,或者指定从一个页面进入系统那比较好办。
但你还需要考虑Cookies登陆的问题之内的。
统计一个时间段之内那就有很多方法。
你自己熟悉什么就使用什么啊。
假如一定有一个登陆界面,或者指定从一个页面进入系统那比较好办。
但你还需要考虑Cookies登陆的问题之内的。
|
基于http协议是无连接的,所以要实时统计理论上是很难做到的,现在的统计都是一段时间内的人数
|
关注
|
我有一个更好的办法,蜚简单,功能实现了就准确,绝对没有误差;
----------------------------------------------------
每一台客户机登录一个网站就有一个唯一的上网ip地址;在Jsp程序中捕捉这一个客户端的ip地址,将其写入数据库,每分钟自动对数据库的ip地址进行检测,看是否是通的;如果不通,则删除数据库中的该条记录;
------------------------------------------------------
有没有人将上面的思路实现?
如能实现将代码贴出来?
----------------------------------------------------
每一台客户机登录一个网站就有一个唯一的上网ip地址;在Jsp程序中捕捉这一个客户端的ip地址,将其写入数据库,每分钟自动对数据库的ip地址进行检测,看是否是通的;如果不通,则删除数据库中的该条记录;
------------------------------------------------------
有没有人将上面的思路实现?
如能实现将代码贴出来?
|
楼上的,
想得美,INTER网上IP,
很多都是代理上网的,相同IP么办呢?
想得美,INTER网上IP,
很多都是代理上网的,相同IP么办呢?
|
呵呵 是啊
现在都是较粗略的统计
小功能 也不必太认真
现在都是较粗略的统计
小功能 也不必太认真
|
不过 要是确实想很精确的话
也是可以的
你可以参考一下 有关 点对点聊天的程序
改写一下就能实现你的要求
也是可以的
你可以参考一下 有关 点对点聊天的程序
改写一下就能实现你的要求
|
偶会一点点
|
用Session呀
|
我也是想用Session + 数据库做,可我没不知jsp 中的Session 存数据库是不是需要怎样配置, 还有它的失效时间方面