Httpsession适用于每个用户还是每个浏览器?

Httpsession适用于每个用户还是每个浏览器?,http,web-applications,tomcat,servlets,Http,Web Applications,Tomcat,Servlets,我正在使用tomcat作为我的Web服务器。我在IE中点击了一些url,并为该请求在HttpSession中放置了一些对象 现在我的问题是: 如果我关闭浏览器并在新浏览器中点击url,我先前在会话中放置的对象是否可用 如果我不关闭浏览器并在新的选项卡/窗口中点击url,我先前在会话中放置的对象是否可用 他说: 提供一种方法,用于跨多个页面请求或访问网站来识别用户,并存储有关该用户的信息 根据我在这里的理解,“用户”一词是指“浏览器”。一旦我们打开一个新浏览器,Tomcat/任何Web服务器都会将

我正在使用tomcat作为我的Web服务器。我在IE中点击了一些url,并为该请求在
HttpSession
中放置了一些对象

现在我的问题是:

  • 如果我关闭浏览器并在新浏览器中点击url,我先前在会话中放置的对象是否可用

  • 如果我不关闭浏览器并在新的选项卡/窗口中点击url,我先前在会话中放置的对象是否可用

  • 他说:

    提供一种方法,用于跨多个页面请求或访问网站来识别用户,并存储有关该用户的信息

    根据我在这里的理解,“用户”一词是指“浏览器”。一旦我们打开一个新浏览器,Tomcat/任何Web服务器都会将其视为新用户。这是正确的吗?Tomcat是通过cookie还是重写URL实现的

    javadoc还说:

    会话信息的范围仅限于当前web应用程序(ServletContext)


    如果是这样的话,我们在会话中设置的任何对象都应该对所有用户请求可见,即使是从不同的机器触发,因为每个Web服务器都有servlet上下文。但在应用程序范围不在会话范围内的情况下也是如此。我不明白它想说什么。

    该会话实际上绑定到一个浏览器,在该浏览器中打开的所有帧/选项卡共享同一个会话。如果退出浏览器,则会丢失会话

    会话跟踪是使用cookie实现的,但如果浏览器不接受cookie,则可以返回URL重写。然而,这需要开发人员非常谨慎,并且始终使用适当的方法或标记来编码应用程序的每个链接和操作的URL


    最后一部分的意思是,如果在同一个servlet容器中部署两个不同的webapp,并且同一个用户使用同一个浏览器使用这两个应用程序,那么他将拥有两个不同的会话:每个webapp一个会话。第一个webapp的会话与第二个webapp的会话完全隔离。

    我认为这取决于服务器实现(会话cookie或URL中的参数)

    默认情况下,Tomcat使用会话cookie,如果用户代理拒绝cookie,则使用URL参数

    因此,行为当然会改变

    • 用饼干
    • 没有
    • 带URL
    • 没有;如果复制了带&JSESSIONID的完整URL,则为“是”
    • 没有;如果复制了带&JSESSIONID的完整URL,则为“是”

    谢谢。它带来了很多清晰。还有一个问题,您告诉我会话跟踪是使用cookie实现的。那么在这种情况下,当我们关闭第一个浏览器并打开第二个浏览器时,会话中的旧对象也应可用于第二个浏览器请求,因为cookie通常不会在浏览器关闭时被删除?否。会话cookie不会持久。它们保存在离子内存中,当浏览器退出时会被遗忘。非常感谢。最后一个问题是,如果我不关闭第一个浏览器,也不打开一个新浏览器,该怎么办。现在,第一个请求期间放置的会话中的旧对象是否可用于第二个浏览器请求。每个浏览器都有一个会话。因此,第二个浏览器将具有与第一个不同的会话。相关: