1.新建Cart、CartItem类
import java.util.HashMap;
public class Cart {
private HashMap<String,CartItem> cartItems=new HashMap<String,CartItem>();
private double total;//总计
public HashMap<String, CartItem> getCartItems() {
return cartItems;
}
public void setCartItems(HashMap<String, CartItem> cartItems) {
this.cartItems = cartItems;
}
public double getTotal() {
return total;
}
public void setTotal(double total) {
this.total = total;
}
}
public class CartItem {
private Product product;//商品
private int buyNum;//个数
private double subTotal;//小计
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
public int getBuyNum() {
return buyNum;
}
public void setBuyNum(int buyNum) {
this.buyNum = buyNum;
}
public double getSubTotal() {
return subTotal;
}
public void setSubTotal(double subTotal) {
this.subTotal = subTotal;
}
}
2.ProductServlet类,处理购物车功能
public void addProductToCard(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取商品编号
String pid= request.getParameter("pid");
//购买数量
int buyNum=Integer.parseInt(request.getParameter("buyNum"));
Product product= productService.findProductByPid(pid);
HttpSession session=request.getSession();
Cart cart= (Cart) session.getAttribute("cart");
if(cart==null){
cart=new Cart();
}
CartItem cartItem=new CartItem();
cartItem.setBuyNum(buyNum);
cartItem.setProduct(product);
//计算小计
double subTotal=product.getShop_price()*buyNum;
cartItem.setSubTotal(subTotal);
HashMap<String,CartItem> cartItems= cart.getCartItems();
double newSubTotal=0;
if(cartItems.containsKey(pid)){
CartItem item= cartItems.get(pid);
//修改数量
int oldBuyNum= item.getBuyNum();
oldBuyNum=oldBuyNum+buyNum;
item.setBuyNum(oldBuyNum);
//修改小计
double oldSubTotal= item.getSubTotal();
newSubTotal=buyNum*product.getShop_price();
oldSubTotal=oldSubTotal+newSubTotal;
item.setSubTotal(oldSubTotal);
}else{
cartItems.put(pid, cartItem);
newSubTotal=buyNum*product.getShop_price();
}
//计算 总计
double total=cart.getTotal()+newSubTotal;
cart.setTotal(total);
cart.setCartItems(cartItems);
session.setAttribute("cart", cart);
request.getRequestDispatcher("cart.jsp").forward(request, response);
}
3.ProductServlet类,删除购物车商品
//删除指定的商品
public void deleteCartByPid(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
//获取商品编号
String pid= request.getParameter("pid");
HttpSession session= request.getSession();
Cart cart= (Cart) session.getAttribute("cart");
if(cart !=null){
HashMap<String,CartItem> cartItems= cart.getCartItems();
//修改总价
CartItem cartItem=cartItems.get(pid);
cart.setTotal(cart.getTotal()-cartItem.getSubTotal());
cartItems.remove(pid);
cart.setCartItems(cartItems);
}
session.setAttribute("cart",cart);
request.getRequestDispatcher("cart.jsp").forward(request, response);
}
4.ProductServlet类,清空购物车商品
public void clearCart(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
HttpSession session= request.getSession();
if(session.getAttribute("cart")!=null){
session.removeAttribute("cart");
}
request.getRequestDispatcher("cart.jsp").forward(request, response);
}