淘淘商城——添加购物车
上文我们一起改造了下商品详情页面关于购物车那块的部分,本文我们将一起实现添加购物车这个功能。
我们以京东为例,比如我们选了一款手机,然后点击”加入购物车”,注意,此时我们并没有登录。
我们会看到如下图所示界面,可以看到,我们并没有直接进入购物车列表,而是到了一个中间页面,只是提醒我们成功加入了购物车。如果想进购物车列表的话,就点击那个”去购物车结算”按钮。
我们模仿京东的购物车功能,既然要展示成功加入购物车的页面,我们就要先把下图所示的淘淘商城购物车工程静态资源文件添加到taotao-cart-web工程当中。
记得将css、js、images放到webapp目录下,将jsp目录放到WEB-INF目录下,如下图所示。
下面我们再看下我们的商品详情页面以及添加购物车的情况,我们首先要启动所有的服务,然后启动除了taotao-cart-web工程之外的所有工程,商品详情页面如下图所示。
我们点击上图的”加入购物车”,会看到如下图所示界面,可以看到加入购物车的请求当中包含了商品ID以及商品数量。我们可以根据商品ID查询出商品详情。
下面我们来完成添加购物车的功能,由于查询商品详情我们的taotao-manager服务已经实现过了,因此我们只需完成表现层工程即可。首先我们要添加对dubbo服务的引用,即在springmvc.xml配置文件中添加如下配置:
<dubbo:reference interface="com.taotao.service.ItemService" id="itemService" />
- 1
接着我们在taotao-cart-web工程中按照如下业务逻辑编写一个Controller——CartController.java:
- 从cookie中查询商品列表。
- 判断商品在商品列表中是否存在。
- 如果存在,商品数量相加。
- 不存在,根据商品id查询商品信息。当根据商品id查询出商品信息后,取第一张图片保存到image属性中即可。
- 把商品添加到购物车列表。
- 把购物车商品列表写入cookie。
- key:TT_CART
- value:购物车列表转换成json数据,并且需要对数据进行编码
- cookie的有效期:保存7天
如下图所示,在CartController类中处理逻辑并最终返回逻辑视图。
为了方便大家复制,现将CartController类的代码贴出。
/*** 购物车管理Controller* <p>Title: CartController</p>* <p>Description: </p>* <p>Company: www.itcast.cn</p> * @version 1.0*/
@Controller
public class CartController {@Autowiredprivate ItemService itemService;@Value("${COOKIE_TT_CART}")private String COOKIE_TT_CART;@Value("${COOKIE_CART_EXPIRE}")private Integer COOKIE_CART_EXPIRE;@RequestMapping("/cart/add/{itemId}")public String addCart(@PathVariable Long itemId, Integer num, HttpServletRequest request, HttpServletResponse response) {// 先从Cookie中查询购物车列表List<TbItem> cartList = getCartList(request);// 判断购物车列表中是否有此商品boolean flag = false;for (TbItem tbItem : cartList) {/** 由于tbItem的ID与参数中的itemId都是包装类型的Long,要比较是否相等不要用==,* 因为那样比较的是对象的地址而不是值,为了让它们比较的是值,那么可以使用.longValue来获取值 */if (tbItem.getId() == itemId.longValue()) {// 购物车列表中存在此商品,数量要相加// 如果有,则商品数量相加tbItem.setNum(tbItem.getNum() + num); // 可以用商品的库存字段来作为购物车商品数量flag = true;break;}}if (!flag) {// 如果没有,则根据商品id查询商品信息,调用商品服务实现TbItem tbItem = itemService.getItemById(itemId);// 设置商品数量tbItem.setNum(num);// 取一张图片String image = tbItem.getImage();if (StringUtils.isNotBlank(image)) {tbItem.setImage(image.split(",")[0]);}// 添加到商品列表cartList.add(tbItem);}// 把这个购物车写入CookieCookieUtils.setCookie(request, response, COOKIE_TT_CART, JsonUtils.objectToJson(cartList), COOKIE_CART_EXPIRE, true);// 返回添加成功页面return "cartSuccess";}// 从Cookie中取出购物车列表private List<TbItem> getCartList(HttpServletRequest request) {// 使用CookieUtils取购物车列表String json = CookieUtils.getCookieValue(request, COOKIE_TT_CART, true);// 判断Cookie中是否有值if (StringUtils.isBlank(json)) {// 没有值就返回一个空Listreturn new ArrayList();}// 把json转换成List对象List<TbItem> list = JsonUtils.jsonToList(json, TbItem.class);return list;}
}
CartController类的代码中用到了常量,常量我们都放到了配置文件当中,如下图所示。
下面我们来测试一下,我们启动taotao-cart-web工程,taotao-cart-web工程启动成功后,我们再到商品详情页面点击”加入购物车”,可以看到如下图所示界面,可以看到正常显示了”成功添加商品到购物车”的页面。
淘淘商城——添加购物车相关推荐
- Selenium 实现淘宝自动化添加购物车
1.先连接webview,可以打开浏览器 使用的是火狐浏览器Firefox() from selenium import webdriver import time driver = webdrive ...
- 淘宝/天猫 添加购物车API接口教程
buyer_cart_add-添加到购物车 onebound.taobao.buyer_cart_add API接口工具 该接口需要使用:num_iid.sku_id.token三项数据 使用流 ...
- 淘淘商城——展示购物车商品列表
通过上文的学习,想必大家都已经实现了添加购物车的功能,本文我们将一起实现展示购物车商品列表的功能. 我们访问淘淘商城首页(前提是启动了所有的服务及工程,虽然有个别工程用不上,不过也没关系),点击&qu ...
- 淘淘商城第106讲——改造商品详情页面中的加入购物车板块
在上一讲中,我就说过,关于购物车模块,之前的京东和淘宝并不一样,之前的京东允许用户在没有登录的情况下就添加商品进购物车,而且加到购物车里面的商品可以一直保存着.其实这是将购物车信息写入到了Cookie ...
- (转)淘淘商城系列——实现添加商品功能
http://blog.csdn.net/yerenyuan_pku/article/details/72810937 经过上文的学习,我相信大家都知道富文本编辑器的使用方法了,我们能走到这步,实属不 ...
- 黑马淘淘商城第十二天 购物车实现、订单确认页面展示
1. 课程计划 第十二天: 1.购物车实现 2.订单确认页面展示 2. 购物车的实现 2.1. 功能分析 1.购物车是一个独立的表现层工程. 2.添加购物车不要求登录.可以指定购买商品的数量. 3.展 ...
- 淘淘商城之商品添加功能实现
1.功能分析 将表单中的数据提交到服务器中,查看item-add.jsp文件,核心表单如下: <div style="padding:10px 10px 10px 10px" ...
- 学习淘淘商城第二十三课(添加商品的实现)
上节课我们一起学习了富文本编辑器的使用,这节课我们一起学习下商品添加的实现. 在item-add.jsp当中,当点击提交按钮后,会触发submitForm方法,如下图所示. 在提交表单前需要校验输入的 ...
- 购物车的实现——淘淘商城(二十六)
文章目录 购物车的实现方式 cookie session 结合数据库 参考 添加购物车 需求 分析 总结 Service层 Controller层 展示购物车 需求 分析 总结 Service层 Co ...
最新文章
- 【转】JavaScript事件顺序
- pom文件报错_解决mac下tess4j文字识别报错问题
- session,cookie和token,以及负载均衡
- flask框架+pygal+sqlit3搭建图形化业务数据分析平台
- java计算机毕业设计辅导员班级量化管理系统MyBatis+系统+LW文档+源码+调试部署
- [WeChart]微信小程序抓包步骤
- 微信内置浏览器不能下载应用文件的解决方案-微信跳转手机默认浏览器
- 服务器raid5数据恢复成功案例,磁盘阵列数据恢复方法
- css中margin和padding设置成百分比时参照物是谁
- ImportError: CuPy is not correctly installed解决方法
- 判断两个圆相切或相交
- 微信公众号支付从前端到后台(小白教程)
- 做B端产品经理好还是做C端产品经理好?
- Mybatis中用到的设计模式
- 特别好用的git动图制作软件
- MLP Coursework Machine Learning Practical
- B. Tournament
- 生命不息,折腾不止:Jetson Nano填坑之软件篇
- 神经网络参数量和计算量,神经网络是参数模型吗
- 【数学物理方法】定解问题——数物方程的导出(列泛定方程)