码迷,mamicode.com
首页 > 其他好文 > 详细

cookie记录用户浏览过的物品

时间:2017-02-24 12:51:04      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:浏览记录   cookie   

思路如下:      
          为了便于后期的操作,所以使用collection,其中使用collection中的contains方法更加严谨点,因为contains方法不止判断值是否相同,也会判断类型是否相同,并且collection中的实现内linkedList中针对集合操作更加方便,如:addFirst(),removelast(),在cookie中我们拿到的value值是字符串,把字符串转换成集合的话我们可以借助Arrays工具类的asList()方法,它会把数据转化为一个collection的集合,但是由于不知道是是具体那种集合,所有得用linkedList的构造方法把这个collection接口转换为linkedList。

1.1   首先判断指定的cookie存不存在

1.1.1
    假如不存在

    则直接把拿到的id,添加到新创建的cookie中去,并且设置cookie的最大生命时间,响应给浏览器
    假如存在
  我们拿到cookie中的value值转换,完成后我们首先判断是否在我们规定范围内的数量

           是的话则判断是否重复,

                 有的话则romove()掉,并且把我们拿到的id添加到linkedList第一位

没有的话则直接把id添加到linkedList的第一位

          不是的话判断是否重复

                 有的话则romove()掉,并且把我们拿到的id添加到linkedList第一位

                 没有的话则删除最后一位的id,并拿传入的id添加到linkedList的第一位

1.2   最后把linkedList转化为字符串,并且对相应内容做判断,判断是否是最后一位

        是的话,则拼接的时间不添加分隔符

        不是的话,则添加相应的分隔符号

把字符串添加到cookie中,并且设置cookie的最大生命时间,响应给到浏览器中去

代码如下:
              Cookie newCookie = null;
        Cookie[] cookies = request.getCookies();
        String string = null;
        if (cookies != null) {
            for (int i = 0; i < cookies.length; i++) {
                Cookie cookie = cookies;
                if ("hist".equals(cookie.getName())) {
                    string = cookie.getValue();
                    break;
                }
            }
        }
        System.out.println(string);
        if (cookies == null || string == null) {
            newCookie = new Cookie("hist", commodityId);
            newCookie.setMaxAge(1 * 30 * 24 * 60 * 60);
            response.addCookie(newCookie);
        } else {
            String[] split = string.split(",");
            LinkedList<String> linkedList = new LinkedList<>(Arrays.asList(split));
            if (linkedList.size() < 3) {
                if (linkedList.contains(commodityId)) {
                    linkedList.remove(commodityId);
                    linkedList.addFirst(commodityId);
                } else {
                    linkedList.addFirst(commodityId);
                }
            } else {
                if (linkedList.contains(commodityId)) {
                    linkedList.remove(commodityId);
                    linkedList.addFirst(commodityId);
                } else {
                    linkedList.removeLast();
                    linkedList.addFirst(commodityId);
                }
            }
            String str = "";
            for (int i = 0; i < linkedList.size(); i++) {
                if (i == linkedList.size() - 1) {
                    str += linkedList.get(i);
                } else {
                    str += linkedList.get(i) + ",";
                }
            }
            System.out.println(str);
            newCookie = new Cookie("hist", str);
            newCookie.setMaxAge(1*30*24*60*60);
            response.addCookie(newCookie);
        }

本文出自 “11373021” 博客,请务必保留此出处http://11383021.blog.51cto.com/11373021/1900793

cookie记录用户浏览过的物品

标签:浏览记录   cookie   

原文地址:http://11383021.blog.51cto.com/11373021/1900793

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!