了解HTTP会话和会话cookie之间的关系

时间:2014-03-18 04:16:37

标签: session cookies

我只是在了解会话如何在J2EE环境中工作。让我们说有人在MusicServlet上发出GET请求,我需要从他们的会话中提取一些数据,所以我打电话给:

request.getSession(false);  //if they don't have one, I don't want to create one

我试图找出服务器如何知道哪个会话属于我,因为请求本质上是无状态的,并且只存在一个MusicServlet实例。也许我正在混合概念。它是用于匹配'的JSessionID cookie吗?用户在服务器上的特定会话?这是否意味着如果我清除了我的cookie,那么属于我的会话无法被检索?

1 个答案:

答案 0 :(得分:1)

是的,你做得对 - 会话cookie中的随机标识符将客户端浏览器中的特定cookie与服务器端的会话存储绑定。

使用setAttribute()设置的内容将存储在服务器端并附加到JSESSIONID。如果通常无状态客户端返回相同的JSESSIONID,则服务器可以从其存储中检索其会话,getAttribute()将返回先前存储的值。如果cookie丢失,服务器上的会话将变为孤立状态,并在一段时间后过期。

P.S。会话并非总是存储在服务器端 - 例如Play framework stores them on client side