目录
1.概念
客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问。
2.Cookie的基本使用
2.1创建Cookie对象,并设置数据
Cookie cookie = new Cookie("key","value");
2.2发送Cookie到客户端
response.addCookie(cookie);
2.3获取Cookie
获取客户端携带的所有Cookie
Cookie[] cookies = request.getCookies();
遍历数组,获取每一个Cookie对象:for,使用Cookie对象方法获取数据
cookie.getName();
cookie.getValue();
//表单输入框使用value值给表单元素添加默认值,value可以使用
${cookie.key.value}
//注:在JSP使用,添加词头“<%@ page isELIgnored="false" %>”,为EL表达式,key为cookie名称,
2.4Cookie 存活时间
//设置存活时间,1周 7天
//setMaxAge(int seconds)
cookie.setMaxAge(60*60*24*7);
参数值为:
1.正数:将Cookie写入浏览器所在电脑的硬盘,持久化存储,到时间自动删除。
2.负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭,则Cookie被销毁。
3.零:删除对应Cookie。
3.注意事项
Cookie不能存储中文,我们可以使用之前学过的一个知识点叫URL编码
,所以如果需要存储中文,就需要进行转码,具体的实现思路为:
1.在AServlet中对中文进行URL编码,采用URLEncoder.encode(),将编码后的值存入Cookie中
2.在BServlet中获取Cookie中的值,获取的值为URL编码后的值
3.将获取的值在进行URL解码,采用URLDecoder.decode(),就可以获取到对应的中文值
//在AServlet中对中文进行URL编码
//发送Cookie
String value = "张三";
//对中文进行URL编码
value = URLEncoder.encode(value, "UTF-8");
System.out.println("存储数据:"+value);
//将编码后的值存入Cookie中
Cookie cookie = new Cookie("username",value);
//获取Cookie
//1. 获取Cookie数组
Cookie[] cookies = request.getCookies();
//2. 遍历数组
for (Cookie cookie : cookies) {
//3. 获取数据
String name = cookie.getName();
if("username".equals(name)){
String value = cookie.getValue();//获取的是URL编码后的值 %E5%BC%A0%E4%B8%89
//URL解码
value = URLDecoder.decode(value,"UTF-8");
System.out.println(name+":"+value);//value解码后为 张三
break;
}
}
4.JavaScript操作Cookie
JS封装cookie操作函数实例(设置、读取、删除),主要介绍了JS封装cookie操作函数,以实例形式分析了JavaScript实现针对cookie的设置、获取及删除相关技巧。
/*设置cookie*/
function setCookie(name, value, iDay)
{
var oDate=new Date();
oDate.setDate(oDate.getDate()+iDay);
document.cookie=name+'='+value+';expires='+oDate;
};
/*使用方法:setCookie('user', 'simon', 11);*/
/*获取cookie*/
function getCookie(name){
var arr=document.cookie.split('; ');//多个cookie值是以; 分隔的,用split把cookie分割开并赋值给数组
for(var i=0;i<arr.length;i++){//历遍数组
var ars=arr[i].split('=');//原来割好的数组是:user=simon,再用split('=')分割成:user simon 这样可以通过arr2[0] arr2[1]来分别获取user和simon
if(ars[0]==name){//如果数组的属性名等于传进来的name
return ars[1];//就返回属性名对应的值
}
}
return ''; //没找到就返回空
}
/*使用方法:getCookie('user')*/
/*删除cookie*/
function removeCookie(name)
{
setCookie(name, 1, -1); //-1就是告诉系统已经过期,系统就会立刻去删除cookie
};
/*使用方法:removeCookie('user')*/
可以点个免费的赞吗!!!