JSESSIONID
在使用 servlet 规范开发应用程序时,我一直认为为给定客户端的每个新请求创建的 cookie 是理所当然的。但是经过一番思考,servlet 容器仅在会话被请求并在代码中创建之后才创建 cookie 标头不是更合乎逻辑吗?对于禁用 cookie 的客户,它最终不会HttpSession
为每个请求创建一个新的吗?
如果问题仍然不清楚,请告诉我,以便我进行编辑。TIA。
JSESSIONID
在使用 servlet 规范开发应用程序时,我一直认为为给定客户端的每个新请求创建的 cookie 是理所当然的。但是经过一番思考,servlet 容器仅在会话被请求并在代码中创建之后才创建 cookie 标头不是更合乎逻辑吗?对于禁用 cookie 的客户,它最终不会HttpSession
为每个请求创建一个新的吗?
如果问题仍然不清楚,请告诉我,以便我进行编辑。TIA。
默认情况下,Servlet 容器不会创建新的 Session,除非 Servlet 实际显式地创建它。仅仅因为在 Header 中填充了 JSEESIONID 并不意味着必须在服务器上有一个 seesion。一个例外是在 JSP 中,如果没有会话,则默认创建一个会话,除非 <%@ page session="false" %>
至于没有打开cookies:
Web 容器可以使用多种方法将会话与用户相关联,所有这些方法都涉及在客户端和服务器之间传递标识符。该标识符可以作为 cookie 保存在客户端上,或者 Web 组件可以在返回给客户端的每个 URL 中包含该标识符。
如果您的应用程序使用会话对象,您必须确保在客户端关闭 cookie 时让应用程序重写 URL 来启用会话跟踪。为此,您可以对 servlet 返回的所有 URL 调用响应的 encodeURL(URL) 方法。仅当禁用 cookie 时,此方法才会在 URL 中包含会话 ID;否则,它会返回未更改的 URL。