java 如何判断客户端,java – isNew()如何判断会话是新会话还是已在使用?

I read that isNew() returns true if the client has not yet responded with the session ID. But what does it mean ?

考虑服务器当前正在处理请求.会话处理有两种情况.

>在新会话方案中,服务器正在为用户/客户端创建新会话. (客户端可能在请求中没有提供会话ID,或者它可能提供了服务器认为无效的会话ID.)servlet的应用程序代码决定是否需要会话(例如,因为它有一些想要的信息)存储在那里),并尝试使用“如果不存在”标志获取它. servlet基础结构意识到没有当前会话,创建具有新会话ID的新会话,并将其保存在会话存储中.在请求完成时,会话ID返回给客户端;例如作为cookie,或作为附加会话ID的URL.

>在现有会话场景中,客户端在请求中包含会话ID;例如作为会话cookie,或作为请求URL中的会话ID. servlet基础结构识别此id,在其会话存储中查找它,并且(如果需要)重新创建包含从会话存储中检索的会话状态的HttpSession对象.当servlet的应用程序代码尝试访问会话时,它会获取此HttpSession对象,而不是新对象.然后,servlet在处理请求时可以使用和更新会话状态.

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

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

How does calling isNew() on the session object,check if the session is a new one or is already in use ?

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值