如何在不覆盖前一个购物车的情况下将多个商品添加到购物车

时间:2016-02-17 17:02:57

标签: java jsp servlets

我正在开展购物车项目。

当我将另一个商品添加到购物车时,它会覆盖购物车中的上一个商品。

项目类

private int productId;
private String brand;
private String productName;
private double unitPrice;
private int quantity;
private String mainPicture;
private double totalPrice;
//then getters and setters.

ShoppingCart类

//method to add to cart
public List<Item> addToCart(int productId, String brand, String productName, 
        double unitPrice, int quantity, String mainPicture) {

    Item cartItems = new Item();
    double totalPrice = 0.0;
    totalPrice = quantity*unitPrice;
    cartItems.setProductId(productId);
    cartItems.setBrand(brand);
    cartItems.setProductName(productName);
    cartItems.setUnitPrice(unitPrice);
    cartItems.setQuantity(quantity);
    cartItems.setMainPicture(mainPicture);
    cartItems.setTotalPrice(totalPrice);
    cart.add(cartItems);
    getCalculatedOrderTotal();

    return cart;
}

Serlvet代码

List<Item> shoppingCart = cart.addToCart(productId, brand, productName, unitPrice, quantity, mainPicture);
session.setAttribute("shoppingCart", shoppingCart);

jsp代码

&#13;
&#13;
<c:forEach items="${shoppingCart}" var="cartItems">
    <td id="shoppingTd">${cartItems.productName}</td>
</c:forEach>
&#13;
&#13;
&#13;

我需要能够在购物车中添加许多商品而不会覆盖购物车中的上一个商品。

1 个答案:

答案 0 :(得分:0)

将购物车封装在单独的类中。

在servlet的代码中,你应该从会话中检索购物车对象,如果它不存在 - 那么创建:

...
HttpSession session = request.getSession();
shoppingCart = (ShoppingCart) session.getAttribute("shoppingCart");

if(shoppingCart == null) {
    shoppingCart = new ShoppingCart();
}
...

// update stored data

session.setAttribute("shoppingCart", shoppingCart);

然后您将能够更新存储的数据。否则每次创建新的。