gpt4 book ai didi

java - 什么是 Java 中的 session 管理?

转载 作者:太空狗 更新时间:2023-10-29 23:03:03 27 4
gpt4 key购买 nike

我在面试中也遇到过这个问题。我确实对 Java 中的 session 范围及其管理感到困惑。

在 web.xml 中我们确实有条目:

<session-config>
<session-timeout>
30
</session-timeout>
</session-config>

它究竟说明了什么?它是整个项目的范围吗?

另外一个让我很困惑的地方是如何在同一个项目中分离多个请求的session作用域?意思是说,如果我从一台 PC 登录,同时又从另一台 PC 登录,它能区分吗?

此外,另一个令人困惑的事情是浏览器的差异。为什么不同的Gmail可以在不同的浏览器打开? Gmail 可以防止从登录到注销的 session 。我们的个人网站如何维护它?

最佳答案

session 管理不仅限于 Java 和 servlet。大致情况如下:

  1. HTTP协议(protocol)是无状态的,所以服务器和浏览器应该有办法通过多次请求来存储用户的身份
  2. 浏览器向服务器发送第一个请求
  3. 服务器检查浏览器是否已识别 session cookie(见下文)

    3.1。如果服务器不“知道”客户端:

    • 服务器创建一个新的唯一标识符,并将其(粗略地)放入一个 Map 中,作为键,其值为新创建的 Session。它还会发送包含唯一标识符的 cookie 响应。

    • 浏览器存储 session cookie(生命周期 = 浏览器实例的生命周期),其中包含唯一标识符,并将其用于每个后续请求以唯一标识自己。

    3.2。如果服务器已经知道客户端 - 服务器获取与在 session cookie 中找到的传递的唯一标识符对应的 session

现在回答您的一些问题:

  • session 超时是每个 session 映射条目未被访问的生存时间。换句话说,如果客户端在 30 分钟内没有发送请求(从您的示例来看), session 映射将删除此条目,即使客户端使用 session cookie 中的唯一 key 标识自己,也不会存在任何数据在服务器上。

  • 不同的 gmail(以及任何网站)可以在不同的浏览器中打开,因为 session cookie 是针对每个浏览器的。 IE。每个浏览器通过不发送唯一 session ID 或发送服务器为其生成的 session ID 来唯一标识自己。

  • 从不同的 PC 登录实际上是相同的 - 您不共享 session ID

  • 注销实际上是删除服务器上 session ID 的条目。

注意:唯一的 session ID 也可以存储:

关于java - 什么是 Java 中的 session 管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3067383/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com