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

Session 如何在tomcat中创建新会话并保留旧会话?,session,tomcat,Session,Tomcat,现在用户有很多角色在他的权限中,我将允许他单击href并在新窗口中扮演另一个角色。每个角色都有自己的会话 由于浏览器打开窗口不能用新会话打开,我必须在服务器端找到一种方法 但是request不支持request.createSession或request.setSession(new Session()),如何为此用例分离新会话?您可以按旧会话创建新会话,但不能保留旧会话。以下几点可以帮助你吗 您已经提到,每个角色都有自己的会话 当用户单击角色时,将使当前会话(也是角色)无效,并将创建新会话 如

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

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


但是request不支持request.createSession或request.setSession(new Session()),如何为此用例分离新会话?

您可以按旧会话创建新会话,但不能保留旧会话。以下几点可以帮助你吗

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

  • 你没有得到tomcat的支持。你必须自己去做

    下一个策略在集群tomcat上不起作用。这里没有保证

    切换到新会话

  • 通过
    getAttributeNames()
    getAttribute(String)
    将会话属性全部添加到
    HashMap
    中,遍历会话属性
  • HashMap
    序列化为tempfile或静态并发映射,作为您可以访问后者的内容。还存储当前的
    HttpServletRequest.getRequestURL()
    ,以便以后重定向。您有
    要序列化
  • 再次遍历会话属性,然后将它们全部删除
  • 添加密钥以访问文件或会话的并发映射
  • 将用户重定向到登录页面或综合添加会话所需的所有授权
  • 恢复到旧会话

  • 检查用户是否具有访问旧会话的密钥。如果他或她这样做,则对
    HashMap
    进行反序列化
  • 如果反序列化有效,则遍历会话并删除属性(字符串)所有内容
  • 在会话上遍历
    HashMap
    setAttribute(字符串,对象)
  • 将用户重定向到步骤2中以某种方式存储的URL

  • 我懒得自己编写代码并进行测试,但我认为这会奏效。

    你做不到。浏览器和它们之间的Tomcat决定了什么是会话。不是你。我认为我应该让多个角色打开,这对用户查看和复制粘贴以及其他工作非常有用。为什么你应该坚持使用角色和会话,然后我认为角色+用户名=新用户名。这个问题与如何使用两个不同的帐户登录同一网站相同,每个帐户位于同一浏览器的一个选项卡中。若我让用户注销并作为另一个角色登录,然后重新登录,那个么他在浏览器、滚动条、选择栏和其他页面中的所有状态都将消失。