JSP+Servlet 电商系统实战项目

基于 JSP + Servlet + JDBC + MySQL 的 MVC 架构商城系统,包含前台用户端和后台管理端。

源码下载

https://tool.nineya.com/s/1jdlklf1s


技术栈

技术 说明
JSP 视图层
Servlet 控制层
JDBC 数据访问层
MySQL 8.0 数据库
Tomcat 9.x Web 服务器

项目结构

01_MUI/
├── src/com/sxt/
│   ├── controller/          # Servlet 控制器
│   ├── dao/                 # 数据访问层接口
│   ├── dao/impl/            # DAO 实现类
│   ├── service/             # 业务逻辑层接口
│   ├── service/impl/        # Service 实现类
│   ├── pojo/                # 实体类
│   └── util/
│       └── JDBCUtil.java    # 数据库工具类
├── web/
│   ├── admin/               # 后台管理页面
│   ├── css/                 # 样式文件
│   ├── img/                 # 商品图片
│   ├── js/                  # JavaScript
│   ├── login.jsp            # 登录页
│   ├── register.jsp         # 注册页
│   ├── index.jsp            # 首页
│   ├── clothesList.jsp      # 商品列表
│   ├── clothesDetail.jsp    # 商品详情
│   ├── cart.jsp             # 购物车
│   ├── checkout.jsp         # 结算页
│   ├── orders.jsp           # 订单列表
│   ├── orderDetail.jsp      # 订单详情
│   └── profile.jsp          # 个人中心
└── wardrobesystem.sql       # 数据库脚本

功能模块

前台用户端

模块 功能
用户模块 注册、登录、退出
商品浏览 商品列表、详情、分类筛选
购物车 添加、修改数量、删除商品
订单管理 提交订单、查看订单详情
个人中心 收货地址、个人信息管理

后台管理端

模块 功能
商品管理 列表、增删改、图片上传
订单管理 订单列表、发货处理
用户管理 用户列表、增删改

数据库设计

E-R 关系

用户(User) 1 ──── N 购物车(Cart) N ──── 1 商品(Clothes)
    │                                        │
    │ 1                                      │ N
    N                                        │
订单(Orders) 1 ──── N 订单明细(OrderItem) ───┘
    │
    N
收货地址(Address)

数据表

用户表 (user)

字段 类型 说明
id INT 主键自增
username VARCHAR(50) 用户名(唯一)
password VARCHAR(50) 密码
role VARCHAR(20) 角色:user/admin
phone VARCHAR(20) 手机号
create_time DATETIME 创建时间

商品表 (clothes)

字段 类型 说明
id INT 主键自增
name VARCHAR(100) 商品名称
category VARCHAR(50) 分类
price DECIMAL(10,2) 价格
stock INT 库存
image VARCHAR(200) 图片路径
description TEXT 商品描述
create_time DATETIME 创建时间

购物车表 (cart)

字段 类型 说明
id INT 主键自增
user_id INT 用户ID(外键)
clothes_id INT 商品ID(外键)
quantity INT 数量
selected TINYINT 是否选中
create_time DATETIME 创建时间

订单表 (orders)

字段 类型 说明
id INT 主键自增
order_no VARCHAR(32) 订单号(唯一)
user_id INT 用户ID(外键)
total_amount DECIMAL(10,2) 订单总金额
status TINYINT 0待付款/1已付款/2已发货/3已完成/4已取消
receiver_name VARCHAR(50) 收货人
receiver_phone VARCHAR(20) 收货电话
receiver_address VARCHAR(300) 收货地址
create_time DATETIME 下单时间

订单明细表 (order_item)

字段 类型 说明
id INT 主键自增
order_id INT 订单ID(外键)
clothes_id INT 商品ID(外键)
clothes_name VARCHAR(100) 商品名称
clothes_price DECIMAL(10,2) 商品单价
quantity INT 购买数量
subtotal DECIMAL(10,2) 小计金额

运行环境

环境 版本
JDK 1.8+
Tomcat 9.x
MySQL 8.0+
IDE IDEA / Eclipse

部署步骤

1. 导入数据库

CREATE DATABASE wardrobesystem DEFAULT CHARACTER SET utf8mb4;
USE wardrobesystem;
SOURCE /path/to/wardrobesystem.sql;

2. 修改数据库配置

编辑 src/com/sxt/util/JDBCUtil.java

private static final String URL = "jdbc:mysql://localhost:3306/wardrobesystem?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8";
private static final String USER = "root";        // 你的用户名
private static final String PASSWORD = "123456";  // 你的密码

3. 配置并启动 Tomcat

在 IDE 中配置 Tomcat Server,部署项目后启动。

4. 访问系统

  • 前台首页:http://localhost:8080/01_MUI/login.jsp
  • 后台管理:http://localhost:8080/01_MUI/admin/index.jsp

测试账号

角色 用户名 密码
管理员 admin admin123
普通用户 user1 123456

核心代码

LoginServlet.java

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    private UserService userService = new UserServiceImpl();

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
            throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=UTF-8");

        String username = req.getParameter("username");
        String password = req.getParameter("password");
        User user = userService.login(username, password);

        if (user != null) {
            req.getSession().setAttribute("user", user);
            if ("admin".equals(user.getRole())) {
                resp.sendRedirect("admin/index.jsp");
            } else {
                resp.sendRedirect("ClothesServlet?action=list");
            }
        } else {
            req.setAttribute("error", "用户名或密码错误");
            req.getRequestDispatcher("login.jsp").forward(req, resp);
        }
    }
}

JDBCUtil.java

public class JDBCUtil {
    private static final String URL = "jdbc:mysql://localhost:3306/wardrobesystem?useSSL=false&serverTimezone=Asia/Shanghai";
    private static final String USER = "root";
    private static final String PASSWORD = "123456";

    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USER, PASSWORD);
    }

    public static void close(Connection conn, Statement stmt, ResultSet rs) {
        try {
            if (rs != null) rs.close();
            if (stmt != null) stmt.close();
            if (conn != null) conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

系统流程

用户购物流程

用户登录 → 浏览商品 → 商品详情 → 加入购物车 → 提交订单 → 订单完成

MVC 架构

浏览器(View) → Servlet(Controller) → Service(Model) → DAO → MySQL

常见问题

问题 解决方案
数据库连接失败 检查 MySQL 服务、用户名密码、数据库名、驱动包
中文乱码 JSP 设置 charset=UTF-8,Servlet 设置编码,URL 添加 characterEncoding
404 错误 检查 Tomcat 部署路径、web.xml 配置、JSP 文件路径

项目特点

  • MVC 三层架构设计
  • 用户认证与权限控制
  • 商品管理 CRUD 操作
  • 购物车与订单流程
  • 文件上传功能
  • 前后台分离设计

适合 Java Web 入门学习、课程设计、毕业设计参考。


源码下载https://tool.nineya.com/s/1jdlklf1s

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