Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java isNew()如何判断会话是新会话还是已在使用中?_Java_Session_Jakarta Ee - Fatal编程技术网

Java isNew()如何判断会话是新会话还是已在使用中?

Java isNew()如何判断会话是新会话还是已在使用中?,java,session,jakarta-ee,Java,Session,Jakarta Ee,调用会话对象时,如何检查会话是新会话还是已在使用中 我了解到,如果客户端尚未使用会话ID响应,isNew()将返回true。但这意味着什么?请解释一下 我了解到,如果客户端尚未使用会话ID响应,isNew()将返回true。但这意味着什么 考虑服务器当前正在处理一个请求。关于会话处理,有两种情况 在新会话场景中,服务器正在为用户/客户端创建新会话。(客户端可能在请求中没有提供会话id,或者可能提供了服务器认为无效的会话id。)servlet的应用程序代码决定需要一个会话(例如,因为它有一些信息

调用会话对象时,如何检查会话是新会话还是已在使用中

我了解到,如果客户端尚未使用会话ID响应,
isNew()
将返回true。但这意味着什么?请解释一下

我了解到,如果客户端尚未使用会话ID响应,isNew()将返回true。但这意味着什么

考虑服务器当前正在处理一个请求。关于会话处理,有两种情况

  • 在新会话场景中,服务器正在为用户/客户端创建新会话。(客户端可能在请求中没有提供会话id,或者可能提供了服务器认为无效的会话id。)servlet的应用程序代码决定需要一个会话(例如,因为它有一些信息要存储在那里),并尝试使用“create if not present”标志获取该会话。servlet基础设施意识到没有当前会话,使用新会话id创建一个新会话,并将其保存在会话存储中。在请求完成时,会话id返回给客户端;e、 g.作为cookie,或作为附加会话id的URL

  • 在现有会话场景中,客户端已在请求中包含会话id;e、 g.作为会话cookie,或作为请求URL中的会话id。servlet基础结构识别此id,在其会话存储中查找它,并(如有必要)重新创建包含从会话存储检索到的会话状态的
    HttpSession
    对象。当servlet的应用程序代码试图访问会话时,它会得到这个
    HttpSession
    对象,而不是一个新对象。然后,servlet可以在处理请求时使用和更新会话状态

在第一个场景中,对会话对象调用
isNew()
将返回
true
,因为这是一个新会话

在第二种情况下,对会话对象调用
isNew()
将返回
false
,因为这不是新会话

如何在会话对象上调用isNew(),检查会话是新会话还是已在使用中


servlet基础设施知道这两种情况中发生了哪一种,因为它进行了会话创建或会话查找。
isNew()
最明显的实现是在
HttpSession
对象中包含一个
private boolean
字段,并作为
isNew()
的结果返回该字段的值。该字段将由servlet基础结构根据其获取会话对象的方式进行初始化

你的问题指的是哪门课?@Andrew Logvinov请看社论阅读本文以了解会话是如何工作的:你的答案我一部分都没听懂。我完全理解你答案的每一部分,谢谢你把它写下来。