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


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工程师面试经历
Dec 09 面试题
Java如何格式化日期
Aug 07 面试题
华为c/c++笔试题
Jan 25 面试题
用C或者C++语言实现SOCKET通信
Feb 24 面试题
说一下mysql, oracle等常见数据库的分页实现方案
Sep 29 面试题
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
Jan 21 面试题
介绍一下木马病毒的种类
Jul 26 面试题
JPA的特点
Oct 25 面试题
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
May 29 面试题
北京振戎融通Java面试题
Sep 03 面试题
UNIX文件名称有什么规定
Mar 25 面试题
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
利用“多说”制作留言板、评论系统
2015/07/14 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
用js小类库获取浏览器的高度和宽度信息
2012/01/15 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
jquery 构造函数在表单提交过程中修改数据
2015/05/25 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
javascript实现添加附件功能的方法
2015/11/18 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
JS中关于事件处理函数名后面是否带括号的问题
2016/11/16 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
浅谈Node模块系统及其模式
2017/11/17 Javascript
vue中get请求如何传递数组参数的方法示例
2019/11/08 Javascript
使用JS实现动态时钟
2020/03/12 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
深入理解Django的自定义过滤器
2017/10/17 Python
python实现排序算法解析
2018/09/08 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
世界上最受欢迎的钓鱼诱饵:Rapala
2019/05/02 全球购物
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
致200米运动员广播稿
2014/02/06 职场文书
学员自我鉴定
2014/03/19 职场文书
物理学专业求职信
2014/07/04 职场文书
党支部四风整改方案
2014/10/25 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
2015年暑期社会实践方案
2015/07/14 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
python如何进行基准测试
2021/04/26 Python
vue实现登陆页面开发实践
2022/05/30 Vue.js