【JAVA】Java项目实战—Java Web项目:在线商城

你在某个在线商城上购物,浏览商品、将商品添加到购物车、最后下订单。这一系列操作背后,Java Web应用正在高效地处理用户请求、存储数据、生成订单等。在电子商务中,在线商城是一个重要的商业模式。

随着互联网的发展,越来越多的企业选择通过在线商城进行产品销售。Java作为一种广泛使用的编程语言,因其跨平台性、稳定性和强大的生态系统而被广泛应用于Web开发中。

一、项目结构

在本项目中,我们将实现一个简单的在线商城,主要包括以下模块:

  1. 商品展示:用户可以查看商品列表及详情。

  2. 购物车:用户可以将商品添加到购物车,修改商品数量。

  3. 订单处理:用户可以生成订单并查看订单状态。

项目技术栈

  • 前端:HTML, CSS, JavaScript

  • 后端:Java (Spring Boot)

  • 数据库:MySQL

  • 其他:Maven, Thymeleaf (模板引擎)

二、理论知识

1. Spring Boot简介

Spring Boot是一个快速开发框架,可以帮助开发者快速构建基于Spring的应用程序。它提供了许多开箱即用的功能,如自动配置、嵌入式服务器等,减少了开发的复杂性。

2. MVC架构

MVC(Model-View-Controller)是一种设计模式,用于分离应用程序的关注点。它将应用程序分为三部分:

  • Model:数据模型,负责业务逻辑和数据处理。

  • View:用户界面,负责展示数据。

  • Controller:控制器,处理用户输入,调用Model和View。

3. RESTful API

REST(Representational State Transfer)是一种软件架构风格,常用于Web服务。RESTful API通过HTTP协议提供资源的创建、读取、更新和删除(CRUD)操作。

三、具体实现

1. 创建Spring Boot项目

使用Spring Initializr创建一个新的Spring Boot项目,选择以下依赖:

  • Spring Web

  • Spring Data JPA

  • MySQL Driver

  • Thymeleaf

2. 数据库设计

我们需要设计三个主要的表:products(商品表)、cart(购物车表)、orders(订单表)。

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price DECIMAL(10, 2) NOT NULL,
    description TEXT,
    stock INT NOT NULL
);

CREATE TABLE cart (
    id INT AUTO_INCREMENT PRIMARY KEY,
    product_id INT NOT NULL,
    quantity INT NOT NULL,
    FOREIGN KEY (product_id) REFERENCES products(id)
);

CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    total DECIMAL(10, 2) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

3. 商品展示功能

3.1 创建商品实体类
@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;
    private BigDecimal price;
    private String description;
    private int stock;

    // Getters and Setters
}
3.2 创建商品Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
    List<Product> findAll();
}
3.3 创建商品Controller
@Controller
@RequestMapping("/products")
public class ProductController {
    @Autowired
    private ProductRepository productRepository;

    @GetMapping
    public String listProducts(Model model) {
        List<Product> products = productRepository.findAll();
        model.addAttribute("products", products);
        return "product/list"; // 返回商品列表视图
    }
}
3.4 创建商品列表视图

src/main/resources/templates/product/list.html中创建商品列表视图:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>商品列表</title>
</head>
<body>
<h1>商品列表</h1>
<table>
    <tr>
        <th>商品名称</th>
        <th>价格</th>
        <th>描述</th>
        <th>操作</th>
    </tr>
    <tr th:each="product : ${products}">
        <td th:text="${product.name}"></td>
        <td th:text="${product.price}"></td>
        <td th:text="${product.description}"></td>
        <td>
            <a th:href="@{/cart/add(productId=${product.id})}">添加到购物车</a>
        </td>
    </tr>
</table>
</body>
</html>

4. 购物车功能

4.1 创建购物车实体类
@Entity
public class CartItem {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private Long productId;
    private int quantity;

    // Getters and Setters
}
4.2 创建购物车Controller
@Controller
@RequestMapping("/cart")
public class CartController {
    private List<CartItem> cartItems = new ArrayList<>();

    @GetMapping
    public String viewCart(Model model) {
        model.addAttribute("cartItems", cartItems);
        return "cart/view"; // 返回购物车视图
    }

    @GetMapping("/add")
    public String addToCart(@RequestParam Long productId) {
        // 查找购物车中是否已存在该商品
        Optional<CartItem> existingItem = cartItems.stream()
                .filter(item -> item.getProductId().equals(productId))
                .findFirst();

        if (existingItem.isPresent()) {
            existingItem.get().setQuantity(existingItem.get().getQuantity() + 1);
        } else {
            CartItem newItem = new CartItem();
            newItem.setProductId(productId);
            newItem.setQuantity(1);
            cartItems.add(newItem);
        }
        return "redirect:/cart"; // 重定向到购物车视图
    }
}
4.3 创建购物车视图

src/main/resources/templates/cart/view.html中创建购物车视图:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>购物车</title>
</head>
<body>
<h1>购物车</h1>
<table>
    <tr>
        <th>商品ID</th>
        <th>数量</th>
    </tr>
    <tr th:each="item : ${cartItems}">
        <td th:text="${item.productId}"></td>
        <td th:text="${item.quantity}"></td>
    </tr>
