cookie记录用户浏览过的物品

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

Cookie是啥文件

express 引入cookie

推荐系统算法概览

JavaScript Cookies使用

如何查看IE浏览器保存的密码