现在网上购物已经成了人们生活中不可缺少的一部分,今天我们来看下当我们从商城里面浏览搜索了商品,看到了自己喜欢的商品准备加入到购物车的这个功能实现。
购物车功能实现:
购物车功能流程:
功能分析:
(2)购物车我们需要实现的功能有哪些呢?
展示购物车列表、向购物车列表中添加商品(add)、修改购物车列表中商品的数量、删除列表中的商品。
逻辑实现:
一、展示购物车列表:
因为购物车的商品列表是保存在cookie中的,所以我们获取购物车列表就是从cookie中获取商品列表。
首先cookie中保存形式也是key-value的形式,key指的是保存的名称,比如TT_CART,是一个标志而已。value是保存的商品的具体信息,是以字符串的形式保存的,我们通常将列表的形式转换成json格式的数据,因为json格式的就是一个字符串的形式保存的。
cookie属于会话跟踪技术,写入cookie是服务器的response写入的,即服务器给客户端颁发一个名词cookie。所以我们我们获取cookie就需要使用request来获取。
service层实现:
获取到商品的列表后,我们可以展示该列表:controller层实现:
二、向购物车添加商品信息
我们首先判断购物车列表中是否存在该商品,如果存在则将该商品的数量加1,如果不存在则将商品加入购物车,重新将商品列表写入cookie。
分析:传入参数:id,num,request,response;返回值:可以采用我们的TaotaoResult,
dao层:无。
这里还有一个问题:商品信息表中的字段是非常多的,我们难道都需要吗,此时我们就要考虑一个新的接收对象pojo了,只需要购物车里面所需要的字段即可。所以重新建立一个pojo来承接商品信息的部分信息。
其中:这里需要注意cookie中和cookie外的数据的形式,是json还是java对象。
具体实现如下:controller:
service层:
三、修改购物车商品的数量,这里利用了js来实现,调用我们的add商品的功能,num设置成1或者-1
四:删除购物车的商品
逻辑实现:传入要删除商品的id,读取购物车的商品列表,遍历列表,比较id,如果id一样,则从cookie中remove该商品,然后重新将商品列表写入cookie。
返回购物车列表的页面。
实现:controller:
购物车功能还有一些问题:
1、更换设备购物车商品不能同步
a)不能把购物车商品保存到数据库
c)可以把购物车信息保存到redis中,key就是用户,value就是购物车列表