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

2018-06-18 00:58:47来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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点钟事情太多了还请了两天假落了好多东西不想写了就到这里吧,洗洗睡觉。。。加油少年

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java生成订单号/交易流水号

下一篇:用Java编写银行存钱取钱