一、关于Cookie的一些说明(我的理解):
二、使用Cookie
1、创建Cookie
Cookie ck=new Cookie(name,value);
ck.setMaxAge(expireDate);
ck.setPath(path);
response.addCookie(ck);
补充:
如果没有setPath(""),则默认为在当前路径下创建Cookie.如:有待验证。
2、修改Cookie
不能直接修改一个Cookie,是创建一个同名的 Cookie,并把该 Cookie 发送到浏览器,覆盖客户机上旧的 Cookie。
修改与添加的语法类似。如:
现在有一个名称为user_name的cookie,我想将其值修改。如下:
Cookie ck=new Cookie("user_name","所要修改的值");
ck.setMaxAge("该名为user_name的cookie的过期时间");
ck.setPath("该名为user_name的cookie的原来路径");
response.addCookie(ck);
补充:
所要修改后的cookie与原来的cookie路径必须一致,否则删除了些cookie同时创建了一个新的cookie。
3、删除Cookie
修改Cookie的有效期为过去的某个时间,当浏览器检查 Cookie 的有效期时,就会删除这个已过期的 Cookie。
删除与添加cookie的语法类似。如:
Cookie killMyCookie = new Cookie(name, null);
killMyCookie.setMaxAge(-200);
killMyCookie.setPath("该名为user_name的cookie的原来路径");
response.addCookie(killMyCookie);
补充:
A、将该cookie名称所对应的值置空。(这步可省略)
B、将该cookie的过期时间设置为过去时。如:上例killMyCookie.setMaxAge(-200); (必须)
C、所要删除的cookie与原来的该cookie路径必须一致
4、取得Cookie
1)、取得所有Cookie
Cookie ck[]=request.getCookies();
补充:
cookie是放在一个一维数组中的。
2)、取得某一个指定的Cookie
Cookie cookie = null;
Cookie ck[]=request.getCookies();
for(int i=0; ck!=null && i<ck.length; i++){
if(ck[i].getName()==null) continue;
if(ck[i].getName().equals(cookieName)){
cookie = ck[i];
break;
}
}
补充:
取得一个cookie必须从cookie数组中取。一般情况根据cookie的名称取。