春季请求和会话范围有啥区别?

Posted

技术标签:

【中文标题】春季请求和会话范围有啥区别?【英文标题】:what is the difference between request and session scope in spring?春季请求和会话范围有什么区别? 【发布时间】:2018-03-06 21:48:26 【问题描述】:

在请求范围内,bean 被定义为 HTTP 请求,而在会话范围内,它被限定为 HTTP 会话。 举个例子,

如果 bean 范围是 request,并且用户在其用户会话中对网页发出多个请求,则在每个请求上都会创建一个新 bean。

而如果 bean 的范围被定义为 session,如果用户多次请求网页,那么每次请求都会返回相同的 bean。

请告诉我这个理解是否正确?

【问题讨论】:

【参考方案1】:

你的理解是正确的。不过我想补充一点

如果范围被定义为 bean 的会话,如果用户 多次请求网页,然后在每个请求上 将返回相同的 bean。

我会将其更改为“而如果范围被定义为 bean 的会话,如果用户多次请求网页,那么在每个请求上都会返回相同的 bean,只要因为请求在同一个用户会话中,并且由能够维护会话的客户端发出(除非您传递 cookie/会话标识符标头,否则您不能指望 curl 维护用户会话)。 "

【讨论】:

- 这意味着如果我正在创建基于 REST 的 API 并且没有使用任何会话变量 - 会话范围和请求范围变得相同??【参考方案2】:

会话范围 -- 当范围为会话时,formbean(表单数据)的值将在整个会话期间可用。它不会被销毁,直到会话超时或会话被销毁。

请求范围 -- 当范围为请求时,formbean(表单数据)的值将可用于当前请求。它会在同一用户/不同用户的每个请求上刷新。

因为http是无状态协议

【讨论】:

以上是关于春季请求和会话范围有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

saveUninitialized 和重新保存有啥区别?

在 IIS 中,“应用程序”和“会话”有啥区别?

示例 http 范围请求会话

春季安全会话标识符未更新

RSpec:特性和请求规范有啥区别?

如何在jsp的会话范围内存储请求对象