购物车的原理及实现.(仿京东实现原理)
2016-09-08 22:39
423 查看
2018年1月20号更新:
这个博客是自己对着传智的视频一点点学习的, 敲完了一整遍代码感觉自己也学到挺多东西,现在好多小伙伴说链接失效了, 现在补上传智的整套视频和源码,有问题给我留言。
链接:https://pan.baidu.com/s/1c3MMv6o 密码:w9py
2017年7月14日更新:
有很多小伙伴想要项目资料和源码, 我重新整理了一份传了上来:
这次更新的为项目全套视频及所有源码资料:
链接:https://pan.baidu.com/s/1c3MMv6o 密码:w9py
今天来开始写一下关于购物车的东西, 这里首先抛出四个问题:
1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录[b]用户名和密码[/b] 问:购物车商品还在吗?
2)用户登陆了用户名密码,添加商品,关闭浏览器再打开后 不登录[b]用户名和密码[/b] 问:购物车商品还在吗?
3)用户登陆了用户名密码,添加商品, 关闭浏览器,然后再打开,登陆用户名和密码 问:购物车商品还在吗?
4)用户登陆了用户名密码,添加商品, 关闭浏览器 外地老家打开浏览器 登陆用户名和密码 问:购物车商品还在吗?
上面四个问题都是以京东为模板, 那么大家猜猜结果是什么呢?
1)在
2)不在了
3)在
4)在
如果你能够猜到答案, 那么说明你真的很棒, 那么关于这四点是怎么实现的呢? (如果有不认可的小伙伴可以用京东实验一下)
下面我们就来讲解下购物车的原理,最后再来说下具体的code实现.
1)用户没有登录, 添加商品, 此时的商品是被添加到了浏览器的Cookie中, 所以当再次访问时(不登录),商品仍然在Cookie中, 所以购物车中的商品还是存在的.
2)用户登录了,添加商品, 此时会将Cookie中和用户选择的商品都添加到购物车中, 然后删除Cookie中的商品. 所以当用户再次访问(不登录),此时Cookie中的购物车商品已经被删除了, 所以此时购物车中的商品不在了.
3)用户登录, 添加商品,此时商品被添加到数据库做了持久化存储, 再次打开登录用户名和密码, 该用户选择的商品肯定还是存在的, 所以购物车中的商品还是存在的.
4)理由3)
这里再说下 没登录 保存商品到Cookie的优点以及保存到Session和数据库的对比:
1:Cookie: 优点: 保存用户浏览器(不用浪费我们公司的服务器) 缺点:Cookie禁用,不提供保存
2:Session:(Redis : 浪费大量服务器内存:实现、禁用Cookie) 速度很快
3:数据库(Mysql、Redis、SOlr) 能持久化的就数据库 速度太慢
那么我今天要讲的就是:
用户没登陆:购物车添加到Cookie中
用户登陆: 保存购物车到Redis中 (不用数据库)
整体的思路图解:
View Code
1) 当我们购买的商品只要有一件是无货的状态, 那么刷新购物车详情页面, 回显无货的商品状态.
2)当购物车中午商品时, 刷新当前页面.
购物车就这么多东西, 可能讲解有不到或者错误的地方, 欢迎大家能够指出来.
这个博客是自己对着传智的视频一点点学习的, 敲完了一整遍代码感觉自己也学到挺多东西,现在好多小伙伴说链接失效了, 现在补上传智的整套视频和源码,有问题给我留言。
链接:https://pan.baidu.com/s/1c3MMv6o 密码:w9py
2017年7月14日更新:
有很多小伙伴想要项目资料和源码, 我重新整理了一份传了上来:
这次更新的为项目全套视频及所有源码资料:
链接:https://pan.baidu.com/s/1c3MMv6o 密码:w9py
今天来开始写一下关于购物车的东西, 这里首先抛出四个问题:
1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录[b]用户名和密码[/b] 问:购物车商品还在吗?
2)用户登陆了用户名密码,添加商品,关闭浏览器再打开后 不登录[b]用户名和密码[/b] 问:购物车商品还在吗?
3)用户登陆了用户名密码,添加商品, 关闭浏览器,然后再打开,登陆用户名和密码 问:购物车商品还在吗?
4)用户登陆了用户名密码,添加商品, 关闭浏览器 外地老家打开浏览器 登陆用户名和密码 问:购物车商品还在吗?
上面四个问题都是以京东为模板, 那么大家猜猜结果是什么呢?
1)在
2)不在了
3)在
4)在
如果你能够猜到答案, 那么说明你真的很棒, 那么关于这四点是怎么实现的呢? (如果有不认可的小伙伴可以用京东实验一下)
下面我们就来讲解下购物车的原理,最后再来说下具体的code实现.
1)用户没有登录, 添加商品, 此时的商品是被添加到了浏览器的Cookie中, 所以当再次访问时(不登录),商品仍然在Cookie中, 所以购物车中的商品还是存在的.
2)用户登录了,添加商品, 此时会将Cookie中和用户选择的商品都添加到购物车中, 然后删除Cookie中的商品. 所以当用户再次访问(不登录),此时Cookie中的购物车商品已经被删除了, 所以此时购物车中的商品不在了.
3)用户登录, 添加商品,此时商品被添加到数据库做了持久化存储, 再次打开登录用户名和密码, 该用户选择的商品肯定还是存在的, 所以购物车中的商品还是存在的.
4)理由3)
这里再说下 没登录 保存商品到Cookie的优点以及保存到Session和数据库的对比:
1:Cookie: 优点: 保存用户浏览器(不用浪费我们公司的服务器) 缺点:Cookie禁用,不提供保存
2:Session:(Redis : 浪费大量服务器内存:实现、禁用Cookie) 速度很快
3:数据库(Mysql、Redis、SOlr) 能持久化的就数据库 速度太慢
那么我今天要讲的就是:
用户没登陆:购物车添加到Cookie中
用户登陆: 保存购物车到Redis中 (不用数据库)
整体的思路图解:
//从购物车中取出指定商品 public BuyerCart selectBuyerCartFromRedisBySkuIds(String[] skuIds, String username){ BuyerCart buyerCart = new BuyerCart(); //获取所有商品, redis中保存的是skuId 为key , amount 为value的Map集合 Map<String, String> hgetAll = jedis.hgetAll("buyerCart:"+username); if (null != hgetAll && hgetAll.size() > 0) { Set<Entry<String, String>> entrySet = hgetAll.entrySet(); for (Entry<String, String> entry : entrySet) { for (String skuId : skuIds) { if (skuId.equals(entry.getKey())) { //entry.getKey(): skuId Sku sku = new Sku(); sku.setId(Long.parseLong(entry.getKey())); BuyerItem buyerItem = new BuyerItem(); buyerItem.setSku(sku); //entry.getValue(): amount buyerItem.setAmount(Integer.parseInt(entry.getValue())); //添加到购物车中 buyerCart.addItem(buyerItem); } } } } return buyerCart; }
View Code
1) 当我们购买的商品只要有一件是无货的状态, 那么刷新购物车详情页面, 回显无货的商品状态.
2)当购物车中午商品时, 刷新当前页面.
购物车就这么多东西, 可能讲解有不到或者错误的地方, 欢迎大家能够指出来.
相关文章推荐
- 购物车的原理及实现.(仿京东实现原理)
- 京东架构师解析京东购物车的Java架构实现及原理
- 购物车的原理及实现.(仿京东实现原理)
- 京东、天猫的购物车的实现原理
- 购物车的原理及实现.(仿京东实现原理)
- 京东Java架构师讲解购物车的原理及Java实现
- 购物车的原理及实现.(仿京东实现原理)
- 购物车的原理及实现.(仿京东实现原理)
- 购物车的原理及实现.(仿京东实现原理)
- 购物车的实现原理
- TableView 实现京东购物车功能
- PHP新手中购物车实现的原理
- 电子商务网站中“购物车的实现原理”
- 购物车实现购物的原理
- 购物车的实现原理
- Session原理、生命周期及购物车功能的实现
- java-web京东购物网 加入购物车与查看购物车的实现运用session服务器端(在数据库中查询)
- 购物车的实现原理
- [项目构建 十一]babasport 购物车的原理及实现.
- 购物车的实现原理