request.getSession() 是否将 cookie 设置到浏览器中?

Does request.getSession() set cookie into the browser?

我正在学习 Servlet 会话并编写一些代码。我看到了这个:

我使用 URL 映射调用了 Servlet。即:

http://localhost:8080/ServletSessionProject/SessionLearningPath

servlet代码很简单:

HttpSession session = request.getSession();

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

chrome://settings/cookies

我看到了一个 cookie 集。

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

这怎么可能?

参见:request.getSession()

Returns the current session associated with this request, or if the request does not have a session, creates one.

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

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

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