Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。
Session,它和Cookie的作用几乎是相同的,最大的区别是Session是放在服务器端的,而Cookie是在客户端的。
一、cookie的作用
在我们平常写的B/S程序中主要有以下作用:
1、 记录用户名和密码
以及该用户需要保存的一些信息,如购物购站,使用cookie,可以让用户自动登录到站点等。
2、 定制站点
可以使用cookie来记录用户的偏好。
3、 定向广告
可以使用cookie来记录用记经常访问的主题,并向他们显示与这些主题相关的广告。
二、向客户程序发送cookie
1、 创建cookie对象
Cookie c = new Cookie(“userId”,”landril”);
2、 设置最大时效,默认该cookie是存储在浏览器的内在中,用户关闭浏览器则被删除,下面的方法是将cookie存储在硬盘上。
// 如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。
这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。
// 如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的cookie,不同的浏览器有不同的处理方式。
// cookie.setmaxage设置为0时,会马上在浏览器上删除指定的cookie
// cookie.setmaxage设置为-1时,代表关闭当前浏览器即失效。
c.setMaxAge(60);// 60秒的意思
c.setMaxAge(60 * 60);// 一小时
c.setMaxAge(365 * 24 * 60 * 60);// 一年
3、 将cookie放入到HTTP响应报头,可以使用HttpServletResponse的addCookie方法,此方法不修改之前指定的Set-Cookie报头,而是创建新的报头。
response.addCookie(c);
注意:设置cookie的步骤为创建cookie对象,设置最大时效,将cookie放入响应报头,即发送到客户程序,记住一定要将cookie发送到客户程序
三、从客户端读取cookie
1、 调用HttpServletRequest的getCookies得到一个Cookie对象的数组
2、 对数组进行循环,调用cookie的getName方法,获取具体的cookie的值
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(int i=0;i<cookies.length;i++){
Cookie c = cookies[i];
if(“userId”.equals(c.getName())){
System.out.println(c.getValue());
}
}
}
四、删除Cookie里的数据
Cookie deleteCookie = new Cookie("cookie",null);
deleteCookie.setMaxAge(0);
deleteCookie.setPath("/");
response.addCookie(deleteCookie);
五、JS使用Cookie
//存储Cookie
function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}
//检查是否已配置Cookie
function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=")
if (c_start!=-1)
{
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) c_end=document.cookie.length
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}
//使用Cookie
function checkCookie()
{
username=getCookie(‘username‘)
if (username!=null && username!="")
{alert(‘Welcome again ‘+username+‘!‘)}
else
{
username=prompt(‘Please enter your name:‘,"")
if (username!=null && username!="")
{
setCookie(‘username‘,username,365)
}
}
}