- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
1.什么是cookie
浏览器向服务器发送请求,服务器会将少量的数据以set-cookie消息头的方式发送给浏览器,浏览器会将其
保存下来,但浏览器再次向服务器发送请求时,会将数据以cookie消息头的方式发送给服务器,在服务端可以从
请求数据包获取cookie的信息,通过此方式,可以实现状态管理的目的。
2.创建cookie
name:cookie名称
value:cookie值
Cookie cookie = new Cookie(String name,String value);
将cookie添加到response中
response.addCookie(cookie);
3.查找cookie
Cookie[] cs = request.getCookies();
String:**cookie.getName();**
获取cookie名称
String:**cookie.getValue();**
获取cookie值
4.cookie保存中文
默认情况下,cookie只能存储ascii字符串,如果需要存储中文,必须编码
编码:URLEncoder.encode(String str,String bm);
解码:URLDecoder.decode(String str,String jm);
5.cookie保存时间
首先要了解,cookie的数据保存在哪里,何时消失?
默认下,保存在内存中.
当打开浏览器时,操作系统会为该进程分配一块内存空间,cookie的数据保存在里面.
当浏览器关闭时,进程消失,对应的内存空间被释放,相应的cookie数据消失。
想要给cookie设置保存时间怎么办?
通过cookie.setMaxAge(int seconds);改变保存时间,单位:秒
seconds>0:cookie的数据保存在硬盘中,当超过指定的时间,cookie数据被删除
seconds<0:默认情况,cookie数据保存在内存中,只要浏览器不关闭,数据就一直存在
seconds=0:立即删除cookie数据
6.路径问题
首先要了解路径匹配过程?匹配规则?
匹配过程:浏览器向服务器发送请求时,会比较访问组件的路径与cookie的路径是否匹配,
只有匹配成功的cookie,才会发送给服务器。
匹配规则:访问组件的路径必须与cookie的路径相等或者是其子路径
设置cookie的路径
cookie.setPath("url");
说明: cookie的默认路径是创建cookie组件的路径,cookie.setPath("/");可以解决让所有的组件都能够访问到cookie的问题。
7.cookie的限制
-
cookie可以被用户禁止 -
cookie保存的数据大小有限制(4k左右) -
cookie保存的个数有限制(300个左右) -
cookie保存的数据类型比较有限,只能存字符串 -
不安全