注意,并没有一个直接的方法来删除一个 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 的参数。在后续的请求总,浏览器会将该标识发送给客户端,这样服务器就可以识别该请求是由哪个用户发起的(这个过程无须开发人员介入)。
jsessionid默认情况下,HttpSession 会在用户不活动一段时间之后自动过期,该时间由 l 中的session-timeout 元素配置,单位为分钟(如果不设置,则过期时间由容器自行决定)。此外,HttpSession还定义可一个 invalidate() 方法强制会话立即过期失效。
1. <session-config>
2. <session-timeout>2</session-timeout>
3. </session-config>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。