如何在tomcat中创建新会话并保留旧会话?

时间:2013-11-04 08:05:56

标签: session tomcat

现在用户在他的权限中有很多角色,我将允许他点击href并在新窗口中扮演另一个角色。每个角色都有自己的会话。

由于浏览器打开窗口无法打开新会话,我必须在服务器端找到一种方法。

但是请求不支持request.createSession或request.setSession(new Session()),如何为这个用例分隔新会话?

2 个答案:

答案 0 :(得分:0)

您可以通过HttpSession#invalidate旧会话创建新会话,但不能保留旧会话。可以通过以下几点帮助您

  1. 您已经提到每个角色都有自己的会话
  2. 当用户单击某个角色时,将使当前会话(也是角色)无效并创建新会话
  3. 提供链接以在必要时返回其先前的角色
  4. 如果他回到上一个角色,请重复步骤2.

答案 1 :(得分:0)

你没有tomcat的支持。你自己必须这样做。

下一个策略不会在群集tomcat上工作。这里不保证。

更改为新会话

  1. 通过getAttributeNames()getAttribute(String)将会议属性全部添加到HashMap
  2. HashMap序列化为临时文件或静态并发映射,作为后者可以访问的内容。还存储当前HttpServletRequest.getRequestURL()以用于后一个重定向。您 要序列化。
  3. 再次遍历会话属性并removeAttribute(String)全部。
  4. 添加密钥以访问文件或并发映射到会话。
  5. 将用户重定向到登录页面或综合添加会话所需的所有授权。
  6. 恢复旧会话

    1. 检查用户是否有用于访问旧会话的密钥。如果他或她这样做,请反序列化HashMap
    2. 如果反序列化有效,请走会话并removeAttribute(String)所有内容
    3. 在会话中走HashMapsetAttribute(String, Object)
    4. 将用户重定向到第2步以某种方式存储的网址。
    5. 我懒得编写代码并亲自测试,但我认为这样可行。