【问题标题】:Does request.getSession() set cookie into the browser?request.getSession() 是否将 cookie 设置到浏览器中?
【发布时间】:2015-07-06 12:22:50
【问题描述】:

我正在学习 Servlets 课程并做一些代码工作。我看到了这个:

我使用 URL 映射调用了 Servlet。那就是:

http://localhost:8080/ServletSessionProject/SessionLearningPath

servlet 代码很简单:

HttpSession session = request.getSession();

现在,使用这个简单的代码(我使用了doGet()),然后我在 chrome 中打开了 cookie,如下所示:

chrome://settings/cookies

我可以看到一个 cookie 集。

我很困惑。在我的代码中,我简单地调用了request.getSession()。为什么这个简单的语句会在浏览器中设置一个 cookie?我确定之前没有 cookie。

这怎么可能?

【问题讨论】:

    标签: java servlets cookies session-cookies


    【解决方案1】:

    是的。会话在 cookie 中设置。 JSESSIONID

    Web 应用程序使用 cookie 跟踪用户会话,但这不是唯一的方法。 当用户没有与 Web 应用程序的会话并调用 request.getSessin(); 时,Servlet api 创建一个新会话和一个会话 ID。此会话 id 用于唯一地表示和跟踪用户会话。此会话 ID 在响应中作为设置的 cookie 请求发送。这就是您在一个请求周期后看到 cookie 的原因。

    【讨论】:

      【解决方案2】:

      见:request.getSession()

      返回与此请求关联的当前会话,或者如果 请求没有会话,创建一个。

      会话创建将在 HTTP 响应消息上设置 session cookie。这就是创建 cookie 并将其传输到浏览器的“魔法”。

      【讨论】:

      • 如果你不想开始一个新的会话,你可以调用request.getSession(false),以防没有当前会话
      • request.getSession() 返回 ioseb 所说的当前会话。因此,它会获取存储在浏览器中的 cookie,如果您已经有一个活动会话,所有这些都会发生。否则,当没有任何活动会话时,request.getSession() 将创建一个会话,因此它在 HTTP 响应消息上设置会话 ccokie,对不起我的英语不好。
      猜你喜欢
      • 2014-05-07
      • 2018-10-26
      • 2014-08-10
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 2017-12-17
      • 2013-08-07
      相关资源
      最近更新 更多