1.封装实体对象:
* 购物项:CartItem
* 商品对象.
* 数量
* 小计
public class CartItem {
//商品对象
private Product product ;
//数量
private Integer count =1 ;
//小计
private Double subtotal ;
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
public Double getSubtotal() {
return count*product.getShop_price();
}
}
- 购物车:Cart
- 购物项集合:
- Map
public class Cart {
//存放购物项
private Map<Integer,CartItem> map = new HashMap<Integer,CartItem>();
public Collection getCartItems(){
return map.values();
}
//总计
private Double total = 0d ;
public Double getTotal() {
return total;
}
//将购物项添加到购物车中
public void addCart(CartItem cartItem){
Integer pid = cartItem.getProduct().getPid();
if(map.containsKey(pid)){
CartItem _cartItem = map.get(pid);
_cartItem.setCount(_cartItem.getCount()+cartItem.getCount());
}else{
map.put(pid, cartItem);
}
total +=cartItem.getSubtotal();
}
//将购物项从购物车中移除
public void removeCart(Integer pid){
CartItem cartItem = map.remove(pid);
total -= cartItem.getSubtotal();
}
//清空购物车
public void clearCart(){
map.clear();
total = 0d;
}
}
2.购物车的CartAction
接受产品的pid和数量count
提供购物车的获得方法getCart(request)
提供addCart处理方法
提供removeCart处理方法
提供clearCart处理方法
public class CartAction extends ActionSupport {
//接受pid
private Integer pid ;
//接受Count
private Integer count;
private Cart cart ;
//注入ProductService
@Resource
private ProductService productService ;
//获取购物车
public Cart getCart(HttpServletRequest request){
cart = (Cart) request.getSession().getAttribute("cart");
if(cart==null){
cart = new Cart();
request.getSession().setAttribute("cart", cart);
}
return cart;
}
//添加购物项到购物车中
public String addCart(){
//查询商品信息
Product product = productService.findObjectById(pid);
//创建一个购物项的对象
CartItem cartItem = new CartItem();
cartItem.setCount(count);
cartItem.setProduct(product);
HttpServletRequest request = ServletActionContext.getRequest();
cart = getCart(request);
cart.addCart(cartItem);
return "addCartSuccess";
}
//移除某个购物项
public String removeCart(){
HttpServletRequest request = ServletActionContext.getRequest();
cart = getCart(request);
cart.removeCart(pid);
return "removeCartSuccess";
}
//清空购物车
public String clearCart(){
HttpServletRequest request = ServletActionContext.getRequest();
cart = getCart(request);
cart.clearCart();
return "clearCartSuccess";
}
public String cartPage(){
return "cartPageSuccess";
}
public void setPid(Integer pid) {
this.pid = pid;
}
public void setCount(Integer count) {
this.count = count;
}
}