【问题标题】:Difference between request.getSession() and request.getSession(true)request.getSession() 和 request.getSession(true) 的区别
【发布时间】:2015-09-07 22:39:09
【问题描述】:

我了解request.getSession(true)request.getSession(false) 之间的区别。但是request.getSession()request.getSession(true) 看起来很相似!

两者都“返回与此请求关联的当前会话”,但不同之处在于:

request.getSession():

"或者如果请求没有会话,则创建一个"

request.getSession(true):

"如果没有当前会话,返回一个新会话"

我不明白它们之间的区别,是不是(如果不存在)它们创建了一个新会话,但第一个没有返回,而第二个却有?

来源:http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html

编辑:

有人将我的问题标记/标记为重复,即使它不是。我会解释原因。

我已经明确要求request.getSession()request.getSession(true) 之间的区别,而不是request.getSession(true)request.getSession(false) 之间的区别!我已经再次明确表示,我已经理解 b/w ..(true)..(false) 的区别。

linked 的问题可能是关于 b/w ..(true)..(false) 而不是 ..(true)..() 的区别的重复问题

【问题讨论】:

  • 所有 3 个答案都是正确、相似且有用的,但 @Jan 是第一个回答的。
  • @KrutikJayswal 在标记我的问题之前你有没有阅读过我的问题?我明确表示我不是在询问 ..Session(true) 和 ..Session(false) 之间的区别!或(隐式)b/w ..Session() & ..Session(false)!我问了 ..Session() 和 ..Session(true) 之间的区别!我收到了完全合理的答案!我在上面标记了我的问题“[已解决]”!!!
  • @Sotiros 你为什么编辑我的问题?

标签: java jsp http session servlets


【解决方案1】:

request.getSession() 将返回当前会话。如果当前会话不存在,则它将创建一个新会话

request.getSession(true) 将返回当前会话。如果当前会话不存在,则它将创建一个新会话

所以这两种方法基本上没有区别。

request.getSession(false) 如果当前会话存在,将返回当前会话。如果不是,它将创建一个新会话

【讨论】:

  • 如果当前会话为空并且我们不希望这样,这将创建一个新会话。如果当前会话为空,请立即将他注销。
  • 以上答案很容易理解。谢谢!
【解决方案2】:

request.getSession() 只是一种方便的方法。它与request.getSession(true) 完全相同。

【讨论】:

    【解决方案3】:

    带有布尔参数的方法:

      request.getSession(true);
    

    如果会话与请求无关,则返回新会话

      request.getSession(false);
    

    如果会话未与请求关联,则返回 null。

    没有布尔参数的方法:

      request.getSession();
    

    返回新会话,如果会话没有与请求关联,返回现有会话,如果会话与请求关联。它不会返回null。

    【讨论】:

      【解决方案4】:

      它们都返回相同的东西,如您链接的文档中所述;一个 HttpSession 对象。

      您还可以查看具体的实现(例如Tomcat)并查看它实际在做什么:Request.java 类。在这种情况下,基本上他们都调用:

      Session session = doGetSession(true);
      

      【讨论】:

        【解决方案5】:

        一个主要的实际区别是它的用途:

        security scenario 中,我们总是需要一个新会话,我们应该使用request.getSession(true)

        request.getSession(false): will return null if no session found.
        

        【讨论】:

          【解决方案6】:

          request.getSession(true)request.getSession() 都做同样的事情,但如果我们使用 request.getSession(false) 如果会话对象尚未创建,它将返回 null

          【讨论】:

            【解决方案7】:

            request.getSession() 或 request.getSession(true) 都只会返回当前会话。如果当前会话不存在,那么它将创建一个新会话。

            【讨论】:

              猜你喜欢
              • 2012-12-07
              • 1970-01-01
              • 2015-06-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-09-07
              • 2016-12-12
              • 2011-08-15
              相关资源
              最近更新 更多