*
一个Cookie只能标识一种信息,它至少含有一个标识信息的名称(name)和设置值(value)
*
如果创建了一个Cookie,并将它发送到浏览器,默认情况下他是一个会话级别的
Cookie(即储存在浏览器的内存中),用户退出浏览器之后即被删除。若希望浏览器将该Cookie储存在磁盘上,则需要
使用MaxAge,并给出一个以秒为单位的时间。为零的时候则是命令浏览器删除该Cookie(注意在删除cookie的时候,
path必须保持一致,否则不会删除).
*
案例:显示每次的访问时间
response.setCharacterEncoding("UTF-8"
);
response.setContentType("text/html"
);
PrintWriter out =
response.getWriter();
Cookie cookies[]=
request.getCookies();
for(
int i=0;cookies!=
null&&i<cookies.length;i++
){
if(cookies[i].getName().equals("lastAccessTime"
)){
long value=
Long.parseLong(cookies[i].getValue());
Date date=
new Date(value);
out.println("您上次访问的时间是:"+
date.toLocaleString());
}
}
Cookie cookie=
new Cookie("lastAccessTime",System.currentTimeMillis()+""
);
cookie.setMaxAge(3600*24*30);
//一个月
cookie.setPath("/day_07");
//
response.addCookie(cookie);
案例:应用cookie显示访问商品的记录(假设最大显示数为3)
//cookie的值部分:
public String getCookies(String id,HttpServletRequest request){
String value=
null;
Cookie[] cookies=
request.getCookies();
for(
int i=0;cookies!=
null&&i<cookies.length;i++
){
if(cookies[i].getName().equals("lookShopping"
)){
value=
cookies[i].getValue();
}
}
//没有浏览记录
if(value==
null){
return id;
}
LinkedList<String> list=
new LinkedList(Arrays.asList(value.split("\\,"
)));
//有浏览记录
if(list.contains(id)){
//如果已经浏览过该商品
list.remove(id);
list.addFirst(id);
}
else{
//没有浏览过该商品
if(list.size()>=3){
//已经到了保存的最大数
list.removeLast();
list.addFirst(id);
}
else{
//没有到了保存cookie的最大数
list.addFirst(id);
}
}
//小技巧:在上边会发现,每次就会将addFirst(id),可以简化代码,写到最后边
StringBuffer sb=
new StringBuffer();
for(String e: list){
sb.append(e+","
);
}
return value=sb.deleteCharAt(sb.length()-1
).toString();
}
Cookie设置 用户在多少时间免登录;