</table>
</body>
</html>

5. 订单处理功能

5.1 创建订单实体类
@Entity
public class Order {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private BigDecimal total;
    private LocalDateTime createdAt;

    // Getters and Setters
}
5.2 创建订单Controller
@Controller
@RequestMapping("/orders")
public class OrderController {
    @Autowired
    private OrderRepository orderRepository;

    @PostMapping("/create")
    public String createOrder(@RequestParam BigDecimal total) {
        Order order = new Order();
        order.setTotal(total);
        order.setCreatedAt(LocalDateTime.now());
        orderRepository.save(order);
        return "redirect:/orders"; // 重定向到订单列表视图
    }
}
5.3 创建订单Repository
public interface OrderRepository extends JpaRepository<Order, Long> {
    List<Order> findAll();
}
5.4 创建订单列表视图

src/main/resources/templates/orders/list.html中创建订单列表视图:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>订单列表</title>
</head>
<body>
<h1>订单列表</h1>
<table>
    <tr>
        <th>订单ID</th>
        <th>总金额</th>
        <th>创建时间</th>
    </tr>
    <tr th:each="order : ${orders}">
        <td th:text="${order.id}"></td>
        <td th:text="${order.total}"></td>
        <td th:text="${order.createdAt}"></td>
    </tr>
</table>
</body>
</html>
摘要信息: 电子商城系统主要功能包括:用户注册、用户登录、用户查看商城商品、用户购买商品、用户查看购物车并且清空购物车、用户找回账户以及密码、管理员登录、管理员注册、管理员查看用户信息、管理员删除用户信息、管理员删除商品信息、管理员添加商品信息、管理员修改商品信息、退出登录等。 图形可视化界面运行下能够显示系统启动进度条,删除、添加、注册等相关操作时能够弹出窗口加以提示,退出登录或系统时能够做到单击确认退出按钮才退出登录或系统,能够对用户加以提示。 注册用户或是管理员、添加商品信息、购买商品、删除商品或是用户信息、修改商品信息等相关操作时能够判断有无该用户或是商品。 用户在购买商品的时候同时更新商品的库存数量,管理员删除管理员时可以做到同时删除用户的购买信息。 主要内容: 一、项目名称   基于JAVASE的电子商城系统 二、功能要求 1、用户注册 2、用户登录 3、用户查看商品列表 4、用户购买商品 5、用户查看购买商品列表 6、用户清空购物车 7、用户找回账户和密码 8、管理员登录 9、管理员注册 10、查看用户信息 11、查看商品信息 12、删除用户信息 13、删除商品信息 14、添加商品信息 15、修改商品信息 16、退出用户登录 17、退出管理员登录 18、退出商城 三、需求分析 该系统的用户是商城消费者和商城管理者,根据客户的要求,可以注册、登录、购物、查看购物车信息、找回账户和密码,管理员可以对商品信息进行增加、修改、删除操作,可以对用户进行查看和删除。 四、设计思想 1、在控制台与图形可视化界面下运行 2、使用Mysql数据库存取用户登录信息和商品信息 3、使用List存取商品购买信息 4、把程序分为多个类,多个类之间的互相调用。 5、用户或是管理员进行注册、登录时能够提供校验码。 6、用户或是管理员获取数据库信息时能够与数据库进行交互。 7、用户购物要做到简洁明了。 8、用户只需要身份证号码和邮箱地址就能找回账户和密码。 9、注册、删除、修改等操作要有信息提示。 10、用户、管理员进行操作时能够做到操作提示与用户名提示。 11、退出登录或是退出系统时能够做到让用户有所考虑。 五、具体实现   1、技术思路: 界面:基于控制台与图形可视化界面(Swing)实现用户的输入和输出。 程序流程:在函数中利用循环与递归 ,读取用户输入,调用模块实现各个子功能。 2、功能子模块划分: ① 注册模块 ② 登录模块 ③ 查看商品模块(查看商品列表,购买商品) ④ 查看购买商品信息 ⑤ 管理员登录(添加管理员信息,对商品信息进行查看、增加、 修改、删除,对用户信息进行查看、删除,删除用户信息 时能够做到同时删除消费记录) ⑥ 退出系统 六、运行截图 1、商城系统启动进度条(进度条能够做到动态加载): 2、商城主界面: 3、用户注册界面(填写注册信息不符合要求时能够弹窗提示、并 且判断用户名是否重复等): 4、用户登录界面(账户、密码不一致时能弹窗提示): 5、用户服务选择界面(能够提示用户名): 6、购买商品界面(能够判断输入的商品序号是否正确): 7、查看购物车界面(能够一键清空购物车): 8、查看商城商品信息界面: 9、管理员登录界面: 10、找回账户与密码界面: 11、管理员服务选择界面: 12、添加管理员界面: 13、查看用户信息界面: 14、删除用户信息界面: 15、删除商品信息界面: 16、添加商品信息界面: 17、修改商品信息界面: 18、退出账号、管理员登录、商城系统时要有提示:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值