【发布时间】:2014-09-18 15:08:57
【问题描述】:
1 - 会话变量存储在 java web 应用程序中的什么位置?在客户端还是服务器端?
2 - 如果我在会话中放置大量对象和变量,它会减慢客户端的请求吗?
P.S 在我的情况下,我使用spring mvc。
【问题讨论】:
标签: java session spring-mvc servlets
1 - 会话变量存储在 java web 应用程序中的什么位置?在客户端还是服务器端?
2 - 如果我在会话中放置大量对象和变量,它会减慢客户端的请求吗?
P.S 在我的情况下,我使用spring mvc。
【问题讨论】:
标签: java session spring-mvc servlets
“会话”变量由两部分组成,一个非常小的会话标识符,它存储在客户端上,通常命名为jSessionId,并存储为cookie。但是,sessionId 也可以编码为 URL。
会话的第二部分是实际数据,它存储在服务器上。如果您的服务器是多服务器集群的一部分,则可能在 服务器端 数据库中。每个 session 都由该 sessionId 标识,并且客户端在每个请求中发送它。这就是为什么它被设计成非常小。
【讨论】:
jSessionId 存储在客户端中,为什么我们不将所有变量都作为会话变量而不是请求变量/属性?
简单的答案是:您的会话数据存储在服务器端。
Web 浏览器将只获得一个字符串 id 来识别它的会话。
其实spring security更关心session信息,因为即使用户不登录,session也可能根本不存在。
当我只使用spring mvc时,我不使用session来存储重要数据,因为session只存储在内存中。它旨在临时保存数据。
当我使用spring security的时候,我必须在内存中保存很多重要的东西,例如无法在互联网上传输的帐户数据,并且我不会每次都从数据库中加载它们。所以我必须选择会话。
因此,当存储登录会话的服务器关闭时,所有已登录该服务器的用户都必须重新登录以获取另一个会话 ID。
Session 并不总是最好的选择,因为当我们有很多服务器使用会话数据时,我必须在所有服务器之间共享数据,无论如何,net IO 对于服务器来说是昂贵的。
【讨论】:
1.它存储在服务器上
2.Session存储在服务器上,所以你在其中设置的Object也可能存储在服务器上。请求只向服务器发送一个SessionId来识别这个用户s Session to other users会话。
【讨论】: