本系统采用经典的 MVC (Model-View-Controller) 设计模式,旨在实现代码的解耦和可维护性。
-
Model (模型): 负责处理应用程序的数据和业务逻辑。
entity包: 定义了核心的JavaBean对象(如User和Item),用于在程序各层之间传输数据。dao包: 数据访问对象(Data Access Object),负责与数据库进行直接交互(增删改查等原子操作)。service包: 业务逻辑层,组合DAO层的原子操作,封装具体的业务流程(例如,一个“发布商品”的业务可能需要调用ItemDao的“新增”和UserDao的“查询”)。
-
View (视图): 负责展示数据,提供用户交互界面。
webapp目录: 存放所有的JSP页面和静态资源。*.jsp: 使用JSP和JSTL标签库动态渲染从Servlet获取的数据,构成用户看到的页面。style.css: 全局CSS文件,统一所有页面的样式。upload目录: 存放用户上传的商品图片。
-
Controller (控制器): 作为模型和视图之间的协调者。
controller包: 包含所有的Servlet。每个Servlet负责接收特定的HTTP请求,调用相应的Service处理业务逻辑,然后将处理结果(数据)转发给合适的JSP页面进行渲染。
web_zy6
├── pom.xml # Maven项目配置,定义依赖和构建规则
├── sql/
│ └── init.sql # 数据库初始化脚本
└── src/
└── main/
├── java/
│ └── com/example/web_zy6/
│ ├── controller/ # 控制器层 (Servlets)
│ │ ├── ItemListServlet.java # 列表展示与搜索
│ │ ├── AddItemServlet.java # 添加商品
│ │ ├── EditItemServlet.java # 编辑商品
│ │ └── ...
│ ├── dao/ # 数据访问层
│ │ ├── ItemDao.java # 商品DAO接口
│ │ ├── ItemDaoImpl.java # 商品DAO实现
│ │ └── ...
│ ├── entity/ # 模型层 (JavaBeans)
│ │ ├── Item.java
│ │ └── User.java
│ ├── service/ # 业务逻辑层
│ │ ├── ItemService.java
│ │ └── UserService.java
│ └── utils/ # 工具类
│ ├── DBUtil.java # 数据库连接工具
│ └── MD5Util.java # 密码加密工具
└── webapp/ # 视图层
├── add.jsp # 添加页面
├── edit.jsp # 编辑页面
├── index.jsp # 首页
├── login.jsp # 登录页面
├── register.jsp # 注册页面
├── style.css # 全局样式表
└── WEB-INF/
└── web.xml # Servlet映射配置
系统使用MySQL数据库,包含两张核心表:users 和 items。
存储用户信息。
| 字段名 | 类型 | 约束 | 描述 |
|---|---|---|---|
userId |
INT |
主键, 自增 | 用户唯一标识符 |
username |
VARCHAR(255) |
非空, 唯一 | 用户名 |
password |
VARCHAR(255) |
非空 | 加密后的密码 |
存储二手商品信息。
| 字段名 | 类型 | 约束 | 描述 |
|---|---|---|---|
itemId |
INT |
主键, 自增 | 商品唯一标识符 |
name |
VARCHAR(255) |
非空 | 商品名称 |
description |
TEXT |
非空 | 商品描述 |
price |
DECIMAL(10,2) |
非空 | 价格 |
imageUrl |
VARCHAR(255) |
商品图片存储路径 | |
userId |
INT |
外键 | 发布者ID (关联users表) |
关系: items 表中的 userId 字段是 users 表 userId 字段的外键,表示一个商品由一个用户发布。
- 数据库: 确保已安装MySQL数据库。
- IDE: 使用如IntelliJ IDEA等支持Maven的Java IDE。
- 服务器: 配置Tomcat服务器。
- 创建数据库: 在MySQL中创建一个数据库(例如
web_zy6)。 - 执行SQL脚本: 使用
sql/init.sql文件在该数据库中创建users和items表。 - 修改数据库连接: 打开
src/main/java/com/example/web_zy6/utils/DBUtil.java文件,根据你的MySQL配置修改URL,USER, 和PASSWORD三个静态字段。 - 构建项目: 使用Maven进行编译和打包(通常IDE会自动完成)。
- 部署运行: 将项目部署到Tomcat服务器上并启动。
- 访问: 在浏览器中访问
http://localhost:8080/你的项目部署名/(例如http://localhost:8080/web_zy6_war_exploded/)。
- 注册: 点击首页的 "Register" 链接,输入用户名和密码进行注册。
- 登录: 点击首页的 "Login" 链接,使用已注册的账号登录。
- 浏览商品: 首页默认显示所有商品。
- 搜索商品: 在顶部的搜索框中输入关键词,点击“搜索”按钮进行模糊查询。
- 发布商品: 登录后,点击 "添加二手商品" 按钮,填写信息并上传图片进行发布。
- 修改/删除商品: 对于自己发布的商品,在商品列表的操作列会出现 "编辑" 和 "删除" 按钮,可进行相应操作。
由于密码是经过MD5加密存储的,无法直接在数据库中创建明文密码的用户。
请通过应用的注册功能自行创建测试账号。
例如,您可以:
- 启动项目。
- 访问注册页面 (
register.jsp)。 - 注册一个用户,例如:
- 用户名:
testuser - 密码:
123456
- 用户名:
- 使用该账号登录后,即可进行发布、修改、删除商品等所有功能的测试。
- 可以再注册一个账号(如
testuser2/123456)来测试“非本人发布的商品无法看到修改/删除按钮”的功能。