我对javax.servlet.http.HttpSession的文档感到困惑。
它说:
会话用于跨多个页面请求维护状态和用户身份。可以通过使用 cookie 或通过 URL 重写来维护会话。
现在 cookie 和 URL 重写都由服务器中的应用程序代码(即我们的代码)处理。
然后它说与何时将会话视为new
:
在客户端加入之前,服务器认为会话是新的。在客户端加入会话之前,isNew 方法返回 true。值为 true 可以表示以下三种情况之一:
1. 客户端还不知道会话
2. 会话尚未开始
3. 客户端选择不加入会议。如果客户端仅支持 cookie 并选择拒绝服务器发送的任何 cookie,则会发生这种情况。如果服务器支持 URL 重写,这种情况不会经常发生。
我不清楚何时考虑/意味着client has joined the session
.
我的意思是,如果我不使用我的 Web 应用程序(或 URL 重写)中的 cookie,并且我有以下内容:
- 从 IP A POST 到服务器
- 200 OK 从服务器到 A
- 从 IP A POST 到服务器
在第 3 步中将session.isNew()
返回 true 还是 false?从文档中我不清楚。
它会返回 false(即会话不是新会话)并且我必须调用session.invalidate()
才能创建新会话?
这让我更加困惑的原因是因为我正在调试一段代码,其中客户端是 HTTP 应用程序而不是 Web 浏览器,我看到在第 3 步中,尽管服务器代码中没有 cookie 或 url 重写,但session.isNew()
没有返回true
.
所以我无法弄清楚引擎盖下发生了什么。
任何可以帮助理解这一点的信息?