Cookie包含的属性
名称, 内容, 主机, 路径 ....
Cookie的唯一性
一个唯一的Cookie 由 名称,主机,路径 确定. 这里路径是最容易被忽略的,如下图,这两个Cookie虽然名称,主机名都相同,但是确实两个不同的Cookie.
1) 有两个同名的 (PRODUCTS_IN_COOKIE)
2) 两个同名的Cookie 唯一不同的是,他们的 路径,一个指向 /user/ 而 另外一个 指向 根 /
如此可见, 在配置 Cookie 的时候, 路径 也是决定 Cookie 唯一性的 元素.
所以在设定一个唯一的Cookie 的时候,一定要记得 不但要设置唯一的名称而且还要 设置一个统一的路径,如下
Cookie cookie = new Cookie(SessionAttrEnum.PRODUCTS_IN_COOKIE.getValue(), sb.toString() );
cookie.setMaxAge( 10000 );
cookie.setValue(sb.toString());
cookie.setPath( WebConstantsEnum.WEB_ROOT_PATH.getValue() );
response.addCookie( cookie );
如何获得Cookie
Cookie[] cks = request.getCookies();
如何更新一个Cookie的 value
1) 通过唯一主键获得该 Cookie, 然后重新设置 value
2) 通过 response.addCookie(cookie) 重新写回这个 Cookie
如何删除一个Cookie
1) 通过唯一主键获得该 Cookie
2) 设置 value 为 Null, maxAge 为 0
3) 通过 response.addCookie(cookie) 重新写回这个 Cookie
cookie.setValue(null);
cookie.setMaxAge(0);
cookie.setPath( WebConstantsEnum.WEB_ROOT_PATH.getValue() );
response.addCookie( cookie );