在不使用会话上下文的情况下在 Web 应用程序中保留值

2024-01-05

我有一个“变量”,用户可以在 JSP/Struts 应用程序中修改该变量,该变量必须在整个 Web 应用程序的会话中保留。他们可能会离开设置和查看该变量的页面(仍然留在应用程序中),并且当他们回来时,他们上次为该变量设置的值应该仍然存在。

显而易见的选择是将其存储为会话属性。这就是我几年前就会做的事情。但 Internet Explorer 8 及更高版本会导致 Web 应用程序用户对打开同一站点的所有浏览器拥有一个会话。换句话说,如果用户在浏览器中打开我的应用程序,然后在另一个浏览器中再次打开它,他们将共享一个会话。我认为他们正在共享代表该会话的 cookie。结果是,如果他们更改一个浏览器会话中的值,那么该值也会在另一个浏览器中更改。

我的用户将在单个工作站上多次运行 Web 应用程序,我需要他们能够在不同的浏览器窗口(甚至选项卡)中为上述变量设置不同的值,并保留不同的值浏览器(或选项卡)的生命周期,但不会影响同一应用程序的任何其他打开的浏览器(或选项卡)。

因此,据我所知,使用会话属性是不可能的。 (有 IE -nomerge 选项,但无法强制用户使用该选项启动 IE)。

我希望我不是第一个处理这个问题的人,并且有人已经优雅地解决了这个问题,并且那个人阅读了这篇文章并做出了回应。


如果不同的选项卡或窗口都发回相同的会话 ID,则服务器无法区分它们。但是,如果您需要这种功能,那么我会考虑将“差异”构建到 URL 中。例如,一个选项卡可能具有 /myapp/xxxxx/,而另一选项卡可能具有 /myapp/yyyyy/。它们可能共享相同的会话,但服务器仍然可以区分它们。 URL 的实际格式并不重要,只要浏览器始终在某处返回神奇部分(例如:xxxxx)即可。在服务器端,您可以根据 sessionid 和发出请求的 URL 跟踪每个会话的多个数字。

