利用HashMap实现踢人功能(JAVA)

来源:互联网 发布:阿里云服务器退货 编辑:程序博客网 时间:2024/06/07 02:07

其实这是我看到网上一个帖子,根据sessionid任意销毁对应的session,其实就是在打开浏览器的时候利用监听器,创建一个HashMapA 记录下对应的sessionid和session(这步很重要),但是实现踢人功能不能仅仅根据sessionid来销毁session,其实我们可以在创建一个HashMap B,记录下用户标记(如ID)和他的对应sessionid(我们不可能再踢人的时候获取到想要销毁的sessionid),然后只要有用户登录同一个帐号,我们就可以根据id在HashMap B获取到上个sessionid(要踢的人的session),直接销毁session,然后再清除HashMap B上的信息,最后put新来的用户的信息。

代码如下:

1:session监听器 hashmap a这里建立

2ACTION 或servelt

 java.util.HashMap qq=com.sessionlistener.sessionlistener.sessionl;
                      System.out.println("sesssionmap大小"+qq.size());
                      javax.servlet.http.HttpSession ss=(javax.servlet.http.HttpSession)qq.get(sessionid);
      
                      if (ss!=null)
                      {
                           ss.invalidate();
                           System.out.println("有人被踢了");
                     }
       
      
                     pp.put(user.getUserId(), request.getSession().getId());
       
                    user.setUserLastLoginIp(request.getRemoteAddr());   
                    int loginTimes = user.getUserLoginNum();
                    user.setUserLoginNum(loginTimes+1); 
                    DaoFactory.getInstance().getUserDao().update();
         
                    request.getSession().setAttribute("User", user);
                    System.out.println("登录结束后sesssionmap大小"+qq.size());
            }
      
        }
            out.print(user.getUserNickname());
        }
        else
        {
         out.print(1);
        }
      }



原创粉丝点击