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 删除板块 删除不需要的板块

四、项目亮点

  1. 帖子审核机制:普通用户发布的帖子需要管理员审核通过后才能显示在首页,有效防止垃圾信息。

  2. 用户活跃度排名:系统根据用户的发帖数和回帖数实时计算活跃度得分,激励用户参与讨论。

  3. 附件上传下载:支持用户在发帖时上传附件,其他用户可以下载,方便资源共享。

  4. 权限控制:区分普通用户和管理员权限,管理员拥有审核、禁用等管理功能。

  5. 点赞互动:用户可以对优质帖子点赞,增强社区互动性。


五、系统主要功能截图

5.1 论坛首页

01-论坛首页

5.2 用户登录/注册

02-用户登录

5.3 发布帖子

04-发布新贴

5.4 帖子详情与回复

06-帖子详情

5.5 管理员后台 - 帖子审核

11-管理后台首页

5.6 用户管理

13-用户管理

5.7 活跃度排名

10-活跃度排名


六、团队成员负责模块

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

七、Git 提交记录截图

7.1 项目 Git 提交总览

image

7.2 各成员提交记录

(放每位成员的提交记录截图)

组长 - 孙昱晓 的提交记录:
(放截图)

组员 - 张嘉怡 的提交记录:
(放截图)

组员 - 魏雨馨 的提交记录:
image


八、静态代码扫描与规范整改

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 典型问题整改示例

屏幕截图 2026-06-22 124848
屏幕截图 2026-06-22 212820

示例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日

posted @ 2026-06-27 16:17  噜噜噜KKK  阅读(0)  评论(0)    收藏  举报