Java课程设计-教学论坛系统-团队博客
教学论坛系统 - 团队项目博客
一、项目简介
教学论坛系统是一个基于 Java Web 的交流平台,类似于百度贴吧。系统支持普通用户注册登录、发布帖子、回复帖子、点赞、搜索、上传下载附件,以及查看活跃度排名。管理员可以对帖子进行审核管理、用户管理和板块管理。
项目 Git 地址:https://gitee.com/java-forum-1127/
二、项目采用技术
| 技术分类 | 具体技术 |
|---|---|
| 开发语言 | Java (JDK 21) |
| 前端技术 | JSP、HTML、CSS、JavaScript、Ajax |
| 后端技术 | Servlet |
| 数据库 | MySQL 8.0 |
| 服务器 | Apache Tomcat 9 |
| 开发工具 | VS Code |
| 版本管理 | Git |
| 代码规范扫描 | 阿里巴巴 P3C-PMD 规则集 + PMD 插件 |
| 数据库连接 | JDBC + 连接池 |
三、功能需求分析
3.1 普通用户功能
| 序号 | 功能模块 | 功能描述 |
|---|---|---|
| 1 | 用户注册 | 用户填写用户名、密码进行注册 |
| 2 | 用户登录 | 用户输入账号密码登录系统 |
| 3 | 用户退出 | 用户退出登录状态 |
| 4 | 查看论坛首页 | 展示所有已审核通过的帖子 |
| 5 | 发布新帖 | 用户发布新帖子,默认进入待审核状态 |
| 6 | 查看帖子详情 | 点击帖子查看详细内容和回复 |
| 7 | 回复帖子 | 对已发布的帖子进行回复 |
| 8 | 点赞帖子 | 用户对感兴趣的帖子点赞 |
| 9 | 查看我的帖子 | 查看当前用户发布的所有帖子 |
| 10 | 查看我的回帖 | 查看当前用户发布的所有回复 |
| 11 | 搜索帖子 | 按标题关键词搜索帖子 |
| 12 | 活跃度排名 | 查看用户发帖/回帖活跃度排行榜 |
| 13 | 上传附件 | 发帖时上传附件 |
| 14 | 下载资源 | 下载帖子中的附件资源 |
3.2 管理员功能
| 序号 | 功能模块 | 功能描述 |
|---|---|---|
| 1 | 管理员登录 | 使用管理员账号登录后台 |
| 2 | 进入管理后台 | 跳转至管理后台页面 |
| 3 | 审核待审核帖子 | 查看所有待审核的帖子 |
| 4 | 通过帖子 | 审核通过,帖子显示在首页 |
| 5 | 拒绝帖子 | 审核拒绝,帖子不显示 |
| 6 | 删除帖子 | 直接删除违规帖子 |
| 7 | 管理用户 | 查看所有注册用户 |
| 8 | 禁用用户 | 禁止违规用户发言 |
| 9 | 恢复用户 | 解除用户禁用状态 |
| 10 | 管理板块 | 查看所有板块 |
| 11 | 添加板块 | 创建新的讨论板块 |
| 12 | 删除板块 | 删除不需要的板块 |
四、项目亮点
-
帖子审核机制:普通用户发布的帖子需要管理员审核通过后才能显示在首页,有效防止垃圾信息。
-
用户活跃度排名:系统根据用户的发帖数和回帖数实时计算活跃度得分,激励用户参与讨论。
-
附件上传下载:支持用户在发帖时上传附件,其他用户可以下载,方便资源共享。
-
权限控制:区分普通用户和管理员权限,管理员拥有审核、禁用等管理功能。
-
点赞互动:用户可以对优质帖子点赞,增强社区互动性。
五、系统主要功能截图
5.1 论坛首页
5.2 用户登录/注册

5.3 发布帖子

5.4 帖子详情与回复

5.5 管理员后台 - 帖子审核

5.6 用户管理

5.7 活跃度排名

六、团队成员负责模块
| 姓名 | 班级 | 角色 | 负责模块 | 主要任务 |
|---|---|---|---|---|
| 孙昱晓 | 计科拔尖班25-1 | 组长 | 用户管理模块 + 项目整合 | 用户登录/注册/权限拦截、数据库设计、项目部署 |
| 张嘉怡 | 计科拔尖班25-1 | 组员 | 帖子管理模块 | 帖子发布/审核/列表展示/搜索/帖子详情 |
| 魏雨馨 | 计科拔尖班25-1 | 组员 | 互动与统计模块 | 回复/点赞/活跃度排名/附件上传下载 |
七、Git 提交记录截图
7.1 项目 Git 提交总览

