在J2EE中怎样实现一个用户只能同时登陆一次?
解决方案 »
- ibatis
- 关于strut2配置文件中 include问题
- FileUpload中upload.parseRequest(request)出错
- 小弟有一个scwcd的问题不是很确定,请大家指点一下!
- 关于eclipse下开发jsp的问题
- 更新class文件是否一定要重启
- 关于java邮件的功能模块,需要请教各位前辈们
- 大家帮我看看我的简历,不知道写的是否有问题.
- 一个很弱智的iframe问题,请大家赐教!!
- StringTokenizer 不知道哪里有错,帮帮忙!
- 请问各位高手javascript怎么得到ajax传到页面的值
- 在struts多模块开发中 子模块页面struts标签html:form的问题
并在每一次访问重置超时时间。
不要指望用户注销,10个用户9个忘记注销
不要指望关闭用户窗口的事件,有人习惯拔网线。
不要指望session的timeout事件,服务器也是需要重启的。
客户端也一分钟更新一次自己的时间戳。
如果这两个时间相差超过2分钟以上,那么客户端肯定已经关闭了。new Thread(){
public void run() {
while(true){
try {
Thread.sleep(60000*1); //1分钟执行一次判断
} catch (InterruptedException e) {}
long t=System.currentTimeMillis();
for (int i = 0;siteList!=null && i <siteList.size(); i++) {
OnlineModel om = (OnlineModel)onlineList.get(i);
long rt = om.getRefreshTime();
if(t-rt>60000*3){//超过3分钟,认为客户端已经关闭。
onlineList.remove(om);
i--;
}
}
}
}
}.start();
说法是没错,这种做法客户端需要内嵌iframe或者使用0高度的frame,在很多地方是禁止的。
登录了时候通知已经有用户登录了。你可以把他踢了,或者放弃登录。