我有一个“变量”,用户可以在 JSP/Struts 应用程序中修改它,该变量必须在整个 Web 应用程序的会话中保持不变。他们可能会离开设置和查看它的页面(仍然留在应用程序中),当他们回来时,他们最后为该变量设置的值应该仍然存在。
显而易见的选择是将其存储为会话属性。这就是我几年前会做的事情。但是 Internet Explorer 8 和更高版本会导致 Web 应用程序用户对打开同一站点的所有浏览器进行一个会话。换句话说,如果用户在浏览器中打开我的应用程序,然后在另一个浏览器中再次打开它,他们共享一个会话。我认为他们正在共享代表该会话的 cookie。结果是,如果他们更改了一个浏览器会话中的值,那么该值也将在另一个浏览器中更改。
我的用户将在单个工作站上多次运行 Web 应用程序,我需要他们能够在不同的浏览器窗口(甚至选项卡)中为上述变量设置不同的值,并为此保持不同的值浏览器(或选项卡)的生命周期,但不影响同一应用程序的任何其他打开的浏览器(或选项卡)。
所以,据我所知,使用会话属性是不可能的。(嗯,有 IE -nomerge 选项,但没有办法强制用户使用该选项启动 IE)。
我希望我不是第一个处理这个问题的人,并且有人已经优雅地解决了这个问题,并且那个人阅读了这篇文章并做出了回应。