7.2 各成员提交记录
(放每位成员的提交记录截图)
组长 - 孙昱晓 的提交记录:
(放截图)
组员 - 张嘉怡 的提交记录:
(放截图)
组员 - 魏雨馨 的提交记录:

八、静态代码扫描与规范整改
8.1 扫描工具
本项目使用 VS Code 作为开发环境,通过 阿里巴巴官方 P3C-PMD 规则集 结合 PMD 插件 进行静态代码扫描。P3C 是《阿里巴巴 Java 开发手册》的落地实现,涵盖命名风格、常量定义、OOP 规约、集合处理、并发处理、异常处理等代码规范。
8.2 扫描结果统计
| 问题等级 | 问题类型 | 数量 | 整改状态 |
|---|---|---|---|
| Blocker(阻断) | 类缺少 Javadoc 注释 | 3 | ✅ 已修复 |
| Critical(严重) | 魔法值未定义为常量 | 8 | ✅ 已修复 |
| Critical(严重) | 异常被吞没(未抛出或记录) | 2 | ✅ 已修复 |
| Major(一般) | 变量名未遵循驼峰命名 | 5 | ✅ 已修复 |
| Major(一般) | 未使用泛型 | 4 | ✅ 已修复 |
| Major(一般) | 方法缺少注释 | 6 | ✅ 已修复 |
8.3 典型问题整改示例


示例1:魔法值问题(Critical)
整改前:
if (status == 1) {
// 通过审核
}
整改后:
java
private static final int STATUS_APPROVED = 1;
if (status == STATUS_APPROVED) {
// 通过审核
}
示例2:类缺少注释(Blocker)
整改前:
java
public class JDBCUtil {
// ...
}
整改后:
java
/**
- 数据库连接工具类
- 负责获取 MySQL 数据库连接和释放资源
- @author XXX
*/
public class JDBCUtil {
// ...
}
示例3:异常被吞没(Critical)
整改前:
java
try {
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
整改后:
java
try {
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
logger.error("数据库连接失败", e);
throw new RuntimeException("数据库连接失败", e);
}
8.4 整改总结
本次共扫描出多处代码规范问题,已全部修复并重新验证。通过本次静态代码扫描,团队深入理解了阿里巴巴 Java 开发规范,代码可读性和可维护性显著提升。
九、课程设计感想
孙昱晓(组长)
在本次课程设计中,我主要负责用户管理模块和项目整合。最大的挑战是如何实现不同页面之间的权限拦截,确保未登录用户无法访问发帖、后台等页面。通过学习和使用 Filter 过滤器,最终解决了这个问题。另外,在项目部署到 Tomcat 的过程中也遇到了路径问题,通过查阅资料解决了。这次项目让我对 Java Web 的整体流程有了更深入的理解。
张嘉怡(组员)
我负责帖子管理模块,最难的部分是帖子审核功能的实现:普通用户发帖后状态为待审核,管理员审核通过后才能有首页显示。需要在 SQL 查询中增加 status 条件判断,并在页面中根据状态显示不同的操作按钮。通过这次实践,我更加熟练了 JSP + Servlet + MySQL 的整合开发。
魏雨馨(组员)
我负责回复、点赞、活跃度排名和附件上传下载功能。点赞功能需要考虑防止用户重复点赞,我通过在 like_record 表中增加唯一约束来解决。活跃度排名需要跨表统计(post 和 reply),使用了 UNION ALL 和 GROUP BY 进行数据聚合。附件上传使用了 Servlet 的文件上传功能,下载时处理了中文文件名乱码问题。
十、使用技术说明
| 技术 | 是否使用 | 备注 |
|---|---|---|
| 数据库 | ✅ | MySQL 8.0 |
| GUI/WEB | ✅ | JSP + Servlet |
| DAO或MVC | ✅ | DAO 模式访问数据库 |
| 使用Git进行代码管理 | ✅ | Gitee 仓库 |
| 文件上传下载 | ✅ | Servlet 实现 |
| 静态代码扫描 | ✅ | 阿里巴巴 P3C-PMD 规则集 |
| 数据库连接池 | ✅ | Druid |
| JavaScript/Ajax | ✅ | 异步交互 |
| JSTL/EL | ✅ | JSP 表达式和标签 |
| 多线程 | ❌ | 未使用 |
| 网络Socket | ❌ | 未使用 |
附:AI使用声明
本项目中部分技术难点(如 Filter 权限拦截配置、UNION ALL 多表查询优化、文件上传编码处理等)参考了 AI 辅助工具提供的解决方案,所有代码均已手动调试、理解并整合到项目中。
博客撰写日期:2026年6月27日

浙公网安备 33010602011771号