每个请求都有一个新的 HttpSession?

发布于 2024-09-09 20:43:03 字数 236 浏览 8 评论 0原文

在使用 servlet 规范开发应用程序时,我一直认为理所当然地认为为给定客户端的每个新请求创建的 JSESSIONID cookie 是理所当然的。但仔细思考一下,servlet 容器仅在代码中请求并创建会话之后创建 cookie 标头不是更合乎逻辑吗?对于禁用 cookie 的客户端,最终不会为每个发出的请求创建一个新的 HttpSession 吗?

如果问题仍然不清楚,请告诉我,以便我可以编辑它。 TIA。

I've always taken for granted the JSESSIONID cookie created for every fresh request for a given client when developing applications using the servlet specification. But after giving it a bit of thought, isn't is more logical for the servlet container to create a cookie header only after the session has been requested and created in code? For clients who have their cookies disabled, won't it end up creating a new HttpSession for each request made?

Please let me know if the question is still unclear so I can edit it. TIA.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等你爱我 2024-09-16 20:43:04

默认情况下,Servlet 容器不会创建新的 Session,除非 Servlet 实际上显式创建了它。仅仅因为在标头中填充了 JSEESIONID 并不意味着服务器上必须有一个 seesion。对此的一个例外是在 JSP 中,如果会话不存在,则默认情况下会创建一个会话,除非 <%@ page session="false" %>

就没有打开 cookie 而言:

一个 Web 容器可以使用多个
将会话与会话关联的方法
用户,所有这些都涉及传递一个
客户端和客户端之间的标识符
服务器。标识符可以是
作为 cookie 在客户端维护,
或者 Web 组件可以包括
每个 URL 中的标识符
返回给客户端。

如果您的应用程序使用会话
对象,您必须确保会话
跟踪是通过具有
应用程序重写 URL 每当
客户端关闭cookie。你这样做
通过调用响应的
所有 URL 上的encodeURL(URL) 方法
由 servlet 返回。这个方法
在 URL 中包含会话 ID
仅当 cookie 被禁用时;
否则,返回 URL
不变。

A new Session will not be created by the Servlet container by default unless the Servlet actually creates it explicitly. Just because in the Header a JSEESIONID is being populated does not mean that there has to be a seesion on the server. An exception to this is in JSPs that by default create a Session if one is not there unless <%@ page session="false" %>

As far as not having cookies turned on:

A web container can use several
methods to associate a session with a
user, all of which involve passing an
identifier between the client and the
server. The identifier can be
maintained on the client as a cookie,
or the web component can include the
identifier in every URL that is
returned to the client.

If your application uses session
objects, you must ensure that session
tracking is enabled by having the
application rewrite URLs whenever the
client turns off cookies. You do this
by calling the response's
encodeURL(URL) method on all URLs
returned by a servlet. This method
includes the session ID in the URL
only if cookies are disabled;
otherwise, it returns the URL
unchanged.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文