唯一需要决定的是您如何注意到新选项卡或窗口已打开,因为您必须分配一个新 URL,但这只是管道。例如,您可能有一个需要设置为匹配 URL 的本地 js 变量,然后当新选项卡打开时,该变量将不匹配,因此您可以转到新的适当 URL 并设置本地变量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在不使用会话上下文的情况下在 Web 应用程序中保留值 的相关文章

  • Java Servlet 中限制 HTTP 请求

    在 java servlet 中 如何根据客户端的 IP 地址限制来自用户的 http 请求 我不想每秒处理来自特定源 IP 地址的超过 X 个请求 其中 X 是可配置的并且具有 0 1 中的实际值 10 范围 从 10 秒内 1 个请求到
  • 单击链接时如何将另一个 JSP 页面注入到

    我在一个JSP页面中有两个不同的部分 其中一个包含链接菜单 单击时 div2 id content 会相应加载不同的页面 我正在做类似的事情 div ul class navbar li a href Login jsp Login a l
  • Web 服务器和 servlet 容器之间的区别

    Web 服务器 和 Servlet 容器 有什么区别 一般来说 所有 Web 服务器也是 Servlet Web 容器 反之亦然吗 我一直在使用 Apache Tomcat for JSP 和 Apache for PHP 但无法弄清楚这两
  • JSP:无法弄清楚如何为 GlassFish 3.1.2 响应设置 UTF-8

    我正在使用 GlassFish 3 1 2 每当访问 JSP 页面时都会看到以下警告 PWC4011 无法将请求字符编码设置为UTF 8 context myapp 因为请求参数已经被读取 或者 ServletRequest getRead
  • 如果我在 JSP 中有 html 元素,那么执行顺序是什么?

    什么将执行第一个 body 元素或 head 元素 Head Body scriplet 如果我明白您的要求 JSP 文件中的每个元素都会按照代码从上到下出现的顺序进行处理
  • 在 Portlet 环境中使用 jsp:param / c:param

    我正在尝试包含 JSP 页面jsp param在 Portlet 环境中 使用Pluto http portals apache org pluto Portlet 容器 例如
  • Servlet:从 servletinputstream 中剪切上传标头[重复]

    这个问题在这里已经有答案了 我正在编写一个 servlet 它从客户端接收 xml 文件并使用它 我的问题是 在 servletinputstream 我得到的 request getInputStream 中 开头和结尾有一些上传信息 1
  • 如何在JSP中显示对象的数据

    我已通过注册表将一些用户详细信息存储到数据库 hibernate 和 spring 中 我想在单独的 JSP 页面中显示所有用户的用户详细信息 有人可以告诉我该怎么做吗 下面是我的控制器代码 Controller public class
  • Spring mvc 添加多行

    我需要你的帮助 因为标题说我在从 jsp 表单插入多行时遇到问题 该代码来自该网站的答案 控制器 ModelAttribute programform public ProgramForm populatePojos Don t forge
  • JSP 自定义标签库:嵌套评估

    假设我有自定义标签库
  • 仅在文件下载完成后设置 cookie。

    我有一个场景 我想告诉用户下载完成并提示关闭按钮 为此 我使用 jquery 插件来连续监视 cookie 以了解下载何时完成 我的问题是我想设置这个cookie fileDownload true and path 下载完成后立即进行 为
  • Spring 3 集合绑定

    如何将集合绑定到输入数据的表单 不用于显示 例如为一个Set
  • 有没有更快的方法来输出PDF文件?

    这是一段将PDF文件输出到浏览器的代码 可以更快吗 这是在 Java servlet 中实现的 private ByteArrayOutputStream getByteArrayOutputStreamFromFile File file
  • Java 文件上传速度非常慢

    我构建了一个小型服务 它从 Android 设备接收图像并将其保存到 Amazon S3 存储桶中 代码非常简单 但是速度非常慢 事情是这样的 public synchronized static Response postCommentP
  • JSP 标记文件,输出其正文或将其返回到变量中

    我在 tag 文件中有一个自定义标签 用于计算并输出一个值 因为我无法在这里发布代码 所以我们假设一个简单的例子 文件 mytag tag 的内容 lt tag dynamic attributes dynamicParameters gt
  • Jetty - 找不到 Servlet

    我是 Servlet 新手 想通过使用 Eclipse 的 Jetty 插件来调用一个简单的 Servlet 我可以调用 index html 但是当尝试访问 Servlet 时 我得到 HTTP 错误 404访问 ProjectServl
  • 如何在 JAVA servlet 中处理压缩 (gzip) HTTP 请求(不是响应) - 简单示例?

    我为这个问题苦苦挣扎了很长一段时间 在找到一个简单的解决方案后 想问一个问题和答案 这个问题在堆栈溢出时以不同的方式被多次提出 并且accepted solutions是partially correct and complex或谈论res
  • 如何修复XSS漏洞

    我们正在使用 fortify 扫描 java 源代码 它抱怨以下错误 Method abc sends unvalidated data to a web browser on line 200 which can result in th
  • jqgrid删除:没有获取值

    我使用 JSP 和 Servlet IDE Eclipse 数据库 Oracle10 开发 Web 应用程序 我在用JQGRID以表格格式显示数据 我还想要添加 编辑 删除的功能JQGRID 到目前为止我已经完成了编辑功能 现在我想要Del
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻

