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

时间:2010-07-17 15:40:08

标签: java java-ee httpsession

在使用servlet规范开发应用程序时,我总是理所当然地认为为给定客户端的每个新请求创建的JSESSIONID cookie。但是在给它一些想法之后,对于servlet容器来说,只有在会话被请求并在代码中创建后才能创建cookie头更合乎逻辑?对于已禁用Cookie的客户,最终是否会为每个请求创建新的HttpSession

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

1 个答案:

答案 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   不变。