在什么条件下创建JSESSIONID?

问题:

何时/何时创建JSESSIOINID的条件?
是每个域吗?例如,如果我有一个Tomcat应用程序服务器,并且部署多个Web应用程序,将会在每个上下文(Web应用程序)中创建一个不同的JSESSIONID,或者只要它们是同一个域,就可以在Web应用程序之间共享?

回答:

创建会话时创建/发送JSESSIONID cookie。当您的代码首次调用request.getSession()request.getSession(true)时,将创建会话。如果您只想获得会话,但不创建会话,如果不存在,请使用request.getSession(false) – 这将返回您的会话或null。在这种情况下,不会创建新的会话,并且不会发送JSESSIONID cookie。 (这也意味着会话不一定在第一个请求时创建 …您和您的代码正在控制when会话创建)
会话是每个上下文:

SRV.7.3会话范围
HttpSession对象必须在应用程序(或servlet上下文)级别上限定。底层机制,例如用于建立会话的cookie,对于不同的上下文来说可以是相同的,但是引用的对象(包括该对象中的属性)绝对不能在容器的上下文之间共享。

 Servlet 2.4 specification
更新:如果没有会话,每次调用JSP页面隐式地创建一个新的会话。这可以通过session='false'页面指令关闭,在这种情况下,会话变量根本不可用于JSP页面。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Under what conditions is a JSESSIONID created?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

43 − = 39