1.Cookie介绍
Cookie技术是一种Web技术,它允许网站在用户浏览时存储和检索小型文本信息。这些文本信息可以包括用户的偏好设置、会话状态信息、购物车内容等。当用户再次访问相同的网站时,浏览器会将相应的Cookie数据发送给服务器,从而使服务器能够识别用户并提供个性化的服务
2.Cookie特点
(1)Cookie是浏览器端的数据存储技术
(2)浏览器每次发送请求的时候,请求信息中就包含了Cookie中存储的数据
(3)Cookie不适合大量数据的存储(每个Cookie存储的数据不超过4KB)
(4)不安全,不适合存储重要的数据到浏览器端
(5)服务器端决定Cookie存储的数据内容
(6)不同的浏览器的Cookie保存在磁盘上的位置是不同的,不能跨浏览器使用Cookie
(7)不同浏览器对Cookie的数量有限定
3.Cookie的创建和发送
Cookie只有一个构造方法:public Cookie(String name, String value)
// 创建Cookie对象
Cookie cookie = new Cookie("name", "value");
// 发送(响应Cookie对象)
resp.addCookie(cookie);
4.Cookie的获取
在服务器端只提供了一个Cookie[] getCookies()的方法用来获取客户端传回的所有Cookie组成的一个数组,如果需要获取单个Cookie则需要通过遍历,getName()方法获取Cookie的名称,getValue()获取Cookie的值
注:Cookie是浏览器端的技术,如果关闭了服务器,只要Cookie在浏览器端没有失效,Cookie就是一直携带的,可以发送请求到服务器获取Cookie信息
Cookie[] cookies = req.getCookies();
if(cookies != null && cookies.length > 0){
for (Cookie cookie : cookies) {
String name = cookie.getName();
String value = cookie.getValue();
}
}
5.设置Cookie到期时间
Cookie到期时间指定Cookie何时失效,默认为浏览器关闭即失效
到期时间取值 | 描述 |
---|---|
负整数 | 表示不存储该cookie,默认为-1,表示只在浏览器内存中存活 |
正整数 | 表示存储的秒数,浏览器会把Cookie保存到硬盘上 |
零 | 表示删除该Cookie |
// 3天内有效
cookie.setMaxAge(3 * 24 * 60 * 60)
6.Cookie存中文
注:Cookie中不建议存入中文
Cookie存中文需要通过URLEncoder.encode()来进行编码,获取时通过URLDecoder.decode()进行解码
String name = "名称";
String value = "值";
name = URLEncoder.encode(name);
value = URLEncoder.encode(value);
Cookie cookie = new Cookie(name, value);
Cookie[] cookies = req.getCookies();
if(cookies != null && cookies.length > 0){
for (Cookie cookie : cookies) {
String name = URLDecoder.decode(cookie.getName());
String value = URLDecoder.decode(cookie.getValue());
}
}
7.Cookie的路径
Cookie的路径直接决定服务器的请求是否会从浏览器加载某些Cookie
注:可不设置,默认在当前项目下可加载该Cookie
// 当前服务器的任何目录下可加载该Cookie
cookie.setPath("/");