如何防止同一个帐户被多人同时登录
2023-07-06
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
登陆成功,欢迎访问
<% session = request.getSession(false); %>
<%
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((String)e.nextElement()+”
”);
out.println(“”);
out.println(“”);
%>
[关闭窗口]
<%
out.println(“
退出系统
”);%>