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


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

面试题 相关文章推荐
PHP如何删除一个Cookie值
Nov 15 面试题
Java工程师面试集锦之Spring框架
Jun 16 面试题
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
Jun 02 面试题
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
Aug 09 面试题
VLAN和VPN有什么区别?分别实现在OSI的第几层?
Dec 23 面试题
linux下进程间通信的方式
Dec 23 面试题
广州喜创信息技术有限公司JAVA软件工程师笔试题
Oct 17 面试题
GWT (Google Web Toolkit)有哪些主要的原件组成?
Jun 08 面试题
Overload和Override的区别
Sep 02 面试题
如何清空Session
Feb 23 面试题
Ejb技术面试题
Apr 29 面试题
JSP&Servlet技术面试题
May 21 面试题
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+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
使用jquery实现IE下按backspace相当于返回操作
2014/03/18 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
2016/05/31 Javascript
基于canvas粒子系统的构建详解
2017/08/31 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
Vue项目History模式404问题解决方法
2018/10/31 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
原生JS生成指定位数的验证码
2020/10/28 Javascript
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
python实现删除文件与目录的方法
2014/11/10 Python
python 读写txt文件 json文件的实现方法
2016/10/22 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
Python获取系统所有进程PID及进程名称的方法示例
2018/05/24 Python
python实现按长宽比缩放图片
2018/06/07 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
Django-xadmin+rule对象级权限的实现方式
2020/03/30 Python
python链表类中获取元素实例方法
2021/02/23 Python
计算机系毕业生推荐信
2013/11/06 职场文书
幼教个人求职信范文
2013/12/02 职场文书
工厂会计员职责
2014/02/06 职场文书
大学生军训自我鉴定
2014/02/12 职场文书
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
留学经费担保书
2014/05/12 职场文书
物理学专业求职信
2014/07/04 职场文书
2015年推普周活动方案
2015/05/06 职场文书
校园安全教育心得体会
2016/01/15 职场文书
win10下go mod配置方式
2021/04/25 Golang