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


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笔试题
Sep 29 面试题
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
Feb 15 面试题
请写出char *p与"零值"比较的if语句
Sep 24 面试题
介绍一下SQL中union,intersect和minus
Apr 05 面试题
.NET概念性的面试题
Feb 29 面试题
Internal修饰符有什么含义
Jul 10 面试题
作为网站管理者应当如何防范XSS
Aug 16 面试题
nohup的用法
Nov 26 面试题
Linux中如何用命令创建目录
Dec 02 面试题
软件测试工程师结构化面试题库
Nov 23 面试题
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
Mar 05 面试题
一些关于MySql加速和优化的面试题
Jan 30 面试题
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
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
PHP生成自适应大小的缩略图类及使用方法分享
2014/05/06 PHP
一个简单的PHP验证码实现代码
2014/05/10 PHP
php计算年龄精准到年月日
2015/11/17 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
微信公众号判断用户是否已关注php代码解析
2016/06/24 PHP
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
js创建对象的方式总结
2015/01/10 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
JavaScript实现单例模式实例分享
2017/12/22 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
在vue中使用vuex,修改state的值示例
2019/11/08 Javascript
vue+swiper实现左右滑动的测试题功能
2020/10/30 Javascript
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python 简单的多线程链接实现代码
2016/08/28 Python
python读写json文件的简单实现
2017/04/11 Python
python爬虫_实现校园网自动重连脚本的教程
2018/04/22 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
让Python脚本暂停执行的几种方法(小结)
2019/07/11 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
2020/02/25 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
香港永安旅游网:Wing On Travel
2017/04/10 全球购物
捷克时尚网上商店:OTTO
2018/03/15 全球购物
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
“九一八事变纪念日”国旗下讲话稿
2014/09/14 职场文书
法院授权委托书格式
2014/09/28 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书