session是运行在服务器,而cookie运行在客服端。
本次的需求是,用户登录的时候可以选择不同的角色登录,我们需要记录用户上一次选择登录的角色,以便在用户下一次登录时自动地选择用户上一次的登录角色。
cookie的生命周期
设置Cookie对象的有效时间, setMaxAge()方法便可以设置Cookie对象的有效时间,
例如:Cookie c = new Cookie("username","john");
c.setMaxAge(60);//60秒的意思
c.setMaxAge(60*60);//一小时
c.setMaxAge(365*24*60*60);//一年
如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。
这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。
如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的cookie,不同的浏览器有不同的处理方式。
cookie.setmaxage设置为0时,会马上在浏览器上删除指定的cookie
cookie.setmaxage设置为-1时,代表关闭当前浏览器即失效。
贴上cookie操作的代码
//设置或添加cookie time为小时数
function setCookie(name,value,time){
var str = name + "=" + escape(value);
if(time > 0){
var date = new Date();
var ms = time*3600*1000;
date.setTime(date.getTime() + ms);
str += "; expires=" + date.toGMTString();
}
document.cookie = str;
}
//获取cookie
function getCookie(name){
//cookie中的数据都是以分号加空格区分开
var arr = document.cookie.split("; ");
for(var i=0; i<arr.length; i++){
if(arr[i].split("=")[0] == name){
return escape(arr[i].split("=")[1]); //转码,预防中午乱码
}
}
//未找到对应的cookie则返回空字符串
return '';
}
//删除cookie
function removeCookie(name){
document.cookie = name+"=;expires="+(new Date(0)).toGMTString();
}