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


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...

面试题 相关文章推荐
Java平台和其他软件平台有什么不同
Jun 05 面试题
C++面试题目
Jun 25 面试题
使用索引(Index)有哪些需要考虑的因素
Oct 19 面试题
委托与事件是什么关系?为什么要使用委托
Apr 18 面试题
string = null 和string = ''的区别
Apr 28 面试题
说一下Linux下有关用户和组管理的命令
Jan 04 面试题
MIS软件工程师的面试题
Apr 22 面试题
DOM和JQuery对象有什么区别
Nov 11 面试题
若通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedException?
Oct 17 面试题
Jdbc数据访问技术面试题
Mar 30 面试题
一套Delphi的笔试题一
Feb 14 面试题
介绍一下你对SOA的认识
Apr 24 面试题
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
PHP初学者头疼问题总结
2006/10/09 PHP
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
php实现的美国50个州选择列表实例
2015/04/20 PHP
PHP时间和日期函数详解
2015/05/08 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
javascript window.opener的用法分析
2010/04/07 Javascript
将string解析为json的几种方式小结
2010/11/11 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
2015/08/10 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
AngularJS中isolate scope的用法分析
2016/11/22 Javascript
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
Vue表单输入绑定的示例代码
2018/11/01 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
package.json各个属性说明详解
2020/03/11 Javascript
[36:05]DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs Optic
2018/04/01 DOTA
python常见的格式化输出小结
2016/12/15 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
python的依赖管理的实现
2019/05/14 Python
Tensorflow加载Vgg预训练模型操作
2020/05/26 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
南京某公司笔试题
2013/01/27 面试题
经济管理专业毕业生推荐信
2013/11/11 职场文书
村党支部换届选举方案
2014/05/02 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书