【Java Web】JSP+Servlet+MySQL 网上衣橱商城系统(完整源码+数据库)

🎯 项目简介:基于 JSP + Servlet + JDBC + MySQL 实现的网上衣橱商城系统,采用 MVC 架构,包含前台用户端和后台管理端,功能完整,适合 Java Web 课程设计、毕业设计参考学习。


📥 源码下载

下载地址https://tool.nineya.com/s/1jdlklf1s


🛠️ 技术栈

技术 说明
JSP 视图层,页面展示
Servlet 控制层,处理请求
JDBC 数据访问层
MySQL 8.0 数据库
Tomcat 9.x Web 服务器
HTML/CSS/JS 前端页面

📁 项目结构

01_MUI/
├── src/com/sxt/
│   ├── controller/          # Servlet 控制器
│   │   ├── LoginServlet.java
│   │   ├── RegisterServlet.java
│   │   ├── ClothesServlet.java
│   │   ├── CartServlet.java
│   │   ├── OrderServlet.java
│   │   ├── AddressServlet.java
│   │   └── AdminServlet.java
│   ├── dao/                 # 数据访问层接口
│   │   ├── UserDao.java
│   │   ├── ClothesDao.java
│   │   ├── CartDao.java
│   │   ├── OrderDao.java
│   │   └── AddressDao.java
│   ├── dao/impl/            # DAO 实现类
│   ├── service/             # 业务逻辑层接口
│   ├── service/impl/        # Service 实现类
│   ├── pojo/                # 实体类
│   │   ├── User.java
│   │   ├── Clothes.java
│   │   ├── Cart.java
│   │   ├── Order.java
│   │   ├── OrderItem.java
│   │   └── Address.java
│   └── util/
│       └── JDBCUtil.java    # 数据库工具类
├── web/
│   ├── admin/               # 后台管理页面
│   │   ├── index.jsp
│   │   ├── clothes.jsp
│   │   ├── clothesEdit.jsp
│   │   ├── orders.jsp
│   │   ├── users.jsp
│   │   └── userEdit.jsp
│   ├── 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       # 数据库脚本

🎨 功能模块

前台用户端

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

后台管理端

模块 功能 页面
商品管理 商品列表、添加、编辑、删除、图片上传 clothes.jsp、clothesEdit.jsp
订单管理 订单列表、发货处理 orders.jsp
用户管理 用户列表、添加、编辑、删除 users.jsp、userEdit.jsp

🗄️ 数据库设计

E-R 图关系

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

数据表结构

1. 用户表 (user)
字段 类型 说明
id INT 主键,自增
username VARCHAR(50) 用户名,唯一
password VARCHAR(50) 密码
role VARCHAR(20) 角色:user/admin
phone VARCHAR(20) 手机号
create_time DATETIME 创建时间
2. 商品表 (clothes)
字段 类型 说明
id INT 主键,自增
name VARCHAR(100) 商品名称
category VARCHAR(50) 分类
price DECIMAL(10,2) 价格
stock INT 库存
image VARCHAR(200) 图片路径
description TEXT 商品描述
create_time DATETIME 创建时间
3. 购物车表 (cart)
字段 类型 说明
id INT 主键,自增
user_id INT 用户ID,外键
clothes_id INT 商品ID,外键
quantity INT 数量
selected TINYINT 是否选中
create_time DATETIME 创建时间
4. 订单表 (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 下单时间
5. 订单明细表 (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 IntelliJ IDEA / Eclipse

📦 部署步骤

1. 导入数据库

# 登录 MySQL
mysql -u root -p

# 创建数据库
CREATE DATABASE wardrobesystem DEFAULT CHARACTER SET utf8mb4;

# 使用数据库
USE wardrobesystem;

# 导入 SQL 文件
SOURCE /path/to/wardrobesystem.sql;

2. 修改数据库配置

打开 src/com/sxt/util/JDBCUtil.java,修改数据库连接信息:

public class JDBCUtil {
    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";  // 修改为你的密码

    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);
    }
}

3. 配置 Tomcat

  1. 在 IDEA 中配置 Tomcat Server
  2. 部署项目到 Tomcat
  3. 启动 Tomcat

4. 访问系统

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

🔑 测试账号

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

💻 核心代码展示

1. 登录功能 (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);
        }
    }
}

2. 用户实体类 (User.java)

public class User {
    private Integer id;
    private String username;
    private String password;
    private String role;
    private String phone;
    private Date createTime;

    // 构造方法
    public User() {}

    public User(String username, String password, String role, String phone) {
        this.username = username;
        this.password = password;
        this.role = role;
        this.phone = phone;
    }

    // Getter 和 Setter 方法省略...
}

3. 数据库工具类 (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();
        }
    }
}

4. 登录页面 (login.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>用户登录 - 网上衣橱</title>
</head>
<body>
    <div class="login-box">
        <h2>用户登录</h2>
        
        <% if(request.getAttribute("error") != null) { %>
            <div class="error-msg"><%= request.getAttribute("error") %></div>
        <% } %>
        
        <form action="LoginServlet" method="post">
            <div class="form-group">
                <label>用户名</label>
                <input type="text" name="username" placeholder="请输入用户名" required>
            </div>
            
            <div class="form-group">
                <label>密码</label>
                <input type="password" name="password" placeholder="请输入密码" required>
            </div>
            
            <button type="submit" class="btn-login">登录</button>
        </form>
        
        <div class="register-link">
            还没有账号?<a href="register.jsp">立即注册</a>
        </div>
    </div>
</body>
</html>

📊 系统流程图

用户购物流程

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   用户登录   │ ──▶ │  浏览商品    │ ──▶ │  商品详情    │
└─────────────┘     └─────────────┘     └─────────────┘
                                               │
                                               ▼
┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  订单完成    │ ◀── │  提交订单    │ ◀── │  购物车     │
└─────────────┘     └─────────────┘     └─────────────┘

MVC 架构流程

┌──────────┐    请求     ┌──────────────┐    调用    ┌──────────────┐
│  浏览器   │ ─────────▶ │   Servlet    │ ────────▶ │   Service    │
│  (View)  │            │ (Controller) │           │   (Model)    │
└──────────┘            └──────────────┘           └──────────────┘
     ▲                         │                         │
     │                         │                         ▼
     │        转发/重定向       │                  ┌──────────────┐
     └─────────────────────────┘                  │     DAO      │
                                                  └──────────────┘
                                                         │
                                                         ▼
                                                  ┌──────────────┐
                                                  │    MySQL     │
                                                  └──────────────┘

⚠️ 常见问题

1. 数据库连接失败

解决方案:
1. 检查 MySQL 服务是否启动
2. 检查用户名密码是否正确
3. 检查数据库名是否为 wardrobesystem
4. 检查 MySQL 驱动 jar 包是否导入

2. 中文乱码问题

解决方案:
1. JSP 页面添加:<%@ page contentType="text/html;charset=UTF-8" %>
2. Servlet 中设置:request.setCharacterEncoding("UTF-8");
3. 数据库连接 URL 添加:characterEncoding=utf8

3. 404 页面找不到

解决方案:
1. 检查 Tomcat 部署路径是否正确
2. 检查 web.xml 中 Servlet 映射配置
3. 检查 JSP 文件路径是否正确

📝 项目总结

本项目是一个完整的 Java Web 商城系统,涵盖了:

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

适合作为 Java Web 入门学习、课程设计、毕业设计的参考项目。


📥 源码下载

下载地址https://tool.nineya.com/s/1jdlklf1s


💡 如果觉得有帮助,欢迎点赞收藏!有问题可以在评论区留言交流~

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