用cookie的方式显示上次浏览过的商品

以下以网上书店为例,演示用cookie的方式,显示上次浏览过的商品

采用自顶向上的编程思想

//在一个servlet中
//给用户浏览器回送包含浏览历史纪录的cookie
//2_1_3 使用makeHistory函数获得bookHistory。即book的id号。用“-”分隔开,得到一个字符串
String bookHistory = makeHistory(request,id);
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;
}
}

if(bookHistory==null){
bookHistory = id;
return bookHistory;
}

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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值