浏览历史记录通用代码

1,从商品列表点进商品详情:会访问productInfo这个servlet,productInfoServlet将浏览的商品的id存进cookie

String pid=request.getParameter("pid");  //获取商品id
String pids = pid;

Cookie[] cookies = request.getCookies();
	if(cookies!=null){
		for(Cookie cookie : cookies){
			if("pids".equals(cookie.getName())){
				pids = cookie.getValue();
				//1-3-2 本次访问商品pid是8----->8-1-3-2
				//1-3-2 本次访问商品pid是3----->3-1-2
				//1-3-2 本次访问商品pid是2----->2-1-3
				//将pids拆成一个数组
				String[] split = pids.split("-");//{3,1,2}
				List<String> asList = Arrays.asList(split);//[3,1,2]
				LinkedList<String> list = new LinkedList<String>(asList);//[3,1,2]
				//判断集合中是否存在当前pid
				if(list.contains(pid)){
					//包含当前查看商品的pid
					list.remove(pid);
					list.addFirst(pid);
				}else{
					//不包含当前查看商品的pid 直接将该pid放到头上
					list.addFirst(pid);
				}
				//将[3,1,2]转成3-1-2字符串
				StringBuffer sb = new StringBuffer();
				for(int i=0;i<list.size()&&i<7;i++){
					sb.append(list.get(i));
					sb.append("-");//3-1-2-
				}
				//去掉3-1-2-后的-
				pids = sb.substring(0, sb.length()-1);
			}
		}
	}
		


	Cookie cookie_pids = new Cookie("pids",pids);
	response.addCookie(cookie_pids);
		
		
		
	request.getRequestDispatcher("/product_info.jsp").forward(request, response);

2,当点击返回商品列表时,会访问productListServlet,productListServlet读取那个cookie,并将信息提取,从数据库获取商品信息的集合,返回显示到jsp页面

//定义一个记录历史商品信息的集合
List<Product> historyProductList = new ArrayList<Product>();

//获得客户端携带名字叫pids的cookie
Cookie[] cookies = request.getCookies();
if(cookies!=null){
for(Cookie cookie:cookies){
if("pids".equals(cookie.getName())){
String pids = cookie.getValue();//3-2-1
String[] split = pids.split("-");
for(String pid : split){
Product pro = service.findProductByPid(pid);
historyProductList.add(pro);
}
}
}
}

//将历史记录的集合放到域中
request.setAttribute("historyProductList", historyProductList);


request.getRequestDispatcher("/product_list.jsp").forward(request, response);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值