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


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

面试题 相关文章推荐
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
May 24 面试题
C语言怎样定义和声明全局变量和函数最好
Nov 26 面试题
试述DBMS的主要功能
Nov 13 面试题
北京RT科技有限公司.net工程师面试题
Feb 15 面试题
三维科技面试题
Jul 27 面试题
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
Oct 24 面试题
SQL注入攻击的种类有哪些
Dec 30 面试题
什么是Linux虚拟文件系统VFS
Aug 25 面试题
Shell如何接收变量输入
Sep 24 面试题
软件测试工程师笔试题带答案
Mar 27 面试题
百度JavaScript笔试题
Jan 15 面试题
JAVA高级程序员面试题
Sep 06 面试题
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
WINXP下apache+php4+mysql
2006/11/25 PHP
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
JavaScript 实现??打印?理
2007/04/28 Javascript
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
2013/05/17 Javascript
写JQuery插件的基本知识
2013/11/25 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
用JS实现选项卡
2020/03/23 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
python打开网页和暂停实例
2014/09/30 Python
让 python 命令行也可以自动补全
2014/11/30 Python
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
Python WSGI的深入理解
2018/08/01 Python
对python周期性定时器的示例详解
2019/02/19 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
安全生产检查通报
2014/01/29 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
全国优秀辅导员事迹材料
2014/05/14 职场文书
空气环保标语
2014/06/12 职场文书
校庆口号
2014/06/20 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
合作合同协议书范本
2015/01/27 职场文书
兵马俑导游词
2015/02/02 职场文书
英语辞职信范文
2015/02/28 职场文书
办公室规章制度范本
2015/08/04 职场文书
利用Selenium添加cookie实现自动登录的示例代码(fofa)
2021/05/08 Python