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

2023-11-24

如何调用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(使用前将#替换为@)

isNew() 如何判断会话是新会话还是已在使用中? 的相关文章

随机推荐

  • 对 OpenSSL 非阻塞 I/O 感到困惑

    一般来说 OpenSSL 库 C API 似乎提供了两种方法来做所有事情 您可以使用根据您的喜好配置的普通系统套接字 或者您可以使用 OpenSSLBIO有点像流的对象 然而 我经常对一些重复的功能感到困惑 例如 如何使 SSL 连接非阻塞
  • WCF .NET Core - WsHttpBinding 配置project.json

    如何使用 NET core配置wsHttpBinding 我应该在Project json文件中配置吗 在 NET Core之前的配置如下
  • Fortran 中的特定双精度函数有用吗?

    我注意到使用 gfortrantan函数返回与其参数相同类型的实值 例如一个人可以通过real kind 4 real kind 8 or real kind 16 并得到结果real kind 4 real kind 8 or real
  • 在 C 语言中编译时评估的预处理器函数

    我想编写在以下位置评估的预处理器函数 数组 编译时间 例如 如果我定义 define MYARR 5 4 3 2 1 0 然后 代码 int x R 0 应表示为 int x 5 给编译器 当然索引中只能使用文字 如果代码大小 内存很关键并
  • 如何控制 Ember.js 在何处附加渲染的应用程序模板?

    我正在尝试将我的 Ember 应用程序切换为使用 Ember Router 但在附加应用程序模板的位置上遇到问题 当我调用 App initialize 时 它会在文档末尾呈现模板 有没有办法指定渲染的应用程序模板附加到的位置 我的应用程序
  • 关闭WinAPI HANDLE的正确方法(避免重复关闭)

    我有一些句柄 我需要关闭它 代码中的某些地方可能会关闭句柄 那么 这是关闭句柄的正确方法吗 HANDLE h if h INVALID HANDLE VALUE CloseHandle h h INVALID HANDLE VALUE 关于
  • 如何在 AVD 4.2 中启用多用户支持

    有没有办法在 Android 4 2 ADT 版本 21 的新 模拟器 AVD 中启用多用户支持 在真实设备上 设置 中应该有 用户 菜单项 但在我的 AVD 上缺少 我知道此功能仅针对某些平板电脑设备启用 但在新的设备定义部分中创建 AV
  • 从 UEFI 应用程序内部运行 UEFI shell 命令

    我是 UEFI 应用程序开发新手 我的要求是 我需要从 UEFI 应用程序运行 UEFI shell 命令 app efi 源代码 需要指导我如何做到这一点 Example cpUEFI shell 中的命令用于将文件从一个路径复制到 其他
  • UpdatePanel 内的 FileUpload.PostedFile 始终为 null

    我在 UpdatePanel 中有一个 FileUpload 控件 我已成功向脚本管理器注册上传按钮以进行完整的回发 我遇到的唯一问题是 FileUpload HasFile 始终返回 null 注意 当我将 FileUpload 控件移到
  • 在 Mongoose / MongoDB 中创建多字段索引

    我试图找到有关如何在 Mongoosejs 中创建多字段索引的文档 但无济于事 特别是我有两个需要索引和唯一的字段 将两个字段一起索引的猫鼬模式示例是什么 你打电话给index方法对你的Schema对象这样做如图所示here 对于你的情况
  • Java 中的 IntPtr (C#) 相当于什么?

    Java JNA 中的 IntPtr C 相当于什么 com sun jna ptr IntByReference
  • Javascript regexObj.exec() 说 TypeError:pattern.exec 不是函数

    我想使用正则表达式从 img 标签中提取图像名称javascript 我的问题是console log 抛出异常 TypeError pattern exec is not a function JS label btn danger on
  • 固定维数 (N=9)、对称、正半定稠密线性系统的快速求解

    您会推荐哪种算法来快速求解固定维数 N 9 的密集线性系统 矩阵是对称的 半正定的 高斯消去法 LU分解 乔列斯基分解 etc 类型为 32 位和 64 位浮点 这样的系统将被解决数百万次 因此算法在维度 n 9 方面应该相当快 附 示例r
  • Scala 方法类型和作为参数的方法

    在下面的代码示例中 我不明白为什么函数 fun 可以作为参数传递给方法addAction 方法fun属于类型Unit 而该方法addAction需要类型的函数 gt Unit If fun属于类型 gt Unit 那么为什么编译器会抱怨fu
  • AngularJS:段落元素的换行符

    在 Angular 中 我需要从包含换行符的文本块生成一系列段落元素 我可以想出几种方法来做到这一点 然而我想知道是否存在 官方 Angular 方式 或者在 AngularJS 上下文中最优雅的方法是什么 一个例子 From Lorem
  • 如何通过 cypress.io 使用 vue.js v-select 查找元素并选择?

    抱歉 我需要有关 cypress io 查找元素 v select 和 select 选项的帮助
  • 根据视差图进行 OpenCv 深度估计

    我正在尝试使用 OpenCV 估计立体图像对的深度 我有视差图 深度估计可以通过以下方式获得 Baseline focal depth disparity SensorSize 我使用块匹配技术在两个校正图像中找到相同的点 OpenCV 允
  • Xamarin iOS 模拟器运行旧代码

    当我从 Visual Studio 调试 Xamarin iOS 项目时 它会在模拟器上构建 安装并启动应用程序 不会出现任何问题 但在启动时 我看到了来自某个方法的大量调试跟踪 而该方法甚至不再存在于我的 C 代码中 我还可以在删除该方法
  • 使用 SAM 创建 API 网关代理资源

    我有一个看似简单的要求 即在 SAM 亚马逊的无服务器应用程序模型 中创建代理资源 事实上非常简单 以至于亚马逊的文档似乎将其保留为exercise致读者 我想创建一个 AWS API Gateway 包罗万象的终端节点来将所有内容代理到另
  • isNew() 如何判断会话是新会话还是已在使用中?

    如何调用isNew 在会话对象上 检查会话是否是新会话或已在使用中 我读到了isNew 如果客户端尚未响应会话 ID 则返回 true 但是这是什么意思 请解释 我读到 如果客户端尚未响应会话 ID 则 isNew 返回 true 但是这是