首页 > 代码库 > cookie详解

cookie详解

cookie:
  1. 客户端创建,存在于客户端,不安全
  2. 用于跟踪用户的信息,保证不重要的信息,如地理位置,用户名
  3. cookie在服务端创建Cookie cook=new Cookie(name,value);再由response回写给浏览器response.addCookie(),浏览器发现set-cookie头后会自动写入硬盘,要得到cookie中的值,需要条用Request
  4. cookie的默认有效期是浏览器进程,浏览器关闭cookie就没了
  5. cookie的默认有效目录是产生cookie的Servlet的目录,访问其余目录不会带cookie
  6. cookie的作用,显示上次访问时间,将用户登录时的时间写入到cookie中
  7. 浏览器最多保存300个cookie,每个站点最多20个cookie,每个cookie的大小限制4k
  8. 每次访问(request)时都会带cookie(如果有)
  9. 将最大值时间设为0表删除cookie
  10. Cookie有效期是秒,session有效期是秒

cookie中的path写法
1.    /day09/    访问day09目录下的文件时带cookie
2.    /day09    访问以day09开头的文件时带cookie,如day09xxx, 访问day09目录下的文件时也带这个cookie
3.    day09/    写法错误,必须以/开头,有set-cookie头,但浏览器拒收,不存储本地,浏览器进程中也没有

Cookie cookiename=new Cookie("name","value");
这个cookiename只是Cookie对象的名字,与存入的name,value无关,可以任意,甚至重复

一个网站只能保存20个cookie是指20个cookie文件,临时文件夹中可以查看

Cookie[] cookies=request.getCookies();得到的是所有Request带过来的cookie文件夹中的键值对
如:http://localhost:8080/day09/servlet/CookieDemo
有两个cookie文件:path分别是:/day09/cookie和/day09/servlet/,那么访问该Servlet时会把这两个cookie文件中的键值对带过来,存到数据中,如[name1=value1,name2=value2....]等
也就是说request.getCookies()得到的是所有cookie中保存的键值对

一个Response对象可以发送多个set-cookie头,也就是一个Response可以保存多个cookie,多次调用response.addCookie(cookie)也是可以的

cookie文件中可以保存多个键值对,多次调用Cookie cookiename=new Cookie("name","value");不会覆盖原来的数据,会直接在后面续写新的键值对
同一个cookie文件中的键值对的name值唯一,value值可以随意,同一cookie文件中存入相同name的键值对会覆盖原来的数据,不同cookie文件中的name值可以相同

cookie的默认有效目录是产生cookie的Servlet的目录,访问其余目录不会带cookie

每个cookie文件大小4K

每个键值对都是一个cookie对象,如果想删除一个键值对,只需遍历cookie[]找到该对象,然后调用setMaxAge方法就行了,最后在写回就ok