Cookie简述
1. 概念
一种客户端会话技术,可以将一些少量的数据保存在客户端。
2. 快速使用
-
步骤
-
创建cookie对象,并设定数据
- new Cookie(String name, String value);
-
发送cookie对象到客户端(将cookie加载到response)
- response.addCookie(Cookie cookie) ;
-
获取cookie(获取从客户端返回的request获取cookie)
- Cookie[] request.getCookies() ;
-
代码
//设定cookie数据,创建cookie对象 Cookie c=new Cookie("msg","hello");
//发送cookie对象到客户端 response.addCookie(c);
//获取cookie并打印 Cookie[] cs = request.getCookies(); if(cs!=null){ for (Cookie c : cs) { String name = c.getName(); String value = c.getValue(); System.out.println(name+":"+value); }
-
-
cookie的一些小细节
-
一次可不可以发送多个cookie?
- 可以,同时也可以接收到多个cookie。
- 只需要多创建几个cookie对象,多调用几次response的addCookie方法即可
-
cookie一般在计算机保存多长时间
-
默认情况下,只要关掉浏览器,cookie数据就会被销毁
-
如何持久化储存?
-
setMaxAge(int seconds)
-
正数:将cookie数据写进硬盘,持久储存,并指定销毁时间seconds。
-
负数:默认情况
-
零:删除cookie信息
-
代码
Cookie c1=new Cookie("msg","hello"); c1.setMaxAge(300); response.addCookie(c1); //300秒后自动销毁
-
-
-
cookie能否存中文?
- 在tomcat 8 之前 cookie中不能直接存储中文数据。(需要URL编码)
- 在tomcat 8 之后,cookie支持中文数据。特殊字符还是不支持,建议使用URL编码存储,URL解码解析
-
cookie共享问题?
-
在同一个服务器中,项目共享cookie
- 默认情况下,不共享
- 使用方法setPath(String path):设置cookie的获取范围。默认情况下,设置当前的虚拟目录,如果要共享,则可以将path设置为"/"
-
不同的服务器之间的cookie共享?
- setDomain(String path):如果设置一级域名相同,那么多个服务器之间cookie可以共享
- setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中cookie可以共享
- setDomain(String path):如果设置一级域名相同,那么多个服务器之间cookie可以共享
-
-
cookie的特点和作用
- cookie存储数据在客户端浏览器
- 浏览器对于单个cookie的大小以及同一个域名下总cookie数量也有限制(20个)
- 作用:
- 由于cookie在客户端数据并不安全,cookie一般用于存储少量不太敏感的数据
- 他可以完成一些类似于在没有登陆的情况下,完成服务器队客户端身份的识别
-