如何处理同一个用户服务只有一人在线..急..
网上很多说用HttpSessionBindingListener,和HttpSessionListener,这两个接口我在正常关闭浏览器的时候无法执行里面销毁的方法.请问这个问题怎么解决.

解决方案 »

  1.   

    销毁?你把该用户的标识remove不就可以了么?
      

  2.   

    /** 所有的sessionId和用户信息的对应表 */
    public static Hashtable<String, User> loginUsers = new Hashtable<String, User>();
    /** 所有的用户id和sessionId的对应表 */
    public static Hashtable<String, String> sessions = new Hashtable<String, String>();
    /** 所有的用户id和上次操作时间的对应表 */
    public static Hashtable<String, Long> lastOperation = new Hashtable<String, Long>();
    /** 所有的sessionId和信息的对应表 */
    public static Hashtable<String, String> messages = new Hashtable<String, String>();
    下面自己写吧。。
      

  3.   

    public static String login(String userName, String password, String ssoSessionId)
    {
    // String result = SSOConnection.login(userName, password, ssoSessionId);
    //
    return "";
    } public static void logout(String sessionId, boolean completely)
    {
    User user = loginUsers.get(sessionId);
    if (user != null)
    {
    uncacheUser(sessionId);
    user = null;
    }
    } public static void cacheUser(User user,String sessionId)
    {
    String uid = user.getUid();
    SignOn.checkSessionMap(uid);
    sessions.put(uid, sessionId);
    lastOperation.put(uid, System.currentTimeMillis());
    loginUsers.put(sessionId, user);
    } public static void uncacheUser(String sessionId)
    {
    User user = loginUsers.get(sessionId);
    if (user != null)
    {
    sessions.remove(user.getUid());
    lastOperation.remove(user.getUid());
    loginUsers.remove(sessionId);
    }
    } public static User getUser(String sessionId)
    {
    User user = loginUsers.get(sessionId);
    return user;
    } public static boolean checkLogin(HttpServletRequest request, HttpServletResponse response)
    {
    boolean hasLogin = false;
    // String ssoSessionId = request.getHeader("SSOSESSIONID");
    // hasLogin = SignOn.checkLogin(request, response, ssoSessionId);
    if(getUser(request.getSession().getId())!=null)
    {
    hasLogin = true;
    }
    return hasLogin;
    }

    public static boolean checkLogin(HttpServletRequest request, HttpServletResponse response,String ssoSessionId)
    {
    boolean hasLogin = false;
    return hasLogin;
    }

    public static boolean checkSessionMap(String uid)
    {
    Boolean b = false;
    String sessionId = sessions.get(uid);
    if (sessionId != null)
    {
    Object obj = loginUsers.get(sessionId);
    if (obj != null)
    {
    SignOn.logout(sessionId, true);
    b = true;
    }
    }
    return b;
    }
    算了,还是大部分贴一下吧·