随机推荐

  • 如何查看应用程序当前使用的堆大小?

    我想我在 NetBeans 中将堆大小增加到 1 GB 因为我将配置更改为如下所示 netbeans default options J Xmx1g 重新启动 NetBeans 后 我能否确定我的应用程序现在已获得 1 GB 空间 有没有办
  • 访问应用的外部脚本中的 buildscript 块中定义的类路径依赖项

    我最初的目标是能够使用中定义的类路径依赖项buildscript in build gradle 在导入的脚本内build gradle using apply from 但是 由于无法解析类 因此外部脚本无法编译 研究这个问题后 我发现逻
  • 我的 Flex 文件输出错误

    我编写了一个 l 文件并希望输出 c17 isc 中的内容 但有一个错误我不知道为什么 我已经给出了我打算读取的文件 flex文件和执行结果 这是 c17 isc 文件 内容的意思是 number gate name gate type o
  • 您可以使用 ffmpeg 流实时插入文件中的文本吗?

    我有这个代码 用于流式传输文件 并将视频某个时间的视频节目名称 name of show 放置在屏幕顶部 屏幕底部则显示节目名称来自 video title txt 并将其放置在屏幕底部 我想要做的是找到一种方法 每隔 1 或 2 分钟 提
  • 如何在 Sonata Media Bundle 中实现多对多关系

    我正在尝试将 SonataMediaBundle 与另一个实体相关联 Products具有多对多关系 架构和关系创建得很好 但是 当我编辑或创建新产品时 我尝试添加一个可以通过媒体库搜索媒体文件的按钮和一个上传新文件的按钮 对于 OneTo
  • 直接链接获取谷歌自定义搜索API密钥?

    我有一个 API 密钥 用于在 json 搜索 API 上进行 Google 自定义搜索查询 如下所示 我需要将客户端发送到一个 URL 每个客户端都可以在其中获取其域的自定义 API 密钥 但是 我不记得用于获取 API 密钥的 URL
  • JavaScript、Node.js:Array.forEach 是异步的吗?

    我有一个关于本地人的问题Array forEachJavaScript 的实现 它的行为是异步的吗 例如 如果我打电话 many many elements forEach function lots of work to do 这会是非阻
  • 在 Mathematica 中使用 $NewSymbol 移动上下文

    我正在玩 NewSymbol试图找到答案这个问题 https stackoverflow com q 6165977 421225 with 文档说 http reference wolfram com mathematica ref 24
  • iOS 上的 javascript 除了在其框架内执行之外,是否还必须由 WebKit 框架下载?

    协议是这样说的 3 3 2 内部使用应用程序不得下载或安装可执行代码 如果所有脚本 代码和解释器都打包在应用程序中并且未下载 则解释的代码只能在应用程序中使用 上述唯一的例外是由 Apple 内置 WebKit 框架下载和运行的脚本和代码
  • TensorFlow 2.0:如何更新张量?

    在 TensorFlow 1 x 中 要更新张量 我会使用tf scatter update 仅更新张量的相关部分 我们如何在 TF 2 0 中做同样的事情 您可以使用tf tensor scatter nd update https ww
  • 在文本中查找相关单词的算法

    我想要一个单词 例如 Apple 并处理一个文本 或者可能更多 我想提出相关术语 例如 处理 Apple 的文档并发现 iPod iPhone Mac 是与 苹果 相关的术语 关于如何解决这个问题有什么想法吗 作为起点 您的问题涉及文本挖掘
  • 如何在C中打印方阵的所有方子矩阵?

    请帮我用C编程语言找到并打印从大到小方阵的所有方阵子矩阵 我写的代码运行错误 int main int mtrx size 8 int mat 8 8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
  • 创建触发器以插入到另一个表中

    我在执行下面的触发器时遇到一些问题 CREATE OR REPLACE TRIGGER AFTERINSERTCREATEBILL AFTER INSERT ON READING FOR EACH ROW DECLARE varReadNo
  • 使用 JWT 和 OpenID Connect 在微服务中进行客户端身份验证

    我对微服务架构中的身份验证有一些疑问 我现在有一个整体应用程序 我的目标是将应用程序拆分为小型微服务 我最大的问题是身份验证 目前 阅读大量文档后 似乎最好的解决方案是使用 OpenID Connect 对用户进行身份验证以检索 JWT 该
  • 通过 JSch 的 SFTP 抛出错误 4:失败

    我在尝试通过 SFTP 将文件从 Windows 传输到 Unix 服务器时遇到了一个特殊问题 错误 堆栈跟踪 是 4 Failure at com jcraft jsch ChannelSftp throwStatusError Chan
  • 为什么每个请求都会执行passport.serializeUser?

    我使用 Passport js Passport facebook token 通过 Strongloop 的环回框架来保护我的 API 构建 为什么护照反序列化成功后还要再次序列化反序列化的用户 每个请求都会调用 Passport aut
  • mongodb数据目录权限

    早些时候 我将所有 mongodb 数据文件存储在 var lib mongodb 目录中 etc mongodb conf 中的 dbpath 条目是 var lib mongodb 现在我想将数据目录更改为 vol db 所以我创建了目
  • 非泛型类是否可以包含 .NET(C# 或 VB.NET)中的泛型列表?

    我希望有人可以帮助我理解这样的事情是否可能 如何可能 在这种情况下 假设您正在尝试对电子表格或数据库中的网格进行建模 但每列中的数据只能是一种数据类型 示例 第 1 列只能包含整数 我创建了一个通用类来模拟列结构 如下所示 public c
  • 为什么“C”中的索引从零开始?

    为什么 C 中数组的索引从 0 开始 而不是从 1 开始 在C中 数组的名称本质上是一个指针 但请看评论 对内存位置的引用 等等表达式array n 指的是一个内存位置n远离起始元素的元素 这意味着索引被用作偏移量 数组的第一个元素恰好包含
  • 在不使用会话上下文的情况下在 Web 应用程序中保留值

    我有一个 变量 用户可以在 JSP Struts 应用程序中修改该变量 该变量必须在整个 Web 应用程序的会话中保留 他们可能会离开设置和查看该变量的页面 仍然留在应用程序中 并且当他们回来时 他们上次为该变量设置的值应该仍然存在 显而易