1 商品列表页---跳转到--->商品详细信息页时将cookie写到浏览器
------------------------------------------------------------------
// 获得客户端携带的cookie 获得名字是pids的cookie
String pids = pid ;
//1 首先接收cookie中的pids信息,如果没有则进行创建cookie对象存储pids信息
Cookie[] cookies = request.getCookies();
if(cookies != null) {
for (Cookie cookie : cookies) {
// 找到与pids对应的cookie名称
if("pids".equals(cookie.getName())) {
// 取出与pids同名的cookie值
pids = cookie.getValue();
//假设pids不为空
// 1-3-2本次访问商品的id为6 6-1-3-2
// 1-3-2本次访问商品的id为3 3-1-2
// 1-3-2本次访问商品的id为2 2-1-3
// 分割pids的值
String[] split = pids.split("-");
//将数组转换为集合
List<String> asList = Arrays.asList(split);
//将asList集合转换为LinkedList集合
LinkedList<String> list = new LinkedList<>(asList);
// 判断集合中是否存在当前pid -->如果包含则移除然后添加到链表的头
if(list.contains(pid)) {
list.remove(pid);
list.addFirst(pid);
}else {
//如果不包含 则直接添加到链表的头
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-中最后一个-
pids = sb.substring(0, sb.length() - 1);
}
}
}
//如果Cookie为空则创建cookie并存储pids信息到cookie中
Cookie cookie_pids = new Cookie("pids", pids);
//将cookie信息写到浏览器中
response.addCookie(cookie_pids);
request.getRequestDispatcher("/product_info.jsp").forward(request, response);
2. 商品详细信息页面的数据准备--准备好历史数据后---存域--转发到商品列表页即可看到历史浏览信息
//定义一个集合存储历史浏览记录
List<Product> historyProductList = new ArrayList<>();
// 获得cookie
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
if("pids".equals(cookie.getName())) {
String pids = cookie.getValue();
String[] split = pids.split("-");
for (String pid : split) {
Product product = service.findProductInfo(pid);
historyProductList.add(product);
}
}
}
request.setAttribute("historyProductList", historyProductList);
request.setAttribute("pageBean", pageBean);
request.setAttribute("cid", cid);
request.getRequestDispatcher("/product_list.jsp").forward(request, response);