乐于分享
好东西不私藏

源码专题-java0141-基于SSM校园二手物品交易系统

源码专题-java0141-基于SSM校园二手物品交易系统

每天更新文章,每天进步一点点

精品专栏

基于springboot旅游助手小程序系统设计与实现

基于ssm酒水售卖系统设计与实现

基于springboot协调过滤算法的中式菜系推荐系统的设计与实现

基于springboot企业考勤管理系统设计与实现

基于springboot休闲食品在线销售系统设计与实现

# 校园二手物品交易系统 — 项目文档

## 1. 项目概述

**校园二手物品交易系统**(secondhand)是一个基于传统 SSM 架构的 Web 应用,面向校园场景提供二手商品的发布、浏览、交易和订单管理功能。系统采用 B/S 架构,后端提供 RESTful JSON API,前端使用 JSP + jQuery + Bootstrap 构建管理界面。

## 2. 技术栈

### 2.1 后端技术

| 类别 | 技术 | 版本 | 说明 |
|------|------|------|------|
| 编程语言 | Java | 17 | JDK 17 |
| 构建工具 | Maven | — | WAR 包部署 |
| IoC / AOP | Spring Framework | 5.3.31 | 依赖注入、事务管理 |
| Web 框架 | Spring MVC | 5.3.31 | REST API + 页面路由 |
| ORM 框架 | MyBatis | 3.5.13 | SQL 映射,XML 配置 |
| MyBatis 整合 | mybatis-spring | 2.1.1 | Spring 集成 MyBatis |
| 数据库 | MySQL | 8.2.0 | 关系型数据存储 |
| 连接池 | Alibaba Druid | 1.2.20 | 数据库连接池管理 |
| 分页插件 | PageHelper | 5.3.3 | MyBatis 物理分页 |
| JSON 序列化 | Jackson | 2.15.3 | REST 接口 JSON 转换 |
| 工具库 | Lombok | 1.18.30 | 简化实体类代码 |
| 日志 | SLF4J + Logback | 1.7.36 / 1.2.12 | 日志输出 |

### 2.2 前端技术

| 类别 | 技术 | 版本 | 说明 |
|------|------|------|------|
| 视图层 | JSP + JSTL | 2.3.3 / 1.2 | 服务端渲染页面 |
| JavaScript | jQuery | 3.7.1 | DOM 操作与 AJAX |
| UI 框架 | Bootstrap | 5.3 | 响应式 UI 组件 |
| 图标 | Bootstrap Icons | — | 界面图标 |

### 2.3 部署与运行

| 类别 | 技术 | 说明 |
|------|------|------|
| Web 容器 | Tomcat 9+ | 外部部署 WAR 包 |
| Servlet 规范 | Servlet 4.0 | web.xml 配置 |
| 配置方式 | XML + Properties | 非 Spring Boot 项目 |

### 2.4 系统架构

