Cookie
什么是Cookie?
Cookie是服务器通知客户端保存键值对的一种技术
客户端有了Cookie后,每次请求都发送给服务器
每个Cookie的大小不能超过4kb
Cookie的创建
//1、创建Cookie对象
Cookie cookie1 = new Cookie("key1", "value1");
//2、通知客户端保存Cookie
resp.addCookie(cookie1);
注意:可一次创建多个Cookie,响应头中会出现对应数量的Set-Cookie
//1、创建Cookie对象
Cookie cookie2 = new Cookie("key2", "value2");
//2、通知客户端保存Cookie
resp.addCookie(cookie2);
//1、创建Cookie对象
Cookie cookie3 = new Cookie("key3", "value3");
//2、通知客户端保存Cookie
resp.addCookie(cookie3);


Cookie的获取
Cookie[] cookies = req.getCookies();
for(Cookie cookie : cookies) {
System.out.println("key:"+cookie.getName); //getName方法返回Cookie的key
System.out.println("value:"+cookie.getValue); //getValue方法返回Cookie的value
}

封装工具类获取指定key的Cookie
package com.tang.web.servlet.utils;
import javax.servlet.http.Cookie;
public class CookieUtils {
/**
* 查找指定key的Cookie
* @param cookies
* @param key
* @return
*/
public static Cookie getCookie(Cookie[] cookies, String key) {
if (key == null || cookies == null || cookies.length == 0) {
return null;
}
for (Cookie cookie : cookies) {
if (key.equals(cookie.getName())) {
return cookie;
}
}
return null;
}
}
Cookie生命控制
Cookie的生命控制指的是管理Cookie什么时候销毁(删除)
setMaxAge(int time)
正数:表示在指定秒后删除
负数:表示浏览器关闭时删除(默认值是-1)
0:表示马上删除
Cookie有效路径path
Cookie的path属性可以有效过滤哪些Cookie发送给服务器,哪些不发。path属性是通过请求的地址来进行有效的过滤
cookie.setPath(String url)
CookieA path=/工程路径
CookieB path=/工程路径/abc
请求地址如下:
http://ip:port/工程路径/a.html
CookieA发送
CookieB不发送
http://ip:port/工程路径/abc/a.html
CookieA发送
CookieB发送
免用户名登录

浙公网安备 33010602011771号