利用cookie显示浏览过的商品

 

首先老师给我们讲的是昨天布置的作业,利用Cookie完成的操作,在网站首页的左边,显示所有商品列表,点击任何一个商品,可以查看该商品的详细信息。在首页的右边可以将刚刚查看过的3个商品的列表显示出来。将代码给我们进行了分析,代码及其分析如下:

//在一个servlet中
//给用户浏览器回送包含浏览历史纪录的cookie
//2_1_3 使用makeHistory函数获得bookHistory。即book的id号。用“-”分隔开,得到一个字符串
String bookHistory = makeHistory(request,id); //将曾经浏览过的商品的id组合,形成一个字符串,例如“1-2-5”
Cookie cookie = new Cookie("bookHistory",bookHistory);//创建一个名为bookHistory的cookie
cookie.setMaxAge(60*100);//设置cookie的最大时效
cookie.setPath("/day07");//将整个web应用设为path
response.addCookie(cookie);//将cookie添加到response中传送给浏览器

//显示用户曾经浏览过的商品
out.write("您曾经浏览过:<br/>");
Cookie cookies[] = request.getCookies();
for(int i=0;cookies!=null && i<cookies.length;i++){
 if(cookies[i].getName().equals("bookHistory")){  //bookHistory=1_2_5
  String ids[] =  cookies[i].getValue().split("\\_");
  for(String id : ids){
   Book book = (Book) Db.getAll().get(id);//
   out.write(book.getName() + "<br/>");
  }
  break;
 }
}


下面是makeHistory()
private String makeHistory(HttpServletRequest request, String id) {  //5
String bookHistory = null;
Cookie cookies[] = request.getCookies();
for(int i=0;cookies!=null && i<cookies.length;i++){
if(cookies[i].getName().equals("bookHistory")){
bookHistory = cookies[i].getValue();
break;
}
}
//bookHistory:(1)null,就说明第一次浏览商品(2)!=null,不是第一次浏览商品
if(bookHistory==null){
bookHistory = id;
return bookHistory;
}

//原来bookHistory存储“1-2” 5     “5-1-2”       “1-2-5”   6      “6-1-2”     “2-1-5”    2

LinkedList<String> list = new LinkedList(Arrays.asList(bookHistory.split("\\_")));
if(list.contains(id)){
list.remove(id);
}else{
if(list.size()>=3){
list.removeLast();
}
}
list.addFirst(id);
StringBuffer sb = new StringBuffer();
for(String bookid : list){
sb.append(bookid + "_");
}
bookHistory = sb.deleteCharAt(sb.length()-1).toString();
return bookHistory;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值