CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

该如何实现限制用户并发登录呢?

楼主lijong29909(我爱洗澡)2003-12-03 09:46:20 在 Java / Web 开发 提问

同一帐号,只允许同一时间段内登录一次,也就是说这个帐号登陆了,别人再用这个帐号就不能登录了。本来想在数据库中做一状态标志,但是如果用户不是正常退出登录的话(比如关闭浏览器),那标志位就不能及时的更新了。请给点思路。急…… 问题点数:100、回复次数:7Top

1 楼betterjonah(codes)回复于 2003-12-03 10:01:56 得分 5

1.遍历session;  
  2.将用户名放到hash表中;Top

2 楼realby(忽然睡了)回复于 2003-12-03 10:45:06 得分 5

upTop

3 楼flowercat(小强)回复于 2003-12-03 10:53:09 得分 5

关掉IE的话,session并不是马上清除!所以可能不能再次登陆!  
  除非在关闭浏览器时进行清除session的工作。Top

4 楼realby(忽然睡了)回复于 2003-12-03 11:06:55 得分 30

楼上说的关闭浏览器是可以监测到的~  
  <script   language=javascript>  
          function   window.onunload()  
          {if   (event.clientX   <0   &&   event.clientY   <   0){处理}     }  
  </script>  
   
  我在进行清除session的处理的时候,总是不能精确的立刻清掉session~  
   
  upTop

5 楼zlhome2(dali)回复于 2003-12-03 11:19:59 得分 5

加入事件监听,就能在指定的时间清除sessionTop

6 楼realby(忽然睡了)回复于 2003-12-03 11:34:08 得分 5

HttpSessionBindingListener就是用的这个Top

7 楼aku0708(怀念奶茶)回复于 2003-12-03 12:46:50 得分 45

/**这是管理user信息的类  
   
  文件名为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<users.capacity();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<users.capacity();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文件  
   
  文件名为onLineUser.jsp  
   
  */  
  %>  
  <%@   page   contentType="text/html;charset=gb2312"   %>    
  <%@   page   import="onLineUser,java.util.*"   %>    
  <jsp:useBean   id="onlineuser"   class="onLineUser"   scope="application"/>  
  <html>    
  <head>    
  <title>搞定JSP在线人数</title>  
  </head>  
  <body>    
  <center>    
      <p><h1>登陆成功,欢迎您访问!</h1></p>  
  </center>  
  <%       session   =   request.getSession(false);   %>    
  <%    
        String   username=request.getParameter("username");  
        if   (onlineuser.existUser(username)){  
                out.println("用户<font   color=red>"+username+"</font>已经登陆!");  
        }else{  
                session.setMaxInactiveInterval(50);   file://Sesion有效时长,以秒为单位  
                session.setAttribute(username,onlineuser);    
                out.println("欢迎新用户:<font   color=red>"+username+"</font>登陆到系统!");  
        }  
        out.println("<br>当前在线用户人数:<font   color=red>"+onlineuser.getCount()+"</font><br>");  
        Vector   vt=onlineuser.getOnLineUser();  
        Enumeration   e   =   vt.elements();  
        out.println("在线用户列表");  
        out.println("<table   border=1>");  
        out.println("<tr><td>用户名</td></tr>");  
            while(e.hasMoreElements()){  
                out.println("<tr><td>");  
                out.println((String)e.nextElement()+"<br>");  
                out.println("</td></tr>");  
        }  
        out.println("</table>");  
             
  %>    
  <center>    
      <p>elapsed制作</p>  
      <p>   </p>  
  <%  
        out.println("<p><a   href='logout.jsp?username="+username+"'>退出系统</a></p>");  
  %>  
  </center>    
  </body>    
  </html>    
   
  ////////////////////////////////////////////////////////////////////////////////////  
  <%  
  /**这是用户退出的jsp文件  
   
  文件名为logout.jsp  
   
  */  
  %>  
  <%@   page   contentType="text/html;charset=gb2312"   %>    
  <%@   page   import="onLineUser,java.util.*"   %>    
  <jsp:useBean   id="onlineuser"   class="onLineUser"   scope="application"/>  
  <html>    
  <head>    
  <title>搞定JSP在线人数</title>  
  </head>  
  <body>    
  <center>    
      <p><h1>登陆成功,欢迎您访问!</h1></p>  
  </center>  
  <%    
        String   username=request.getParameter("username");  
        if(onlineuser.deleteUser(username))  
                out.println(username+"已经退出系统!");  
        else  
                out.println(username+"没有登陆到系统!");  
  %>    
  <center>    
      <p>elapsed制作</p>  
      <p>   </p>  
      <p><a   href="logout.jsp">退出系统</a></p>  
  </center>    
  </body>    
  </html>      
  Top

相关问题

  • 限制用户登录域?
  • 如何限制用户登录
  • 如何限制同一用户同时登录
  • 如何限制用户的登录时间呢?
  • 使用cookie限制未登录用户直接进入系统
  • 关于限制用户登录时的问题
  • 如何限制只能让一个用户登录?
  • Win2000 Pro限制用户登录的问题
  • 如何限制用户不登录无法进主页呢?
  • 关于限制一个用户号多次登录的问题!

关键词

得分解答快速导航

  • 帖主:lijong29909
  • betterjonah
  • realby
  • flowercat
  • realby
  • zlhome2
  • realby
  • aku0708

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo