【问题标题】:Session Problem会话问题
【发布时间】:2010-12-19 20:19:20
【问题描述】:

HttpSession 会话 = request.getSession(true); 和 HttpSession 会话 = request.getSession(); 如果不存在,两者都会创建一个新会话。

我的问题是,如果会话已经存在,我想使会话无效(),然后创建一个新会话。

我有可能..我的意思是有什么办法可以实现这个..??

【问题讨论】:

    标签: java servlets


    【解决方案1】:

    首先杀死你的旧会话

    session.invalidate();
    

    然后用

    重新打开它
    HttpSession session = request.getSession(true);
    

    不工作?

    【讨论】:

      【解决方案2】:

      首先执行session.invalidate();,如有必要,然后执行response.sendRedirect("url");url,其中您可以执行request.getSession(); 以获得新会话。

      请注意,这种方法不能保证在 JSP 文件中工作,仅仅是因为在大多数情况下响应已已经提交(因此容器无法设置 jsessionid cookie 的新值在响应标头中)。您确实需要在 Servlet 或过滤器中执行此操作。

      也就是说,您究竟为什么要使会话无效,然后在同一个请求中立即获得一个新会话?这听起来像是针对某个问题的解决方法,可能有更好的解决方案。

      【讨论】:

        【解决方案3】:

        这个怎么样?

        HttpSession session = request.getSession(false); // Will not create a new session.
        if(session!=null)
        {
           session.invalidate();
        }
        session = request.getSession(true);
        

        【讨论】:

          猜你喜欢
          • 2013-02-04
          • 1970-01-01
          • 2011-01-21
          • 2010-11-05
          • 1970-01-01
          • 2012-02-10
          • 2010-12-26
          • 2012-08-28
          • 2010-11-24
          相关资源
          最近更新 更多