使用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

 

阅读全文
0 0
原创粉丝点击