使新选项卡的Java会话无效

时间:2012-04-03 05:32:41

标签: java session

当我点击同一个应用程序的新标签页(同一个网址)时,如何使会话无效?一旦我访问了相同的URL,就会打开现有会话。

我想开始不同的会话

5 个答案:

答案 0 :(得分:2)

对于会话/ cookie,浏览器目前不支持每个不同选项卡/窗口的单独cookie。

但是,有些框架具有Window的这个概念,因此使用它时可以在打开新窗口/选项卡时收到通知。一旦你能够检测到它,你就可以破坏旧的窗户。更新会话(或使其无效并创建新会话)将不会在另一个选项卡上产生所需的效果(即使您可以这样做),因为当用户转到另一个旧选项卡时,整个事情可能会重复。

您最好的选择是在一个会话中为用户保留多个窗口。

答案 1 :(得分:0)

如果您使用简单的servlet,可以使用以下代码,

// Get the existing session. 
 HttpSession session = request.getSession(false); 

  // Invalidate the existing session. 
 if(session!=null) { 
    session.invalidate(); 
 } 

您可以通过在web.xml中为新选项卡URL进行映射来调用此servlet。

答案 2 :(得分:0)

对不同标签/窗口中的不同会话使用网址重写。如果要使会话无效,则只需删除该用户以前的所有会话。唯一的问题是如果有人复制并粘贴了网址。如果这可能是一个问题,那么请以某种方式将会话密钥存储在HTML5存储中。

答案 3 :(得分:-1)

会话ID保存在cookie中,因此您不能同时在一个浏览器(新选项卡或新窗口 - 无关紧要)中为同一个应用程序创建两个不同的会话。

答案 4 :(得分:-1)

您的服务器会话使用HTTP会话进行映射。您不能在同一个浏览器中同时拥有两个HTTP会话...您如何识别已在新标签中按下“打开”并且他没有在同一个标​​签中打开该链接?你应该有一个AJAX ping(非常棘手......)