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


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

面试题 相关文章推荐
类的核心特性有哪些
Jan 01 面试题
如何获取某个日期是当月的最后一天
Dec 05 面试题
怎样声明接口
Sep 19 面试题
static函数与普通函数有什么区别
Dec 25 面试题
一个C/C++编程面试题
Nov 10 面试题
类成员函数的重载、覆盖和隐藏区别
Jan 27 面试题
STP的判定过程
Oct 01 面试题
C#怎么让一个窗口居中显示?
Oct 20 面试题
Linux如何压缩可执行文件
Oct 21 面试题
中间件分为哪几类
Mar 14 面试题
Python里面search()和match()的区别
Sep 21 面试题
Java软件工程师综合面试题笔试题
Sep 08 面试题
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 UBB 解析实现代码
2011/11/27 PHP
PHP写日志的实现方法
2014/11/05 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
PHP实现的QQ空间g_tk加密算法
2015/07/09 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
用apply让javascript函数仅执行一次的代码
2010/06/27 Javascript
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
2012/05/14 Javascript
ListBox实现上移,下移,左移,右移的简单实例
2014/02/13 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
浅析Javascript中bind()方法的使用与实现
2016/05/30 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
AngularJS Phonecat实例讲解
2016/11/21 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
JavaScript async/await原理及实例解析
2020/12/02 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
详解python的几种标准输出重定向方式
2016/08/15 Python
Python中模块string.py详解
2017/03/12 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
pygame实现烟雨蒙蒙下彩虹雨
2019/11/11 Python
用python解压分析jar包实例
2020/01/16 Python
python构造函数init实例方法解析
2020/01/19 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
python 制作python包,封装成可用模块教程
2020/07/13 Python
浅析Python迭代器的高级用法
2020/07/16 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
理货员的岗位职责
2013/11/23 职场文书
银行求职信范文
2019/05/13 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python