每个请求都有一个新的HttpSession?
问题描述:
在开发使用servlet规范的应用程序时,我总是认为为给定客户端的每个新请求创建的JSESSIONID
cookie都是理所当然的。但给了它一些想法后,是不是更合乎逻辑的创建一个cookie标头的servlet容器后该会话已被请求并在代码中创建?对于禁用Cookie的客户,是否最终会针对每个请求创建新的HttpSession
?每个请求都有一个新的HttpSession?
请让我知道如果问题仍然不清楚,所以我可以编辑它。 TIA。
答
默认情况下,Servlet容器不会创建新的Session,除非Servlet明确地创建它。只是因为在标题中填充了JSEESIONID并不意味着服务器上必须有一个参与者。一个例外是在JSP中,默认情况下创建会话,如果不存在,除非<%@网页会议=“假”%>
至于没有打开Cookie:
一web容器可以使用若干 方法将会话与 用户关联,所有这些都涉及在客户端和服务器之间传递 标识符。标识符可以是 ,作为cookie维护在客户端上, ,或者web组件可以在返回给客户端的每个网址 中包含 标识符。
如果应用程序使用会话 对象,你必须确保会议 跟踪由具有 应用程序重写URL每当 客户端关闭饼干启用。您通过在servlet返回的所有URL 上调用响应的 encodeURL(URL)方法来执行此操作 。仅当禁用cookies时,此方法 才在URL中包含会话ID ; 否则,它将返回未更改的URL 。
这引出了一个问题,如果容器无论如何不会创建新的会话,提前生成JSESSIONID的目的究竟是什么? – sasuke 2010-07-17 20:44:51
噢,好吧,我想我会就这个查询问一个新问题。谢谢您的帮助。 – sasuke 2010-07-21 17:48:59