学习笔记1:cookie

本文详细介绍了Cookie的工作原理,包括其创建、发送、获取及设置有效期的方法。Cookie用于存储客户端数据,提高网页处理效率,但安全性较低。浏览器限制了Cookie的数量和大小。注意Cookie保存在当前浏览器,不支持跨浏览器或电脑使用,且不推荐存储中文数据,需进行编码。同名Cookie会被覆盖,且可通过setMaxAge(0)删除。了解Cookie对于理解Web会话管理至关重要。
摘要由CSDN通过智能技术生成

cookie

cookie是浏览器提供的一种基础,通过服务器的程序将一些只需保存在客户端,或者在客户端进行处理的数据,放在本地的计算机上,不需要通过网络传输,因而提高网页处理的效率,并且能够减少服务器的负载,但是由于Cookie是服务器保存在客户端的信息,所以安全性较差。
Cookie是随着服务器的响应发送给客户端,保存在浏览器。当下次再次访问服务器时把Cookie再带回服务器。

cookie创建和发送

通过new 来创建一个cookie对象,采用key,value的方式来存入数据
要想发送到客户端,需要添加进response对象中,带回客户端

//创建Cookie对象
Cookie cookie = new Cookie("uname","zhangsan");
//响应回客户端
response.addCookie(cookie);

cookie的获取

再服务器中只提供了一个getCookies()方法用来获取客户端回传的所有cookie组成的一个数组,如果需要获取单个cookie则需要通过遍历,getName()获取Cookie的名称,getValue()获取Cookie的值

//获取客户端上的Cookie数组
Cookie[] cookies = request.getCookies();
//判断数组是否为空
if(cookies != null && cookies.length > 0){
	//遍历cookie数组
	for(Cookie cookie : cookies){
		//获取cookie的名称和值
		System.out.println(cookie.getName);
		System.out.println(cookie.getValue);
	}
}

Cookie设置到期(存活)时间

到期时间用来指定cookie何时失效,默认为当前浏览器关闭即失效
我们可以手动设置cookie的有效时间(通过到期时间计算),通过setMaxAge(int time);方法设定cookie的最大有效时间,以秒为单位。

到期时间的取值

  • 负整数
    若为负数,表示不储存该cookie
    cookie的maxAge属性的默认值就是-1,表示只在浏览器内存中存活,一旦关闭浏览器窗口,那么cookie就会消失
  • 正整数
    若大于0的整数,表示储存的秒数。
    表示cookie对象可存活指定的秒数。当大于 0 时,浏览器会把Cookie保存到硬盘上,就算关闭浏览器,重启电脑,cookie依然会存活相应的时间。

  • 若为0,表示删除该cookie
    cookie生命等于0是一个特殊值,它表示cookie作废!也就是说,如果原来浏览器已经保存了这个cookie,那么可以通过Cookie的setMaxAge(0)来删除该cookie。无论是在浏览器内存中还是在客户端硬盘上都会删除这个cookie。

Cookie注意事项

  1. Cookie保存在当前浏览器中,不能跨浏览器使用,不能跨电脑使用,仅仅只是保存在本机上。
  2. Cookie存入中文问题:Cookie中不能存入中文(也不建议存中文),如果有中文则通过URLEncode.encode()来进行编码,获取时通过URLDecoder.decode()来进行编码。
String name = "姓名";
String value = "王五";
//通过URLEncoder.encode()来进行编码
name = URLEncoder.encode(name);
value = URLEncoder.encode(value);

//创建Cookie对象
Cookie cookie =  new Cookie(name,value);
//发送cookie对象
response.addCookie(cookie);
//获取时通过 URLDecoder.decode();来进行编码
String name = URLDecoder.decode(cookie.getName);
String value = URLDecoder.decode(cookie.getValue);
  1. 同名cookie问题:如果服务器发送重复的Cookie那么会覆盖原有的Cookie
  2. 浏览器存放Cookie的数量:不同的浏览器对Cookie也有限定,Cookie的储存是有上限的,存储大小也是有限的,在4KB左右。Cookie是存储在客户端浏览器的,而且一般是由服务器端创建和设定。后期结合Session来实现会话跟踪。
  3. 只有访问路径中包含cookie对象的path值,才可以获取到该cookie对象,默认是当前项目可访问到该cookie,如有其他需求,可以cookie.setPath(" ");参数为指定需要该Cookie的路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值