【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 -u root -p
CREATE DATABASE wardrobesystem DEFAULT CHARACTER SET utf8mb4;
USE wardrobesystem;
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
- 在 IDEA 中配置 Tomcat Server
- 部署项目到 Tomcat
- 启动 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;
}
}
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
💡 如果觉得有帮助,欢迎点赞收藏!有问题可以在评论区留言交流~
所有评论(0)