javaweb 基础(2)—— cookie

尊重个人劳动成果,转载请注明出处:
http://blog.csdn.net/czd3355/article/details/70818698

Cookie 是一小段的文本信息,可以用来保存用户信息。

在客户端请求服务器时,如果服务器需要记录该用户状态,就使用 response 向客户端发送一个 Cookie。客户端会把 Cookie 保存起来。当客户端再请求该网站时,客户端就会把请求的网址连同该 Cookie 一同提交给服务器。服务器检查该 Cookie,以此来辨认用户状态。同时,服务器也可以根据需要修改 Cookie 的内容。

2. 常用方法

// 获取客户端田炯的所有 cookie(返回值是 Cookie[])
request.getCookie()

// 向客户端设置 Cookie。
request.addCookie(Cookie cookie):

3. 常用知识

Cookie 的 maxAge 属性决定 Cookie 的有效期,单位是秒。可以通过对应的 getMaxAge 和 setMaxAge 方法来设置 maxAge 属性。

如果 maxAge 属性为正数,则表示 Cookie 会在 maxAge 秒之后自动失效。浏览器会将 maxAge 为正数的 Cookie 持久化,即写到对应的 Cookie 文件中。无论客户关闭了浏览器或电脑,只要还在 maxAge 秒之前,登录网站时该 Cookie 依然有效。

若将 Cookie 的 maxAge 设置为 Integer.MAX_VALUE,如下代码所示,则说明该 Cookie 信息将永久有效。

cookie.setMaxAge(Integer.MAX_VALUE);

如果 maxAge 属性为负数,则表示该 Cookie 仅在本浏览器窗口及本窗口打开的子窗口内有效,关闭窗口后该 Cookie 就会失效。这种 Cookie 不会被持久化,Cookie 信息是保存在浏览器内存中,因此关闭浏览器后该 Cookie 就会消失。Cookie 默认的 maxAge 值为 -1

如果 maxAge 为 0,则表示删除该 Cookie。失效的 Cookie 会被浏览器从 Cookie 文件或内存中删除。

从客户端读取 Cookie 时,包括 maxAge 在内的其他属性都是不可读的,也不会被提交。浏览器提交 Cookie 时只会提交 name 和 value 属性。maxAge属性只被浏览器用来判断 Cookie 是否过期。

如果要修改某个 Cookie,只需要新建一个同名的 Cookie,并添加到 response 只覆盖原来的 Cookie 就好了。

如果要删除某个 Cookie,只需要新建一个同名的 Cookie,将 maxAge 设置为 0,并添加到 response 只覆盖原来的 Cookie 即可。

注意:在修改,删除 Cookie 时,新建的 Cookie 除了 value,maxAge 之外的所有属性,例如 name,path,domain 等都要和原 Cookie 完全一样。否则浏览器会认为这两个 Cookie 是不同的,进而不予覆盖,导致修改,删除失败。

Cookie 是不可跨域名的。即域名为 www.baidu.com 颁发的 Cookie 不会被提交到域名为 www.google.com 中去。这是由 Cookie 的隐私安全机制决定的。

正常情况下,同一个一级域名下的两个二级域名,如 www.czd.com 和 images.czd.com 也不能交互使用 Cookie,因为二者的域名并不严格相同。如果想要所有的 czd.com 名下的二级域名都可以使用该 Cookie,则需要设置 Cookie 的 domain 属性。例如:


Cookie cookie = new Cookie("time", "20160426");
// 设置域名。注意 domain 参数必须以 "." 开始
cookie.setDomain(".czd.com");
response.addCookie(cookie);
  • 每个 cookie 大小限制为 4KB
  • Cookie 是存放在浏览器中的

4.应用场所

Cookies 最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是 Cookies 的功用。

另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入 Cookies,以便在最后付款时提取信息。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值