JavaWeb实现模拟数据库实现购物车功能

本文详细介绍了使用JavaWeb开发一个简单的购物车系统,包括创建项目、POJO类(如Product、Clothing、HDD、USB和Flower)、模拟数据库、以及实现购物车增删操作的Servlet。
摘要由CSDN通过智能技术生成

一, 创建JavaWeb项目

1.1在空文件里创建一个文件加例如我创建的是web02文件夹

1.2 idea中创建JavaWeb项目

1.3 选择刚刚创建的文件夹

1.4 创建文件初始化工程文件目录

二,创建POJO类

Product类 ,是一共父类后续物品都继承它

package com.best.pojo;

// 商品类
public class Product {
    private int id;
    private String name;
    private double price;
    private Integer quantity;


    public Product(int id, String name, double price) {
        this.id = id;
        this.name = name;
        this.price = price;
        this.quantity = 0;
    }

    public Integer getQuantity() {
        return quantity;
    }

    public void setQuantity(Integer quantity) {
        this.quantity = quantity;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}



2.1  Clothing, Flower,HDD,USB 类都继承Product类

2.1.1 Clothing

package com.best.pojo;

// 服装类
public class Clothing extends Product {
    public Clothing(int id, String name, double price) {
        super(id, name, price);
    }
}

 2.1.2 HDD

package com.best.pojo;

// 移动硬盘类
public class HDD extends Product {
    public HDD(int id, String name, double price) {
        super(id, name, price);
    }
}

2.1.3 USB

package com.best.pojo;

// U盘类
public class USB extends Product {
    public USB(int id, String name, double price) {
        super(id, name, price);
    }
}

2.1.4 Flower

package com.best.pojo;

// 鲜花类
public class Flower extends Product {
    public Flower(int id, String name, double price) {
        super(id, name, price);
    }
}

三 模拟数据库数据data 

Data.java

package com.best.data;

import com.best.pojo.*;

import java.util.HashMap;
import java.util.Map;

public class Database {
    private static Map<Integer, Product> products = new HashMap<>();

    static {

        products.put(1, new USB(1, "USB 闪存盘", 1002));
        products.put(2, new HDD(2, "外置硬盘", 3009));
        products.put(3, new Flower(3, "玫瑰花束", 75));
        products.put(4, new Clothing(4, "T恤衫", 99));
    }

    public static Product getProductById(int id) {
        return products.get(id);
    }

    public static Map<Integer, Product> getAllProducts() {
        return products;
    }
}

四, 写servlet核心类

4.1 增加到购物车的业务逻辑

AddToCartServlet.java

package com.best.servlet;

import com.best.data.Database;
import com.best.pojo.Product;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet("/addToCart")
public class AddToCartServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        int productId = Integer.parseInt(request.getParameter("id"));

        HttpSession session = request.getSession();
        List<Product> cart = (List<Product>) session.getAttribute("cart");
        if (cart == null) {
            cart = new ArrayList<>();
            session.setAttribute("cart", cart);
        }


        // 检查购物车中是否已存在相同商品,如果存在则增加数量,否则添加新商品到购物车
        boolean found = false;
        for (Product product : cart) {
            if (product.getId() == productId) {
                product.setQuantity(product.getQuantity() + 1);
                found = true;
                break;
            }
        }

        if (!found) {
            Product product = Database.getProductById(productId);
            product.setQuantity(1);
            cart.add(product);
        }

        response.sendRedirect("displayProducts.jsp");
    }
}

4.2 删除购物车的业务逻辑

RemoveFromCartServlet.java

package com.best.servlet;

import com.best.pojo.Product;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

@WebServlet("/removeFromCart")
public class RemoveFromCartServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 获取要移除的商品 id
        int productId = Integer.parseInt(request.getParameter("id"));

        // 从 session 中获取购物车列表
        List<Product> cart = (List<Product>) request.getSession().getAttribute("cart");

        // 在购物车中查找要移除的商品,并移除它
        if (cart != null) {
            Iterator<Product> iterator = cart.iterator();
            while (iterator.hasNext()) {
                Product product = iterator.next();
                if (product.getId() == productId) {
                    // 更新商品的数量
                    int quantity = product.getQuantity();
                    if (quantity > 1) {
                        product.setQuantity(quantity - 1);
                    } else {
                        iterator.remove(); // 如果数量为1,则直接移除商品
                    }
                    break;
                }
            }
        }

        // 重定向到查看购物车页面
        response.sendRedirect("viewCart.jsp");
    }
}

五,渲染数据 到jsp页面

5.1 浏览商品的页面  displayProducts.jsp

<%@ page import="com.best.pojo.Product" %>
<%@ page import="java.util.Map" %>
<%@ page import="com.best.data.Database" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>商品</title>
</head>
<body>
<h2>商品:</h2>
<ul>
    <%
        Map<Integer, Product> products = Database.getAllProducts();
        for (Product product : products.values()) {
    %>
    <li><%= product.getName() %> - ¥<%= product.getPrice() %> <a href='addToCart?id=<%= product.getId() %>&viewCart=true'>添加购物车</a></li>
    <% } %>
</ul>
<a href="viewCart.jsp">查看购物车</a>
</body>
</html>

 5.2 购物车页面 viewCart.jsp

<%@ page import="java.util.List" %>
<%@ page import="com.best.pojo.Product" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>查看购物车</title>
</head>
<body>
<h2>购物车内容:</h2>
<ul>
    <%
        int totalCount = 0; // 总数量
        double totalPrice = 0; // 总价钱
        List<Product> cart = (List<Product>) session.getAttribute("cart");
        if (cart != null && cart.size() > 0) {
            for (Product product : cart) {
                totalCount += product.getQuantity(); // 累加每个商品的数量
                totalPrice += product.getPrice() * product.getQuantity(); // 累加每个商品的总价钱
    %>
    <li><%= product.getName() %> - ¥<%= product.getPrice()*product.getQuantity() %> - 数量:<%= product.getQuantity() %> <a href='removeFromCart?id=<%= product.getId() %>'>移除</a></li>
    <%
        }
    } else {
    %>
    <li>您的购物车为空</li>
    <%
        }
    %>
</ul>
<p>购物车中共有 <%= totalCount %> 件商品。</p>
<p>购物车总价钱为 ¥<%= totalPrice %></p>
<a href="displayProducts.jsp">继续购物</a>
</body>
</html>

六 最终实现效果

视频演示

javaweb购物车案例

  • 7
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值