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在商品浏览记录中的使用的主要内容,如果未能解决你的问题,请参考以下文章