```
┌─────────────────────────────────────────────────────┐
│ 浏览器 (JSP + jQuery) │
└──────────────────────┬──────────────────────────────┘
│ HTTP / AJAX
┌──────────────────────▼──────────────────────────────┐
│ Spring MVC (Controller 层) │
│ LoginInterceptor → 登录认证拦截 │
├─────────────────────────────────────────────────────┤
│ Service 层 (业务逻辑) │
├─────────────────────────────────────────────────────┤
│ MyBatis Mapper 层 (数据访问) │
│ PageHelper 分页 │
├─────────────────────────────────────────────────────┤
│ Druid 连接池 → MySQL 数据库 │
└─────────────────────────────────────────────────────┘

## 3. 数据库设计

| 表名 | 说明 | 核心字段 |
|------|------|----------|
| `user` | 用户表 | username, password, role, real_name, phone |
| `category` | 商品分类表 | category_name, remark |
| `goods` | 二手商品表 | goods_name, category_id, price, seller_id, status |
| `order_info` | 订单表 | order_no, goods_id, buyer_id, order_price, order_status |
**商品状态**:`在售` / `已售`
**订单状态**:`待付款` / `已支付` / `已完成` / `已取消`

## 4. 角色与核心功能

系统定义两种用户角色,存储在 `user.role` 字段中:

### 4.1 管理员(admin)

管理员负责系统的整体运营和数据维护,核心功能包括:
| 功能模块 | 核心操作 | 说明 |
|----------|----------|------|
| 系统首页 | 查看数据统计 | 展示用户、分类、商品、订单总数 |
| 用户管理 | 增删改查、角色分配 | 管理所有用户账号,可设置 admin/user 角色 |
| 分类管理 | 增删改查 | 维护商品分类(如书籍、电子产品、生活用品等) |
| 商品管理 | 增删改查、状态管理 | 管理全部商品,修改商品状态(在售/已售) |
| 订单管理 | 增删改查、状态流转 | 管理全部订单,更新订单状态 |

### 4.2 普通用户(user)

普通用户是系统的主要使用者,核心功能包括:
| 功能模块 | 核心操作 | 说明 |
|----------|----------|------|
| 账号注册/登录 | 注册、登录、登出 | 注册时默认角色为 user |
| 浏览商品 | 查看商品列表和详情 | 无需登录即可浏览(公开接口) |
| 浏览分类 | 查看商品分类 | 无需登录即可浏览(公开接口) |
| 发布商品 | 发布二手物品 | 登录后发布,自动关联当前用户为卖家 |
| 管理商品 | 编辑/删除自己发布的商品 | 修改价格、描述、状态等 |
| 下单购买 | 创建订单 | 登录后下单,自动关联当前用户为买家 |
| 查看订单 | 查看自己的订单 | 跟踪订单状态 |

### 4.3 访客(未登录)

| 功能 | 说明 |
|------|------|
| 用户注册 | 访问注册页,创建账号 |
| 用户登录 | 访问登录页,登录系统 |
| 浏览商品 | 查看商品列表和详情 |
| 浏览分类 | 查看分类列表和详情 |

## 5. 接口概览

### 5.1 公开接口(无需登录)

| 方法 | 路径 | 说明 |
|------|------|------|
| POST | `/user/login` | 用户登录 |
| POST | `/user/register` | 用户注册 |
| GET | `/goods/list` | 商品列表(分页) |
| GET | `/goods/{id}` | 商品详情 |
| GET | `/category/all` | 全部分类 |
| GET | `/category/list` | 分类列表(分页) |
| GET | `/category/{id}` | 分类详情 |

### 5.2 受保护接口(需登录)

| 模块 | 路径前缀 | 操作 |
|------|----------|------|
| 用户 | `/user` | info, list, CRUD |
| 分类 | `/category` | CRUD |
| 商品 | `/goods` | CRUD(发布时自动设置卖家) |
| 订单 | `/order` | CRUD(下单时自动设置买家) |
| 页面 | `/page` | index, user, category, goods, order |

### 5.3 统一响应格式

```json
{
"code": 200,
"msg": "操作成功",
"data": { ... }
}

## 6. 项目结构

```
secondhand/
├── pom.xml

Maven 构建配置

├── db/db.sql

数据库建表脚本

├── docs/

项目文档

│ ├── 项目文档.md
│ └── 项目文档.html
└── src/main/
├── java/com/example/secondhand/
│ ├── controller/

控制器(REST + 页面路由)

│ ├── service/

业务接口

│ │ └── impl/

业务实现

│ ├── mapper/

MyBatis Mapper 接口

│ ├── entity/

实体类

│ ├── common/

统一响应封装

│ ├── exception/

异常处理

│ └── interceptor/

登录拦截器

├── resources/
│ ├── applicationContext.xml

Spring 根容器配置

│ ├── springmvc.xml

Spring MVC 配置

│ ├── mybatis-config.xml

MyBatis 全局配置

│ ├── logback.xml

日志配置

│ ├── jdbc.properties

数据库连接配置

│ └── mapper/

MyBatis SQL 映射文件

└── webapp/
└── WEB-INF/
├── web.xml

Web 应用部署描述

└── jsp/

JSP 视图页面

```
---

## 7. 认证机制

  • 认证方式:基于 HttpSession 的会话认证
  • Session 键名loginUser(存储 User 实体,不含密码)
  • 拦截器LoginInterceptor 在请求到达 Controller 前校验登录状态
  • 未登录处理
  • AJAX 请求 → 返回 JSON { "code": 401, "msg": "未登录或登录已过期" }
  • 页面请求 → 重定向到 /page/login

## 8. 部署说明

  1. 创建 MySQL 数据库,执行 `db/db.sql` 建表脚本
  2. 修改 `src/main/resources/jdbc.properties` 中的数据库连接信息
  3. 执行 `mvn clean package` 构建 WAR 包
  4. 将 WAR 包部署到 Tomcat 的 `webapps` 目录
  5. 启动 Tomcat,访问 `http://localhost:8080/secondHand/page/login`。

软件定制及其他业务

请加微信号:13128600812

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)