比如一个用户在A机上登陆后,其它电脑就不能用这个帐号登陆了?

解决方案 »

  1.   

    一楼的办法是不妥当的,万一客户端登陆后浏览器突然崩溃的话,那个用户永远也登陆不了了,我的解决办法是 采用HttpSessionBindingListener,还可以统计在线人数
      

  2.   

    登入全局变量缓冲
    和HttpSessionBindingListener的思想差不多
      

  3.   

    一样的,就是在数据表里做个标志,但必须得要实现对session的监听,当session超时的时候就更改数据表中的标志!如果不正常退出,就得再等上seesion超时的时间才可以再次登陆系统
      

  4.   

    使用标志位 + SESSION生存期.
      

  5.   

    采用HttpSessionBindingListener  我现在的是重复登陆踢掉以前的那个登陆 稍微改下就可以禁止重复登陆了~~~~~~~
      

  6.   

    ServletContext context = request.getSession().getServletContext();
       HashMap userlist = (HashMap) context.getAttribute("userlist");
       if (userlist != null) {//如果userlist不为空则判断userlist是否有user这个用户
        Set set = userlist.entrySet();
        Iterator it = set.iterator();
        String removeid = null;
        while (it.hasNext()) {//迭代用户列表
         Map.Entry entry = (Map.Entry) it.next();
         HttpSession sess = (HttpSession) entry.getValue();
         User userexit = (User) sess.getAttribute("user");
         String s = userexit.getUserID();
         if (userId.equals(s))
          removeid = sess.getId();//得到要删除的sessionID
        }
        userlist.remove(removeid);//如果用户已经存在则删除前面的用户
       }
       session.setAttribute("user", user);//添加用户
       session.setAttribute("BindingNotify", new MySessionListener());//绑定监听器
       return mapping.findForward("success");
      

  7.   

    可是适用
    本地软件模式,     这样就比较简单了,可以一直通讯(类似QQ)
    一般网页里面要这样的话 不是个简单的事情 考虑的事情太多
    最好记录网卡MAC参数和IP同时进行 以免一些ADSL用户!
    如果两次登陆ip一样 而网卡不一样 可能是网吧换机
    网卡一样,ip不一样,可能是adsl
    如果两者都不一样,就让他等一段时间吧!
      

  8.   

    HttpSessionBindingListener 解决不了集群情况下的重复登陆。将登陆者的帐号和sessionid绑定,放入分布式缓存中。当一个账户登陆时检查是否已经登陆,如已登陆则将先登陆的帐号打上过期标志,用户每次访问都检查到缓存中检查是否被打上过期标志。过期的帐户信息让分布式缓存自动清除,不用担心OutOfMemory的危险。
      

  9.   

    在点击登录按钮时,用FILTER过滤一下,在WEB.XML配置中的ACTION映射中/*.do,当后缀为.do的所有操作进行过滤,自己写一个类实现FILTER
      

  10.   

    数据库中多两个字段在线状态标志(用来记录是否登录)
    最后活动时间(用来记录用户最后活动时间)比如online=1说明此用户已经在线,那么判断用户活动时间与系统日期间隔是否大于3分钟,如果小于那么认为用户仍然处于活动状态中,禁止登录。否则相反。用户每次活动更新最后活动时间为系统当前时间。至于间隔多少分钟,自己说的算。
      

  11.   

    HttpSessionBindingListener这个我不懂
    但是其他的方法,基本上和数据库添加的差别不大。
    没有明显的优点。
      

  12.   

    一样的,就是在数据表里做个标志,但必须得要实现对session的监听,当session超时的时候就更改数据表中的标志!如果不正常退出,就得再等上seesion超时的时间才可以再次登陆系统应该是这样的
      

  13.   

    将在线用户ID存到Vector变量中,登陆时检查ID是否存在
      

  14.   

    检索一下所有的session, 不过不同的服务器取所有的session方法不一样