Cookie

什么是Cookie:

直观上理解:

Cookie是一些键值对,服务器为了避开http协议的无状态特性,通过cookie保存的信息,达到快速识别客户端的目的。由服务器主导(由服务器负责创建,设置Cookie)。

原理:

  • 第一次客户端访问服务器,服务器的响应信息中添加一些Cookie,里面有一个唯一ID。
  • 第二次客户端访问服务器时,会自动把之前的Cookie带着,服务器一比较ID,就知道这是哪个客户端了。

Cookie与http协议

http协议规定:
  • 1个Cookie最大4KB
  • 1个服务器最多向一个浏览器保存20个
  • 1个浏览器最多可以保存300个Cookie

然而,并没有卵用,浏览器不听你的。

格式:

在请求头中:

Cookie a=A; b=B

在响应头中:

Set-Cookie: a=A
Set-Cookie: b=B

JavaWeb中操作Cookie:

首先要明白,Cookie是由服务器主导的,并且Cookie是在请求头和响应头中传递的。所以首先,服务器创建并向浏览器添加Cookie:

Cookie cookie = new Cookie(key, value);
response.addCookie(cookie);

然后,浏览器再次访问这个服务器的时候,就会把cookie带回来,服务器就可以获取浏览器归还的Cookie了:

Cookie[] cs = request.getCookies();
if (cs != null) {
	for (Cookie c : cs) {
		response.getWriter().println(c.getName() + ":" + c.getValue());
	}
}

Cookie的其他方法

生命

setMaxAge():cookie的生命时长,单位是秒

maxAge > 0:浏览器会把cookie保存到硬盘上,保存时长有maxAge值决定
maxAge <0:cookie只在内存中存在,用户关闭浏览器,浏览器进程结束,cookie也死亡了
maxAge = 0:浏览器会马上删除这个cookie

路径

setPath():cookie路径,不是在客户端的保存路径,而是返还给服务器时,由路径决定返还哪些cookie

  • 浏览器访问服务器的路径,包含某个cookie的路径,就返还这个cookie
  • 访问的路径名往上层找,凡是上层存的cookie都返还,即父路径里的cookie都返还
  • 默认路径:当前访问路径的父路径

示例:

aCookie.path = /day11/
bCookie.path = /day11/jsp/
cCookie.path = /day11/jsp/cookie/

访问/day11/index.jsp时,返还aCookie
访问/day11/jsp/index.jsp时,返还aCookie, bCookie
访问/day11/jsp/cookie/index.jsp,返还aCookie, bCookie, cCookie

domain

setDomain():设置域名,多个二级域名共享cookie时使用
例如:www.baidu.com zhidao.baidu.com tieba.baidu.com之间共享cookie

setDomain(".baidu.com");
setPath("/");

Cookie中文问题

Cookie中不能存在中文,如果需要,可以对中文进行编码存储,再解码读取

String name = URLEncoder.encode(name, "utf-8");
设置Cookie
String name =URLEncoder.decode(c.getName(), "utf-8");

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值