如何调用isNew()在会话对象上,检查会话是否是新会话或已在使用中?
我读到了isNew()
如果客户端尚未响应会话 ID,则返回 true。但是这是什么意思 ?请解释
我读到,如果客户端尚未响应会话 ID,则 isNew() 返回 true。但是这是什么意思 ?
考虑服务器当前正在处理请求。会话处理有两种情况。
-
在新会话场景中,服务器正在为用户/客户端创建新会话。 (客户端可能没有在请求中提供会话 ID,或者可能提供了服务器认为无效的会话 ID。)Servlet 的应用程序代码决定需要会话(例如,因为它有一些它想要的信息)存储在那里),并尝试使用“如果不存在则创建”标志来获取它。 Servlet 基础结构意识到当前不存在会话,使用新的会话 ID 创建一个新会话,并将其保存在会话存储中。请求完成后,将session id返回给客户端;例如作为 cookie,或作为附加会话 ID 的 URL。
-
在现有的session场景中,客户端已经在请求中包含了session id;例如作为会话 cookie,或作为请求 URL 中的会话 ID。 servlet 基础结构识别该 id,在其会话存储中查找它并(如果需要)重新创建HttpSession
包含从会话存储中检索的会话状态的对象。当 servlet 的应用程序代码尝试访问会话时,它会得到以下信息HttpSession
对象,而不是新对象。然后,servlet 在处理请求时可以使用和更新会话状态。
在第一种情况下,调用isNew()
会话对象上将返回true
因为这是一个新的会议。
在第二种情况下,调用isNew()
会话对象上将返回false
因为这不是一个新会话。
如何在会话对象上调用 isNew(),检查会话是新会话还是已在使用中?
Servlet 基础结构知道发生了两种情况中的哪一种,因为它执行了会话创建或会话查找。最明显的实现isNew()
是包括一个private boolean
领域中的HttpSession
对象,并返回该字段的值作为结果isNew()
。该字段将由 Servlet 基础结构根据其获取会话对象的方式进行初始化。
如果有帮助的话,Servlet 如何工作?实例化、会话、共享变量和多线程解释了这一切发生的更大背景。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)