Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。Cookies是当你浏览某网站时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息。 当你再次来到该网站时,网站通过读取Cookies,得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。从本质上讲,它可以看作是你的身份证。但Cookies不能作为代码执行,也不会传送病毒,且为你所专有,并只能由提供它的服务器来读取。保存的信息片断以"名/值"对(name-value pairs)的形式储存,一个"名/值"对仅仅是一条命名的数据。一个网站只能取得它放在你的电脑中的信息,它无法从其它的Cookies文件中取得信息,也无法得到你的电脑上的其它任何东西。 Cookies中的内容大多数经过了加密处理,因此一般用户看来只是一些毫无意义的字母数字组合,只有服务器的CGI处理程序才知道它们真正的含义。
Cookies的写入与读取
写入:
//创建一个cookie
Cookie ck=new Cookie("lastTime", System.currentTimeMillis()+"");
//Cookie ck1=new Cookie("lastTime", System.currentTimeMillis()+"");
//有效日期为0时 创建cokie到会话结束cookie
ck.setMaxAge(4);//一个小时
ck.setPath("/2011-10-24/demoCookie");
//发送给你的响应
response.addCookie(ck);
读取:
Cookie cookies[]=request.getCookies();
for(int i=0;cookies!=null&&i<cookies.length;i++){
Cookie cookie=cookies[i];
if("lastTime".equals(cookie.getName())){
String lastTime=cookie.getValue();
Date date=new Date(Long.parseLong(lastTime));
out.println(date.toLocaleString());
}
}
使用cookie完成曾经浏览过的商品信息
1、 向cookie存入信息
//发送cookie信息
String value=makeCookieValue(request,id);//该方法在下面
//产生一个Cookie对象
Cookie cookie=new Cookie("goodsHistory",value);
cookie.setMaxAge(60*60);
cookie.setPath("/2011-10-24");
//加入cookie
response.addCookie(cookie);
private String makeCookieValue(HttpServletRequest request, String id) {
//声明返回值变量
String goodsHistory=null;
//第一步:获取cookie
Cookie cookie[]=request.getCookies();
for(int i=0;cookie!=null&&i<cookie.length;i++){
if("goodsHistory".equals(cookie[i].getName())){
goodsHistory=cookie[i].getValue();
}
}
//保持最近访问的三个产品
if(goodsHistory==null){
goodsHistory=id;
}else{
LinkedList<String> list=new LinkedList<String>(Arrays.asList(goodsHistory.split("\\_")));
if(list.contains(id)){
list.remove(id);
list.addFirst(id);
}else{
if(list.size()>=3){
list.removeLast();
list.addFirst(id);
}else{
list.addFirst(id);
}
}
StringBuffer sb=new StringBuffer();
for(String ids:list){
sb.append(ids+"_");
}
sb.deleteCharAt(sb.length()-1);
goodsHistory=sb.toString();
}
return goodsHistory;
}
2、 读取cookie信息
//显示浏览过的商品信息
//声明浏览过的商品的value值
String value=null;
//获取cookie
Cookie cookies[]=request.getCookies();
//遍历cookie信息
for(int i=0;cookies!=null&&i<cookies.length;i++){
//浏览过商品的cookie cookie name value
if("goodsHistory".equals(cookies[i].getName())){
value=cookies[i].getValue();
}
}
out.println("你最近看过的产品有:");
if(value!=null){
//第一步:拆分
String ids[]=value.split("\\_"); out.print(gService.findByid(Integer.parseInt(ids[i])).getName());
}