如何对会话对象调用isNew()
,检查会议是一个新的或已在使用?isNew()是如何判断会话是新的还是正在使用?
,我读了isNew()
返回true如果客户端尚未与会话ID回应。但是这是什么意思 ?请解释
如何对会话对象调用isNew()
,检查会议是一个新的或已在使用?isNew()是如何判断会话是新的还是正在使用?
,我读了isNew()
返回true如果客户端尚未与会话ID回应。但是这是什么意思 ?请解释
如果客户端尚未响应会话ID,我读取isNew()返回true。但是这是什么意思 ?
考虑服务器当前正在处理的请求。关于会话处理有两种情况。
在新会话场景中,服务器正在为用户/客户端创建新会话。 (客户端可能在请求中没有提供会话标识,或者它可能提供了服务器认为无效的会话标识。)servlet的应用程序代码决定了会话是必需的(例如,因为它有一些它想要的信息在那里存储),并试图用“创建如果不存在”标志来获取它。 servlet基础结构意识到没有当前会话,使用新的会话标识创建一个新会话,并将其保存在会话存储中。在完成请求时,会话ID被返回给客户端;例如作为cookie,或作为附有会话ID的URL。
在现有会话的情况下,客户端已经包括在所述请求的会话ID;例如作为会话cookie,或作为请求URL中的会话ID。 servlet基础结构识别此ID,在其会话存储中查找它(并在必要时),重新创建包含从会话存储检索到的会话状态的对象HttpSession
。当servlet的应用程序代码尝试访问会话时,它会获得此对象,而不是新对象。会话状态可以在servlet处理请求时使用和更新。
在第一种情况下,呼叫会话对象isNew()
将返回true
因为这是一个新的会话。
在第二种情况下,在会话对象上调用isNew()
将返回false
,因为这不是新会话。
如何在会话对象上调用isNew(),检查会话是新的还是已在使用?
servlet基础结构知道发生了这两种情况中的哪一种,因为它进行了会话创建或会话查找。的isNew()
最明显的实现是包括在HttpSession
对象private boolean
场,并返回该字段的值作为isNew()
结果。该字段将由servlet基础结构根据它如何获得会话对象进行初始化。
我没有了解你答案的一个部分。你能否说清楚一点? – 2012-02-27 11:44:40
我完全理解你答案的每一部分,谢谢你写下来。 – user1884155 2016-06-29 21:18:32
你的问题涉及什么课? – 2012-02-27 11:29:29
@安德鲁Logvinov看到编辑 – 2012-02-27 11:31:16
阅读理解会话是如何工作的:http://stackoverflow.com/questions/3106452/how-do-servlets-work-instantiation-session-variables-and-multithreading – BalusC 2012-02-27 11:37:17