Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QFShop — 小米商城

基于 Java Web + MySQL 的全栈电商平台,模拟小米商城核心购物流程

Java Servlet MySQL C3P0 Bootstrap


📌 项目概述

QFShop 是一个功能完整的 B2C 电商平台,实现了用户注册登录、商品浏览、购物车、订单管理、支付等核心电商流程。界面风格模拟小米商城,基于经典 Java Web 技术栈(Servlet + JSP + MVC)构建,无需任何框架即可运行。


🗂️ 项目结构

qfshop/
├── src/com/itqf/
│   ├── controller/          # Servlet 控制器层
│   │   ├── BaseServlet.java  # 反射路由基类
│   │   ├── UserContraller.java
│   │   ├── ProductController.java
│   │   ├── CartController.java
│   │   ├── OrdersController.java
│   │   ├── AddressController.java
│   │   └── TypeController.java
│   │
│   ├── service/              # 业务逻辑层
│   │   ├── impl/
│   │   └── *.java
│   │
│   ├── dao/                  # 数据访问层
│   │   ├── impl/
│   │   └── *.java
│   │
│   ├── entity/              # 实体类
│   │   ├── User.java
│   │   ├── Product.java
│   │   ├── Cart.java
│   │   ├── Orders.java
│   │   ├── Item.java        # 订单项
│   │   ├── Address.java
│   │   └── Type.java
│   │
│   └── utils/               # 工具类
│       ├── C3P0Utils.java   # C3P0 连接池
│       ├── MD5Utils.java     # 密码加密
│       ├── PaymentUtil.java  # 支付工具(易宝/微信)
│       ├── EmailUtils.java   # 邮件发送
│       ├── Base64Utils.java
│       └── RandomUtils.java
│
├── web/                     # 前端页面
│   ├── index.jsp            # 首页
│   ├── login.jsp           # 登录
│   ├── register.jsp        # 注册
│   ├── goodsList.jsp       # 商品列表
│   ├── goodsDetail.jsp      # 商品详情
│   ├── cart.jsp            # 购物车
│   ├── order.jsp           # 确认订单
│   ├── orderList.jsp       # 订单列表
│   ├── orderDetail.jsp      # 订单详情
│   ├── confirm.jsp          # 支付确认
│   ├── pay.jsp              # 支付页面
│   ├── self_info.jsp       # 个人信息
│   ├── admin/              # 后台管理
│   │   ├── admin.jsp        # 管理主页
│   │   ├── addGoods.jsp     # 添加商品
│   │   ├── showGoods.jsp    # 商品管理
│   │   ├── showAllOrder.jsp # 订单管理
│   │   └── userList.jsp     # 用户管理
│   └── error/               # 错误页面
│
├── WEB-INF/lib/            # 依赖包
│   ├── c3p0-0.9.1.2.jar
│   ├── mysql-connector-java-5.0.8-bin.jar
│   ├── commons-dbutils-1.4.jar
│   ├── gson-2.2.1.jar
│   └── ...
│
└── README.md

🧠 核心功能模块

用户模块

功能 说明
用户注册 邮箱激活码注册,MD5 密码加密
用户登录 验证码校验,Cookie 自动登录(14天有效)
邮箱激活 激活码 Base64 编码,激活状态管理
注销登录 Session 清除 + Cookie 覆盖
个人信息 查看/管理收货地址

商品模块

功能 说明
商品列表 分类展示,分页功能(每页6件)
商品详情 商品信息、价格、描述展示
热门商品 pstate 热度指数排序
分类浏览 按商品类别 tid 筛选

购物车模块

功能 说明
添加购物车 登录校验,商品 PID + 用户 UID 关联
查看购物车 实时小计计算(数量 × 单价)
修改数量 动态更新小计
删除商品 按购物车项 cid 删除
清空购物车 按用户 UID 清空

订单模块

功能 说明
确认订单 选择收货地址 + 购物车商品结算
创建订单 生成订单号,扣减库存
订单状态 0未付款 → 1已付款 → 2已发货 → 3待评价 → 4完成 / 5退货
订单详情 订单项(Item)列表展示

支付模块

功能 说明
微信支付 扫码支付(WeiXin API 集成)
易宝支付 网关支付(Hmac MD5 签名验签)
支付回调 异步通知,订单状态变更

后台管理

功能 说明
商品管理 添加/查看/下架商品
订单管理 查看所有订单,状态管理
用户管理 查看注册用户,账号禁用
分类管理 添加/管理商品分类

🛠️ 技术架构

分层设计

请求 → Filter(编码/登录) → Servlet(Controller)
       → Service(业务逻辑)
       → Dao(CRUD) → C3P0 → MySQL

核心技术

技术 用途
Servlet 3.0 @WebServlet 注解路由
反射 + BaseServlet 一个 Servlet 处理多个方法(method 参数分发)
BeanUtils Map → Entity 自动映射
C3P0 数据库连接池(配置文件自动读取)
JSTL + EL JSP 表达式语言,替代 Scriptlet
Bootstrap 3 响应式前端框架
Cookie + Session 登录态与自动登录
MD5 用户密码单向加密存储
Base64 激活码编解码
JavaMail 注册邮件激活
Gson JSON 序列化(微信支付回调)

🚀 快速开始

环境要求

  • JDK 8+
  • Apache Tomcat 8+
  • MySQL 5.x
  • Maven 或普通 Web 项目导入

数据库配置

-- 创建数据库
CREATE DATABASE qfshop CHARACTER SET utf8;

-- 用户表
CREATE TABLE user (
  uid INT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(50) UNIQUE,
  upassword VARCHAR(32),      -- MD5 加密
  usex VARCHAR(10),
  ustatus CHAR(1) DEFAULT '0', -- 0 未激活,1 已激活
  code VARCHAR(32),            -- 激活码
  email VARCHAR(100),
  urole CHAR(1) DEFAULT '0'   -- 0 普通用户,1 管理员
);

-- 商品表
CREATE TABLE product (
  pid INT PRIMARY KEY AUTO_INCREMENT,
  tid INT,
  pname VARCHAR(100),
  ptime DATE,
  pimage VARCHAR(200),
  pstate INT DEFAULT 0,        -- 热门指数
  pinfo TEXT,
  pprice DECIMAL(10,2)
);

-- 购物车表
CREATE TABLE cart (
  cid INT PRIMARY KEY AUTO_INCREMENT,
  uid INT,
  pid INT,
  cnum INT DEFAULT 1
);

-- 订单表
CREATE TABLE orders (
  oid VARCHAR(50) PRIMARY KEY,
  uid INT,
  aid INT,
  ocount DECIMAL(10,2),
  otime DATETIME,
  ostate INT DEFAULT 0        -- 0~5 状态流转
);

-- 订单项表
CREATE TABLE item (
  itemid INT PRIMARY KEY AUTO_INCREMENT,
  oid VARCHAR(50),
  pid INT,
  count INT,
  subtotal DECIMAL(10,2)
);

-- 地址表
CREATE TABLE address (...);
-- 分类表
CREATE TABLE type (...);

启动项目

  1. 导入 web 目录到 Eclipse/IDEA 作为 Web 项目
  2. 配置 MySQL 数据库连接(C3P0 自动读取 c3p0-config.xml
  3. 部署到 Tomcat 8+
  4. 访问 http://localhost:8080/qfshop/

🔑 核心代码逻辑

BaseServlet 反射路由

// 一个 Servlet 处理多个方法,通过 method 参数分发
@WebServlet("/product")
public class ProductController extends BaseServlet {

    public String show(HttpServletRequest request, ...) {
        return Constants.FORWARD + "/goodsList.jsp";
    }

    public String detail(HttpServletRequest request, ...) {
        return Constants.FORWARD + "/goodsDetail.jsp";
    }
}

购物车小计自动计算

public BigDecimal getCcount() {
    BigDecimal pprice = product.getPprice();
    BigDecimal bigDecimal = new BigDecimal(cnum);
    return pprice.multiply(bigDecimal); // 单价 × 数量
}

订单状态流转

0(未付款) → 1(已付款) → 2(已发货) → 3(待评价) → 4(已完成)
                              ↓
                          5(退货中)

📂 数据表关系

User (1) ←→ (N) Cart
User (1) ←→ (N) Orders
User (1) ←→ (N) Address
Product (1) ←→ (N) Cart
Product (1) ←→ (N) Item
Orders (1) ←→ (N) Item
Orders (N) ←→ (1) Address
Product (N) ←→ (1) Type

🙏 致谢


📝 License

本项目仅供学习交流使用。

About

基于 Java Web + MySQL 的全栈电商平台,模拟小米商城核心购物流程

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages