【问题标题】:Avoid using same session across multi tabs避免跨多个标签使用相同的会话
【发布时间】:2016-07-25 07:15:24
【问题描述】:

我遇到了会话问题,即在我的 Web 应用程序中,不同的用户登录,然后在多个选项卡之间共享同一个会话。问题是我在浏览器中跟踪单个会话以执行此类过程。是否有任何可能的方法来保持 JSP 和 Servlet 中选项卡的会话。当重复或其他用户登录到同一应用程序时,我不能使会话无效。我被这个困住了。

【问题讨论】:

标签: jsp session servlets browser tabs


【解决方案1】:

服务器(您的 jsp/servlet 所在的位置)通常无法判断链接是在同一窗口中打开还是在新选项卡/窗口中打开;当然,除非客户端(在这种情况下是 Web 浏览器)告诉它。简单的说;一些客户端代码就可以了。

您可以使用HTML5 window.sessionStorage 对象。为每个选项卡/窗口创建此对象的新实例。因此生成一个随机 id 并保存在每个浏览器选项卡的会话存储中。然后每个浏览器选项卡都有自己的 ID。将此 id 传递给服务器...

See this answerGonzalo Galloti

希望对你有帮助

【讨论】:

  • 您能否举一个简短的例子,如何将标签 ID 传递给服务器,好吗?通过隐藏字段或任何其他方式?问题是我在 java 类(仍然是 Struts 1)中为请求设置了一个值,并且能够在显示的 JSP 中获取它。那么无论在哪个动作类中,如何继续能够获取此选项卡 ID?谢谢
  • 我在 JSP sessionStorage.setItem('country', '<%= country %>'); 中尝试了如下操作,但据我所知,它仅适用于客户端。这就是为什么当我稍后在 Action 类中尝试获取它时,如下所示:request.getSession().getAttribute("country") 它不起作用:(。
猜你喜欢
  • 2017-01-30
  • 2021-12-26
  • 2018-06-04
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
相关资源
最近更新 更多