網上圖書商城是經典的 JavaWeb 綜合練手項目,涵蓋前後端交互、數據庫設計、會話管理、支付模擬等核心知識點。本文梳理基於 Servlet/JSP 或 Spring Boot 技術棧搭建此類系統的完整落地路徑,助力畢業設計順利通關。
| 層級 | 傳統方案 (適合理解原理) | 現代方案 (適合快速交付/就業) |
|---|---|---|
| 後端框架 | Servlet + JDBC / DbUtils | Spring Boot 3.x + MyBatis-Plus |
| 前端模板 | JSP + JSTL + EL | Thymeleaf / Vue 3 + Element Plus (前後端分離) |
| 數據庫 | MySQL 5.7/8.0 | MySQL 8.0 + Druid 連接池 |
| 構建工具 | Ant / 手動部署 | Maven / Gradle |
| 服務器 | Tomcat 9/10 | 內嵌 Tomcat / Docker 容器化部署 |
-- 用戶表
CREATE TABLE `user` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`username` VARCHAR(50) NOT NULL UNIQUE,
`password` VARCHAR(100) NOT NULL, -- 存儲 BCrypt 加密密文
`email` VARCHAR(100),
`role` TINYINT DEFAULT 0, -- 0:普通用戶 1:管理員
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 圖書分類表
CREATE TABLE `category` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`parent_id` INT DEFAULT 0
);
-- 圖書信息表
CREATE TABLE `book` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`isbn` VARCHAR(20) UNIQUE,
`title` VARCHAR(200) NOT NULL,
`author` VARCHAR(100),
`price` DECIMAL(10,2) NOT NULL,
`stock` INT DEFAULT 0,
`category_id` INT,
`cover_url` VARCHAR(500),
`description` TEXT,
`status` TINYINT DEFAULT 1, -- 1:上架 0:下架
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 購物車表
CREATE TABLE `cart_item` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`user_id` BIGINT NOT NULL,
`book_id` BIGINT NOT NULL,
`quantity` INT NOT NULL DEFAULT 1,
UNIQUE KEY `uk_user_book` (`user_id`, `book_id`)
);
-- 訂單主表
CREATE TABLE `orders` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`order_no` VARCHAR(32) NOT NULL UNIQUE,
`user_id` BIGINT NOT NULL,
`total_amount` DECIMAL(10,2) NOT NULL,
`status` TINYINT DEFAULT 0, -- 0:待付款 1:已付款 2:已發貨 3:已完成 4:已取消
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 訂單項表
CREATE TABLE `order_item` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`order_id` BIGINT NOT NULL,
`book_id` BIGINT NOT NULL,
`quantity` INT NOT NULL,
`price` DECIMAL(10,2) NOT NULL -- 下單時快照價格
);
@Transactional 保證扣庫存、生成訂單、清購物車原子性;高併發場景引入 Redis Lua 腳本或樂觀鎖防超賣。bookstore-parent
├── bookstore-common // 工具類、常量、異常、VO/DTO
├── bookstore-entity // 實體類、枚舉
├── bookstore-dao // Mapper 接口、XML
├── bookstore-service // Service 接口與實現、事務邊界
├── bookstore-web // Controller、配置類、攔截器
└── bookstore-admin // 後台管理獨立模塊 (可選)
遵循上述規範開發,不僅能交付高質量的畢業設計,更能鞏固 JavaWeb 全棧工程化能力,為就業打下堅實基礎。建議從簡單的 Spring Boot 單體項目起步,逐步遷移至前後端分離架構,並在 GitHub 維護代碼歷史作為作品集展示。