如何防止同一个帐户被多人同时登录


Posted in 面试题 onAugust 01, 2013
1.用session超时,session为null就表示下线了
2.也可以采用数据库中设置 临时表 来处理
一个用户登陆时向表中插进一条记录,用户离开时候删除该记录
如想统计在线人数,简单地执行
select count(*) from table… 即可
3.application对象中可以记住现在的人数,application的生命周期和服务器的生命周期一样长。
4.还有一种方法要用到一个文件global.jsa ,方法是(在JSP中)是sessionDestroy(),其中它是以session对象为参数的。还有要把global.jsa文件必须房子和JSP程序相同的文件目录内才行。

5.网页自动刷新的代码是:
在文件头部加上

刷新间隔时间是15秒

6.在session中加入监听类,类的示例代码如下:

onLineUser.java
import javax.servlet.http.*;
import javax.servlet.*;
import java.util.*;

public class onLineUser implements HttpSessionBindingListener {
public onLineUser(){
}
private Vector users=new Vector();
public int getCount(){
users.trimToSize();
return users.capacity();
}
public boolean existUser(String userName){
users.trimToSize();
boolean existUser=false;
for (int i=0;i {
if (userName.equals((String)users.get(i)))
{
existUser=true;
break;
}
}
return existUser;
}

public boolean deleteUser(String userName) {
users.trimToSize();
if(existUser(userName)){
int currUserIndex=-1;
for(int i=0;i if(userName.equals((String)users.get(i))){
currUserIndex=i;
break;
}
}
if (currUserIndex!=-1){
users.remove(currUserIndex);
users.trimToSize();
return true;
}
}
return false;
}

public Vector getOnLineUser()
{
return users;
}
public void valueBound(HttpSessionBindingEvent e) {
users.trimToSize();
if(!existUser(e.getName())){
users.add(e.getName());
System.out.print(e.getName()+”\t 登入到系统\t”+(new Date()));
System.out.println(“ 在线用户数为:”+getCount());
}else
System.out.println(e.getName()+”已经存在”);
}

public void valueUnbound(HttpSessionBindingEvent e) {
users.trimToSize();
String userName=e.getName();
deleteUser(userName);
System.out.print(userName+”\t 退出系统\t”+(new Date()));
System.out.println(“ 在线用户数为:”+getCount());
}
}

jsp:








登陆成功,欢迎访问




String username=request.getParameter(“username”);
if (onlineuser.existUser(username)){
out.println(“用户”+username+”已经登陆!”);
}else{
session.setMaxInactiveInterval(50); //Sesion有效时长,以秒为单位
session.setAttribute(username,onlineuser);
out.println(“欢迎新用户:”+username+”登陆到系统!”);
}
out.println(“
当前在线用户人数:”+onlineuser.getCount()+”
”);
String ip = request.getRemoteAddr();
out.println(“
IP:”+ip+”
”);
Vector vt=onlineuser.getOnLineUser();
Enumeration e = vt.elements();
out.println(“在线用户列表”);
out.println(“”);
out.println(“”);
while(e.hasMoreElements()){
out.println(“”);
}
out.println(“
用户名
”);
out.println((String)e.nextElement()+”
”);
out.println(“
”);

%>


[关闭窗口]
out.println(“

退出系统

”);
%>




Tags in this post...

面试题 相关文章推荐
简述你对Statement,PreparedStatement,CallableStatement的理解
Mar 25 面试题
简单介绍Object类的功能、常用方法
Oct 02 面试题
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
May 09 面试题
天网面试题
Apr 07 面试题
Linux如何压缩可执行文件
Mar 27 面试题
优纳科技软件测试面试题
May 15 面试题
什么是lambda函数
Sep 17 面试题
腾讯公司的一个sql题
Jan 22 面试题
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
Jul 02 面试题
正隆泰信息技术有限公司上机题
Jun 14 面试题
关键字throw与throws的用法差异
Nov 22 面试题
什么是封装
Mar 26 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
Mar 30 #面试题
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Jan 27 #面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
Aug 18 #面试题
GC是什么?为什么要有GC?
Dec 08 #面试题
Overload和Override的区别
Sep 02 #面试题
什么时候用assert
May 08 #面试题
垃圾回收的优点和原理
May 16 #面试题
You might like
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
php一些公用函数的集合
2008/03/27 PHP
PHP文件读写操作之文件读取方法详解
2011/01/13 PHP
discuz论坛更换域名,详细文件修改步骤
2020/12/09 PHP
jQuery性能优化的38个建议
2014/03/04 Javascript
ie8模式下click无反应点击option无反应的解决方法
2014/10/11 Javascript
jQuery+Ajax实现无刷新操作
2016/01/04 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
浅谈js中的bind
2019/03/18 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
python基础教程之基本内置数据类型介绍
2014/02/20 Python
Python中unittest模块做UT(单元测试)使用实例
2015/06/12 Python
Python 实现购物商城,含有用户入口和商家入口的示例
2017/09/15 Python
python多线程分块读取文件
2019/08/29 Python
python range实例用法分享
2020/02/06 Python
浅析python表达式4+0.5值的数据类型
2020/02/26 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
洲际酒店集团美国官网:IHG美国
2017/11/16 全球购物
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
外贸业务员工作职责
2014/01/06 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
2015年环保局工作总结
2015/05/22 职场文书
四风之害观后感
2015/06/09 职场文书
工程款催款函
2015/06/24 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB