gpt4 book ai didi

java - 无法理解 session 对象的行为

转载 作者:行者123 更新时间:2023-11-29 06:04:56 26 4
gpt4 key购买 nike

我对 javax.servlet.http.HttpSession 的文档感到困惑.
它说:

Sessions are used to maintain state and user identity across multiple page requests. A session can be maintained either by using cookies or by URL rewriting.

现在 cookie 和 URL 重写都由服务器中的应用程序代码(即我们的代码)处理。

然后它说与 session 何时被视为有关:

The server considers a session to be new until it has been joined by the client. Until the client joins the session, the isNew method returns true.A value of true can indicate one of these three cases:
1. the client does not yet know about the session
2. the session has not yet begun
3. the client chooses not to join the session. This case will occur if the client supports only cookies and chooses to reject any cookies sent by the server. If the server supports URL rewriting, this case will not commonly occur.

我不清楚什么时候认为/意味着客户端已加入 session

我的意思是如果我不使用来 self 的网络应用程序的 cookie(或 URL 重写)并且我有以下内容:

  1. 从 IP A POST 到服务器
  2. 从服务器到 A 的 200 OK
  3. 从IP A POST 到服务器

在第 3 步中,session.isNew() 会返回 true 还是 false?我从文档中不清楚。
它会返回 false(即 session 不是新 session )并且我必须调用 session.invalidate() 才能创建新 session 吗?
这让我更加困惑的原因是因为我正在调试一段代码,其中客户端是 HTTP 应用程序而不是 Web 浏览器,我看到在第 3 步中 session.isNew() 没有返回true 虽然服务器代码中没有cookies或url重写。
所以我无法弄清楚引擎盖下发生了什么。
有什么信息可以帮助理解这一点?

最佳答案

这是一个很好的例子 Session Tracking

Client has joined the session 表示客户端发出后续请求并包含 session ID,您的网络服务器可以识别该ID。如果启用了 cookie - jsessionid 将与 cookie 一起传递,否则 - 它应该包含在 URL 本身中 - 像这样 http://localhost:8080/bookstore1/cashier;jsessionid=c0o7fszeb1

在 JSP 中,Core Tag Library 的 c:url 将为您处理 URL 重写。

如果是 B2B 通信,您必须自己获取 session ID 并将其手动包含在后续请求中。

示例:

  1. 从 IP A POST 到服务器
  2. 从服务器到 A 的 200 OK
  3. A从响应中获取session id
  4. 从 IP A POST 到服务器并包含获得的 session id

更新:

考虑阅读一篇很棒的文章 - "Web Based Session Management: Best practices in managing HTTP-based client sessions."它是关于如何模拟 HTTP session 并且不依赖于 Java 的一般概述。

关于java - 无法理解 session 对象的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8847190/

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