在使用servlet规范开发应用程序时,我总是理所当然地认为为给定客户端的每个新请求创建的JSESSIONID
cookie。但是在给它一些想法之后,对于servlet容器来说,只有在会话被请求并在代码中创建后才能创建cookie头更合乎逻辑?对于已禁用Cookie的客户,最终是否会为每个请求创建新的HttpSession
?
如果问题仍然不清楚,请告诉我,以便我可以编辑。 TIA。
答案 0 :(得分:1)
默认情况下,Servlet容器不会创建新的Session,除非Servlet实际上是显式创建的。只是因为在Header中正在填充JSEESIONID并不意味着服务器上必须有一个seeion。例外情况是在JSP中,默认情况下会创建一个Session,除非<%@ page session =“false”%>
如果没有开启Cookie:
Web容器可以使用多个 将会话与a关联的方法 用户,所有这些都涉及通过 客户端和。之间的标识符 服务器。标识符可以是 作为cookie在客户端维护, 或者网络组件可以包括 每个URL中的标识符 回到了客户端。
如果您的应用使用会话 对象,您必须确保该会话 跟踪是通过拥有 每当应用程序重写URL 客户关闭cookie。你做这个 通过调用响应 所有网址上的encodeURL(URL)方法 由servlet返回。这种方法 包括URL中的会话ID 只有禁用cookie; 否则,它返回URL 不变。