考虑一下senario,我在servlet中使用带有httpSession对象的servlet,我将一些数据添加到会话对象中,并将响应发送到客户端,客户端发送下一个servlet页面的请求,该页面需要存储在会话对象中的信息。现在,Web服务器如何能够通知客户端给出的请求与先前请求创建的特定会话对象相关联?假设cookie被禁用了吗?
答案 0 :(得分:2)
现在,Web服务器如何能够通知客户端提供的请求与上一次请求时创建的特定会话对象相关联?
通常它使用cookie。 cookie存储服务器与会话对象关联的唯一标识符。
查看您的浏览器Cookie jar,您可能会找到为您的网站存储的jsessionid
Cookie。
还有其他使用URL重写或隐藏表单字段实现会话的技术。使用cookie是最常见和默认的技术。
答案 1 :(得分:1)
如果cookie被禁用,会话跟踪会在网址重写时发生。服务器中的每个url都应使用会话ID进行编码(HttpResponse.encodeURL()会为您执行此操作)。
另一种方法是为会话ID设置隐藏字段。但是,这仅适用于POST请求。
答案 2 :(得分:0)
Cookie是迄今为止在Java Web服务器中实现http会话的最流行的技术。除了cookie之外,还可以使用另外两种技术 - url重写(即将一些额外信息附加到服务器生成的每个URL,这有助于识别会话)和嵌入在表单中的隐藏字段,其值包含标识会话所需的信息