会话管理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

注意,并没有一个直接的方法来删除一个 cookie,你只能创建一个同名的 cookie,并将maxAge 设置为0,并添加到 HttpServletResponse 中来“覆盖”原来的那个cookie。

HttpSession

Cookie 最大的问题在于用户可以通过设置禁用浏览器的 cookie 功能。此时更好的替代方案是会话(Session)。

一个用户有且最多有一个 HttpSession,并且不会被其他用户访问到。HttpSession 对象在用户第一次访问网站时自动被创建,你可以通过调用 HttpServeltRequest 的 getSession()

方法获得该对象。

getSession() 方法会返回当前的 HttpSession,若当前没有,则创建一个返回。

可以通过 HttpSession 的 setAttribute() 方法将值放入 HttpSesion 中。放到 HttpSesion 中的值不仅限于 String 类型,可以是任意实现了 java.io.Serializable 接口的 java 对象。其实,你也可以将不支持序列化的对象放入 HttpSession,只不过这样做会有隐患。

调用 setAttribute() 方法时,若传入的 name 参数此前已经使用过,则会用新值覆盖旧值。通过调用 HttpSession 的 getAttribute() 方法可以取回之前放入的对象。

所有保存在 HttpSession 的数据不会发送到客户端。容器为每个 HttpSession 生成唯一的表示,并将该标识发送给客户端,或创建一个名为 JSESSIONID 的 cookie,或者在 URL 后附加一个名为 jsessionid 的参数。在后续的请求总,浏览器会将该标识发送给客户端,这样服务器就可以识别该请求是由哪个用户发起的(这个过程无须开发人员介入)。

默认情况下,HttpSession 会在用户不活动一段时间之后自动过期,该时间由 web.xml 中的session-timeout 元素配置,单位为分钟(如果不设置,则过期时间由容器自行决定)。此外,HttpSession还定义可一个 invalidate() 方法强制会话立即过期失效。

1.

2. 2

3.

相关文档
最新文档