记录上次浏览商品信息
通过id获取相关信息(通过传入的id获取cookie中的值)
分析:
当前cookie值 传入的id 最后的cookie 描述 算法
cookies==null||histPro==null 1 1 第一次访问 直接接收将传入的id
1 2 2,1 小于3个且没有重复id 将传入id放在最前面
2,1 1 1,2 小于3个且重复 去重,将传入id放在最前面
1,2 3 3,1,2 等于3个不重复 将传入id放在最前面
3,1,2 4 4,3,1 等于3个不重复 去掉最后一个,将传入id放在最前面
注:histPro表示要获取的cookie的值,规定最多显示最近3条记录
代码:
private String createValue(HttpServletRequest request,String id) { Cookie[] cookies=request.getCookies(); String histPro=null; if(cookies!=null){ for(Cookie cookie:cookies){ if(cookie.getName().equals("histPro")){ histPro=cookie.getValue(); break; } } } if(cookies==null||histPro==null){ return id; } String[] ids=histPro.split(","); Collection colls= Arrays.asList(ids); //LinkedList方便操作集合,Collection-->LinkedList LinkedList list=new LinkedList(colls); //1.不超过3个 if(list.size()<3){ //1.id重复 if(list.contains(id)){ //去重,把传入的id放最前面 list.remove(id); list.addFirst(id); } else { list.addFirst(id); } } else { //等于3个 //id重 if (list.contains(id)){ list.remove(id); list.addFirst(id); } else { list.removeLast();//去掉最后一个 list.addFirst(id); } } //LinkedList --->String StringBuffer sb=new StringBuffer(); for(Object obj:list){ sb.append(obj+","); } //去掉最后的逗号 String result=sb.toString(); result=result.substring(0,result.length()-1); return result; }