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


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

面试题 相关文章推荐
super()与this()的区别
Jan 17 面试题
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
Mar 25 面试题
C/C++程序员常见面试题二
Nov 19 面试题
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
Sep 17 面试题
Order by的几种用法
Jun 16 面试题
为什么group by 和order by会使查询变慢
May 16 面试题
什么是反射?如何实现反射?
Jul 25 面试题
Discard Protocol抛弃协议的作用是什么
Oct 10 面试题
linux面试相关问题
Aug 11 面试题
中间件分为哪几类
Mar 14 面试题
介绍一下XMLHttpRequest对象
Feb 12 面试题
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
Oct 22 面试题
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
PHPShop存在多个安全漏洞
2006/10/09 PHP
php判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
php中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
php实现获取文章内容第一张图片的方法
2014/11/04 PHP
PHP中使用数组指针函数操作数组示例
2014/11/19 PHP
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
Javascript实现计算个人所得税
2015/05/10 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
web 屏蔽BackSpace键实例代码
2016/12/24 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
2018/08/30 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
[40:01]OG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
Python面向对象编程之继承与多态详解
2018/01/16 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
岗位竞聘演讲稿范文
2014/04/24 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书
2014年巴西世界杯口号
2014/06/05 职场文书
社区服务活动报告
2015/02/05 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
Python语言内置数据类型
2022/02/24 Python
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS