一尘不染

Java在什么条件下创建JSESSIONID?

java

什么时候/ JSESSIONID创建a的条件是什么?

是每个域吗?例如,如果我有一个Tomcat应用程序服务器,并且部署了多个Web应用程序,是否会为JSESSIONID每个上下文(Web应用程序)创建一个不同的应用程序,或者只要它们是同一域,它是否会在Web应用程序之间共享?


阅读 983

收藏
2020-03-02

共1个答案

一尘不染

创建会话时,将创建/发送JSESSIONID cookie。会话是在你的代码调用request.getSession()request.getSession(true)第一次调用时创建的。如果你只想获取会话,但如果不存在则不创建会话,请使用request.getSession(false)-这将返回一个会话或null。在这种情况下,不会创建新的会话,并且不会发送JSESSIONID cookie。(这也意味着会话不一定是在第一次请求时创建的 …… 创建会话时,你和你的代码将受到控制)

会话是基于上下文的:

SRV.7.3会议范围

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

(Servlet 2.4规范)

更新:如果没有会话,则每次对JSP页面的调用都会隐式创建一个新会话。可以使用session='false'page指令将其关闭,在这种情况下,会话变量在JSP页面上根本不可用。

2020-03-02