使用Cookie有序非重复记录已浏览商品的原理以及实现
来源:互联网 发布:手机电视下载软件 编辑:程序博客网 时间:2024/04/30 03:47
使用Cookie有序非重复记录已浏览商品的原理以及实现
电商网站一般都会使用cookie记录用户浏览记录,看过的商品会呈现在用户眼前。首先想到的原理,无非是一个addcokie(),一个getCookie()方法即可实现。仔细观察与分析,其实不然。下面我们对cookie记录用户浏览过商品的几种情况进行分析。
假定Cookie存储的规则为存储的商品数不超过三个,并且最后浏览的商品在浏览记录的最前面出现。
假设存储用户浏览过商品的cookie为history。注意用户浏览的先后顺序决定了浏览记录中商品出现的顺序。例如用户浏览了1,2,3,那么浏览记录中的顺序为3,2,1.
情况一:当前浏览器的没有cookie,或者当前浏览器中并没有名为hist的cookie。此时cookie值为1.
这种情况是当前的用户是第一次访问,因此将本次访问的商品1加入history即可。
情况二:当前浏览器中有名为history的cookie,并且cookie中的记录为1。此时用户浏览了商品2。
这种情况是用户第二次访问,并且与第一次访问的商品不一样,因此直接将商品2添加到historr中。此时history值为2,1。
情况三:当前浏览器中有名为history的cookie,并且cookie中的记录为2,1。此时用户又浏览了商品1。
这种情况是用户第三次访问,并且重复访问了一种已经浏览过的商品,此时要注意调换cookie中值得顺序。此时history值为1,2。
情况四:当前浏览器中有名为history的cookie,并且cookie中的记录为2,1。此时用户又浏览了商品3。
这种情况是用户第三次访问,并且访问了一种没有浏览过的商品,此时直接添加即可。此时history值为3,2,1。
情况五:当前浏览器中有名为history的cookie,并且cookie中的记录为3,2,1。此时用户又浏览了商品2。
这种情况是用户第四次访问,并且访问了一种已经浏览过的商品,此时更改顺序即可。此时history值为2,3,1。
情况六:当前浏览器中有名为history的cookie,并且cookie中的记录为3,2,1。此时用户又浏览了商品4。
这种情况是用户第四次访问,并且访问了一种没有浏览过的商品,此时直接即可,注意把最先浏览过的剔除。此时history值为4,3,2。
经过总结,我们需要面对的是以下几种操作:
1)判断已有的cookie,history中是否包含某件商品。
2)更改已有的history中商品的顺序。
3)增删history中的商品
如果选用数组存储商品,是比较麻烦的。因为在数组中进行增删操作不容易,需要进行大量的移动操作。这是数组固有的缺点。
选用哪种工具能满足以下两种需求呢?
1)方便判断元素是否存在
2)方便增删元素内容
答案是LinkedList。
因此,我们目前的工作是转换,将history=“1,2,3“ 转换成LinkedList,将字符串切成数组。
// String-> String[]
String[] history = history.split(",");
// String->Collection
Collection colls = Arrays.asList(history);
// Collectoin->LinkedList
LinkedList list = new LinkedList(colls);
接下来对不同情况进行操作:
转载自:http://www.jianshu.com/p/5f87b558a4da
- 使用Cookie有序非重复记录已浏览商品的原理以及实现
- cookie实现商品浏览记录的原理
- 使用Cookie实现保存商品浏览记录
- 使用Cookie实现商品的浏览记录功能
- 使用cookie+工具类实现的 记录显示 用户【浏览商品记录】
- java 使用Cookie实现,浏览过商品记录
- 用Cookie实现商品浏览记录
- 利用Cookie实现用户浏览商品记录
- cookie商品浏览记录
- 利用cookie显示商品的浏览记录
- JAVAEE model1模型实现商品浏览记录(去除重复的浏览记录)(一)
- JavaWeb_使用Cookie模拟实现显示最近浏览的商品
- 使用jsp实现对商品的浏览与保存浏览过的商品记录
- 使用cookie实现记录浏览商品的过程并能够清空浏览记录(简单的小程序不涉及到数据库的调取)
- day14-cookie&商品浏览记录
- 商品浏览记录实现
- 记录用户的商品浏览记录(Linkedlist,删除cookie)
- 用Cookie实现商品浏览记录(No.39)
- 【C++】C++用new和不用new创建类对象区别
- iOS 开发者中的公司账号与个人账号之间有什么区别
- springboot学习笔记(二)日志配置
- Go 开发WEB服务之hello world
- android gridview 选择变色 再点击还原 并支持多选。记录贴 01
- 使用Cookie有序非重复记录已浏览商品的原理以及实现
- 安徽省阜阳市谷歌卫星地图下载(百度网盘离线包下载)
- oracle中的number类型用法及举例
- MySQL从无关联的两个或多个表中查询数据,列转行等
- Python爬取百思不得姐的视频+视频的切割
- module_param的使用
- Leetcode 746. Min Cost Climbing Stairs
- [算法分析与设计] leetcode 每周一题: 050. Pow(x, n)
- java安全管理器