其中会话变量存储在java Web应用程序中

时间:2014-07-27 05:17:08

标签: java session spring-mvc servlets

1 - 会话变量存储在java Web应用程序中的哪些位置?在客户端或服务器端?

2 - 如果我在会话中放入了大量对象和变量,它会减慢客户端的请求吗?

P.S在我的情况下,我使用spring mvc

3 个答案:

答案 0 :(得分:9)

"会话"变量由两部分组成,一个非常小的会话标识符,存储在客户端上,通常名为jSessionId并存储为cookie。但是,sessionId也可以编码为URL。

会话的第二部分是实际数据,它存储在服务器中。如果您的服务器是多服务器群集的一部分,则可能位于服务器端数据库中。每个会话由该sessionId标识,客户端会在每次请求时发送它。这就是为什么它设计为非常小。

答案 1 :(得分:6)

简单的答案是:您的会话数据存储在服务器端。

Web浏览器只会获得一个字符串ID来识别它的会话。

事实上,Spring安全性会更多地关注会话信息,因为如果用户甚至不登录,则会话可能根本不存在。

当我只使用spring mvc时,我不使用session来存储重要数据,因为session只存储在内存中。它旨在临时保存数据。

当我使用spring security时,我必须在内存中保存许多重要的东西,例如无法在Internet上传输的帐户数据,并且我不会每次都从数据库加载它们。所以我必须选择会话。

因此,当存储登录会话的服务器关闭时,所有已登录此服务器的用户都必须重新登录以检索另一个会话ID。

Session并不总是最佳选择,因为当我们有许多使用会话数据的服务器时,我必须在所有服务器之间共享数据,无论如何,net IO对于服务器而言是昂贵的。

答案 2 :(得分:1)

1.it存储在服务器上 2.Session存储在服务器上,因此您在其中设置的对象也可以存储在server.Request上,只将SessionId发送给服务器以识别此用户s Session to other users会话。