@
目录一,新建购物车的实体类Cart二,在选择商品类型页面进行页面跳转三,在controller进行添加商品对象并记入session四,购物车页面接收购物车信息并展示五,补充说明
首先是springboot和thymeleaf整合的demo项目,然后使用session实现购物车
一,新建购物车的实体类Cart
public class Cart implements java.io.Serializable{
private Shangpin shangpin;//存放商品实体类的
private Integer number;//商品数量
//setter和getter方法省略
二,在选择商品类型页面进行页面跳转
//购物车,把id参数传到后台controller
function shoppingCar() {
var id=$("#baga").val();
var color=$("#hiddenColor").val();
var size=$("#hiddenSize").val();
location.href="/demo/shoppingCart?id="+id+"&color="+color+"&size="+size;
}
三,在controller进行添加商品对象并记入session
/**
* 添加到购物车
*/
@RequestMapping("/shoppingCart")
public String shoppingCart(Integer id,HttpSession session,String color,String size){
Integer ids=Integer.valueOf(id);
//根据id获取商品对象
List
System.err.println("商品列表:"+list);
Shangpin shangpin=new Shangpin();
shangpin.setPicpath((String) list.get(0).get("picpath"));
shangpin.setColor(color);
shangpin.setSize(size);
shangpin.setName((String)list.get(0).get("name"));
shangpin.setPrice((Double) list.get(0).get("price"));
shangpin.setId((Integer) list.get(0).get("id"));
//获取购物车
Map
//第一次添加商品到购物车
if(cartMap==null){
cartMap=new HashMap
//实例化购物车对象
Cart cart=new Cart();
cart.setShangpin(shangpin);
cart.setNumber(1);
//保存商品对象到map集合中
cartMap.put(id,cart);
}else{//第一次以后的操作
Cart cart=cartMap.get("id");//根据商品id,获取购物车实体类
if(cart!=null){//存在相同的商品
cart.setNumber(cart.getNumber()+1);
}else{
cart=new Cart();
cart.setShangpin(shangpin);
cart.setNumber(1);
cartMap.put(id,cart);
}
}
//然后保存到session中
session.setAttribute("cartMap",cartMap);
return "forward:getShoppingCar";
}
/**
* 从session中取出购物车信息,并转发到购物车页面展示商品信息
*/
@RequestMapping("getShoppingCar")
public String getShoppingCar(HttpSession session,Model model){
Map
model.addAttribute("carList",cartMap);
return "udai_shopcart";
}
四,购物车页面接收购物车信息并展示
商品信息 | 单价 | 数量 | 现价 | 操作 | |
---|---|---|---|---|---|
![在这里插入图片描述]()
|
颜色分类: 尺码: |
¥20.0 |
|
删除 |
五,补充说明
因为购物车信息存储的是键值对,并且值是以对象的形式存储的,所以,使用thymeleaf遍历数组取数据的时候需要这样才能取出对应的数据。
如果使用的是jsp和c标签的话,只需要如下即可。
效果如图
上面是购物车的基本操作,有问题欢迎留言!