浏览历史记录---网上商城Web

今天介绍历史记录这个业务点,我们浏览某商品后,会留下历史记录,我们可以选择把这些数据存储在缓存redis中,也可以选择作为域存储


我这里只是简单地选择把商品地图片进行展示,事实上还可以在这个基础上在加上商品地名称与详细信息链接。
在这里插入图片描述

浏览记录

我们浏览某商品,浏览完了之后,会把刚才浏览的商品的一些信息存储到cookie中

 //获得要查询商品的pid
        String pid = request.getParameter("pid");

我们这里需要判断是否之前已经浏览过该商品,如果已经浏览过,则把该cookie置前

//获得客户端携带的cookie--名字是pids的cookie
        Cookie[] cookies=request.getCookies();
        String pids = pid;
        if(cookies!=null){
            for(Cookie cookie:cookies){
                if("pids".equals(cookie.getName())){
                    pids=cookie.getValue();
                    //将pids拆成一个数组
                    String[] split=pids.split("-");
                    List<String> aList =Arrays.asList(split);
                    LinkedList<String> list = new LinkedList<String>(aList);
                    //判断集合中是否存在当前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存储pid
        Cookie cookie_pids = new Cookie("pids",pids);
        response.addCookie(cookie_pids);

在这里插入图片描述
商品详细信息

当我们点击返回列表页面时,则从cookie中获取到刚才pids。并把它们放入域中

//获得客户端携带名字叫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);

前端页面从域中获取到商品的信息,我这里只展示商品的照片。如果想要展示商品详细信息,还想要新建一个domin对象,其实就是在Product中再加一个路径而已。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值