作一格隐藏帧, 在里面每隔一短时间,比如5秒钟,刷新一下相当于重新执行一下。。看sessionID 与 userID 相比配的时候存在,不存在就把userID删除。

解决方案 »

  1.   

    回一楼的:如果不刷新的话,那数据库中的登录记录永远不变了啊。这样,如果死机后,在登录就进不去了。
    回2楼的:什么是Hashtable啊??汗
      

  2.   

    在数据库中加一个字段记录他最后登陆和最后离开时间如果正常的话,最后离开时间是在最后登陆时间之后
    如果不正常退出的话,那么最后离开时间在最后登陆时间之前。然后确定一个时间差,如20分钟,就像Session一样,并根据这个用户名的最后登陆时间和最后离开时间来决定是否已经登陆
      

  3.   

    不能用Application对象吗?
      

  4.   

    做一个bean,状态声明为session
    里面有个static的vector
    用户登陆的时候就往里面加一个。session失效的时候就减一个
    如果登陆时候,发现重复的session就不让他登陆。
      

  5.   

    /**
     * 当用户创建一个会话时,将用户该对象实力放入到再现用户列表中
     * @param event
     */
    public void valueBound(HttpSessionBindingEvent event) {
    boolean dup = false;
    for (int i = 0; i < UserSession.userList.size(); i++) {
    UserSession u = (UserSession) UserSession.userList.get(i);
    if (u != null
    && u.getUserName() != null
    && u.getUserId().equals(
    this.getUserId())) { // forbid add a duplicate user
    dup = true;
    }
    }
    if (!dup) {
    UserSession.userList.add(this);
    }
    System.out.println(this.userId + " added into userlist");
    } /**
     * 当用户会话失效时,在再现用户表中将该对象实力删除
     * @param event
     */
    public void valueUnbound(HttpSessionBindingEvent event) {
    UserSession.userList.remove(this);
    System.out.println(this.userId + " remove from userlist");
    }
      

  6.   

    建议用hashmap记录用户session对象。用singleton或application对象来存放hashmap。每当用户试图登陆的时候就开始在hashmap里查找是否已经存在该session
    如果存在则销毁该session。重新建立该用户的session。把该session对象放入hashmap中。
    如果不存在,建立用户的session,把该session放入hashmap中。
    如果超时了,从hashmap删除该用户session对象。这样做的后果是:如果有相同用户同时登陆,则强行销毁先登陆用户的session,用后登陆的用户登陆。(类型qq和msn的用户同时登陆机制)
      

  7.   

    为什么不用在数据库里设个字段?
    表明用户的状态,在线就设为1,其余为0,在用户退出的时候把它置为0
    登陆的时候置为1
    这样关键就是防止用户直接点击关闭按钮,这个可以在页面的body里 onunload=“javascript:window.open("logout.jsp","","fullscreen=0,toolbar=1,scrollbars=1,menubar=1,location=0,width=10,height=10,top=0,left=0")”
    在logout.jsp页面里注销session和更换数据库该用户的状态
      

  8.   

    然后用widow.close();关闭logout.jsp
    你觉得这样做怎么样?
      

  9.   


    有这一建议
    在用户表后加一字段,f_refresh datetime,f_sessionid
    然后,在使用的页面上加一个iframe(子帧),如果是框架型的就在一个不变的框架上加,如果不是的话就在每个页面上加个包含页面
    这个子帧每隔五秒刷新,更新f_refresh字段为当前日期、时间值
    然后在登录页面加一个判断
    如果系统当前时间与f_refresh 差别小于十秒或者f_sessionid不同,那么就不可以登陆
      

  10.   

    tong yi: 用一个表记录上线情况1(上线)/0(下线)