春季请求和会话范围有啥区别?
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是无状态协议
【讨论】:
以上是关于春季请求和会话范围有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章