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


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

面试题 相关文章推荐
Collection和Collections的区别
May 02 面试题
华美博弈C/VC工程师笔试试题
Jul 16 面试题
NULL是什么,它是怎么定义的
May 09 面试题
试解释COMMIT操作和ROLLBACK操作的语义
Jul 25 面试题
什么是唯一索引
Jul 05 面试题
南京某软件公司的.net面试题
Nov 30 面试题
一套.net面试题及答案
Nov 02 面试题
西部世纪.net笔试题面试题
Apr 03 面试题
什么是.net的Remoting技术
Jul 08 面试题
武汉瑞得软件笔试题
Oct 27 面试题
北京鼎普科技股份有限公司软件测试面试题
Apr 07 面试题
一份软件工程师的面试试题
Feb 01 面试题
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数组最大值,最小值的代码
2011/10/31 PHP
PHP系列学习之日期函数使用介绍
2012/08/18 PHP
PHP关联链接常用代码
2012/11/05 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
2015/05/13 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
js 遍历对象的属性的代码
2011/12/29 Javascript
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
微信小程序用户盒子、宫格列表的实现
2020/07/01 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
Python使用plotly绘制数据图表的方法
2017/07/18 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
python3实现字符串操作的实例代码
2019/04/16 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
教师群众路线心得体会
2014/11/04 职场文书
作弊检讨书范文
2015/05/06 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
Java 多线程并发FutureTask
2022/06/28 Java/Android