Cookie在商品浏览记录中的使用

Posted hymen-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookie在商品浏览记录中的使用相关的知识,希望对你有一定的参考价值。

Cookie在工作中的使用,最近项目写到了用户浏览商品模块,用到了cookie对象,把我对cookie的认识分享给大家。cookie简称小饼干,大家应该知道吧,cookie属于存储在客户端,也就是浏览器端,它储存的大小是有限制的,根据各个浏览器不同大小也不同。下面是商城的浏览记录模块的技术实现。

首先技术分析:

Cookie cookie = new Cookie(cookiename,cookievalue);//创建cookie

response.addCookie(cookiename);//把cookie添加到浏览器中

Cooklies [] cookies = request.getCookies(); //获取所有的cookie

这里我准备了一个util工具类,根据传入的cookie名称返回对象的cookie

public static Cookie findCookie(Cookie[] cookies ,Cookie cookie){

  //判断cookies是否为空

  if(cookies != null){

    //不等于空遍历每一个cookie

    for(Cookie c: cookies){

      //获取每一个的value如果value等于我传入的cookie就返回

       String value = c.getValue();

       if(value.equals(cookie)){

         return c;

       }

    }

    //如果找不到直接返回空

    return null;

  }

}

 

步骤分析:

1.当点击各个商品时进入productListHistoryServlet

2.获取传来的商品id

3.获取cookie如果为null  就创建cookie

4.如果不为null,获取cookie的值按“-”分割(这里我用的是linkedList)

5.判断是否包含,如果包含就把最后一个删除

6.否则判断是否大于等于7,如果大于等于7把最后一个删除,将当前id添加到第一个

7.不大于等于7就直接添加到第一个

8.最后处理数据  分别给每个id后添加“-”,将最后一个“-”删除

9.添加到页面中将cookie

 

代码实现:

 

//获取id

String id = request.getParameter("id");

//获取cookie如果为null  就创建cookie

Cookie[] cookies = request.getCookies();

//调用工具类

Cookie cookie = util.findCookie(cookies,history);

//获取cookie如果为null  就创建cookie

if(cookie==null){

Cookie cookie = new Cookie("history")

response.addCookie(cookie);

}else{

//如果不为null,获取cookie的值按“-”分割(这里我用的是linkedList)

String value = cookie.getValue();

String[] ids = value.spilt("-");

//调用linkedlist构造方法将数组转换成linkedlist  因为数组直接操作元素不能增删,我考虑用到linkedlist

LinkedList<Stirng> list = new LinkedList<String>(Arrays.asList(ids));

//判断是否包含,如果包含就把最后一个删除

if(list.contains(id)){

  list.remove(id);

  list.addFirst(id);

}else{

  //否则判断是否大于等于7,如果大于等于7把最后一个删除,将当前id添加到第一个

  if(list.size()>=7){

    list.removeLast();

    list.addFrist(id);

  }else{

  //不大于7

    list.addFirst(id);

  }

//最后处理数据  分别给每个id后添加“-”,将最后一个“-”删除

 //创建StringBuffer

  StringBuffer sb = new StringBuffer();

  //遍历list

  for(String s : list){

    sb.append(s+"-");

  }

  String val = sb.toString().subString(0,sb.length-1);

  //覆盖cookie

  Cookie c = new Cookie("history",val);

  c.setMaxAge(60*60*24*7);

  response.addCookie(cookie);

}

}

心好累啊,每天熬夜到2点钟事情太多了还请了两天假落了好多东西不想写了就到这里吧,洗洗睡觉。。。加油少年

以上是关于Cookie在商品浏览记录中的使用的主要内容,如果未能解决你的问题,请参考以下文章

javaWeb 使用cookie显示商品浏览记录

(JS实现顾客商品浏览记录以及购物车)Cookie的保存与删除

商品的浏览记录

express 引入cookie

(十五)浏览记录

显示商品的浏览记录