浅谈cookie

264 阅读2分钟

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保存的数据类型比较有限,只能存字符串
    
  • 不安全