学生小组话题讨论管理系统
项目简介
这是一个基于JavaWeb技术栈开发的学生小组话题讨论管理系统,支持用户注册登录、信息发布、话题讨论、兴趣小组、资源分享、问答系统、通知消息和个人中心等核心功能。
技术栈
- 后端框架: Java Servlet + JSP
- 数据库: MySQL 8.0
- 数据访问: JDBC
- 前端技术: HTML + CSS + JavaScript
- 开发工具: Eclipse IDE
- Java版本: Java EE (javax)
- 构建工具: 手动管理JAR包(不使用Maven)
项目结构
huati/
├── src/
│ └── com/
│ └── huati/
│ ├── dao/ # 数据访问层
│ │ ├── UserDAO.java
│ │ ├── PostDAO.java
│ │ ├── CommentDAO.java
│ │ ├── LikeRecordDAO.java
│ │ ├── ShareDAO.java
│ │ ├── FavoriteDAO.java
│ │ ├── FollowDAO.java
│ │ ├── GroupDAO.java
│ │ ├── GroupMemberDAO.java
│ │ ├── FileDAO.java
│ │ ├── QuestionDAO.java
│ │ ├── AnswerDAO.java
│ │ └── NotificationDAO.java
│ ├── entity/ # 实体类
│ │ ├── User.java
│ │ ├── Post.java
│ │ ├── Comment.java
│ │ ├── Share.java
│ │ ├── Favorite.java
│ │ ├── Follow.java
│ │ ├── Group.java
│ │ ├── GroupMember.java
│ │ ├── FileResource.java
│ │ ├── Question.java
│ │ ├── Answer.java
│ │ └── Notification.java
│ ├── servlet/ # 控制器层
│ │ ├── LoginServlet.java
│ │ ├── RegisterServlet.java
│ │ ├── LogoutServlet.java
│ │ ├── IndexServlet.java
│ │ ├── PostServlet.java
│ │ ├── PostLikeServlet.java
│ │ ├── CommentServlet.java
│ │ ├── ShareServlet.java
│ │ ├── FavoriteServlet.java
│ │ ├── FollowServlet.java
│ │ ├── GroupServlet.java
│ │ ├── FileServlet.java
│ │ ├── QuestionServlet.java
│ │ ├── AnswerServlet.java
│ │ ├── NotificationServlet.java
│ │ └── ProfileServlet.java
│ └── util/ # 工具类
│ ├── DBUtil.java
│ └── MD5Util.java
├── WebContent/
│ ├── WEB-INF/
│ │ └── web.xml # Web配置文件
│ ├── common/ # 公共组件
│ │ ├── header.jsp
│ │ ├── menu.jsp
│ │ └── footer.jsp
│ ├── css/
│ │ └── style.css # 样式文件
│ ├── js/
│ │ └── main.js # JavaScript文件
│ ├── login.jsp # 登录页面
│ ├── register.jsp # 注册页面
│ ├── index.jsp # 首页
│ ├── post_list.jsp # 帖子列表
│ ├── post_add.jsp # 发布帖子
│ ├── post_edit.jsp # 编辑帖子
│ ├── post_detail.jsp # 帖子详情
│ ├── share_add.jsp # 转发帖子
│ ├── share_list.jsp # 转发列表
│ ├── favorite_list.jsp # 收藏列表
│ ├── follow_list.jsp # 关注/粉丝列表
│ ├── group_list.jsp # 小组列表
│ ├── group_add.jsp # 创建小组
│ ├── group_edit.jsp # 编辑小组
│ ├── file_list.jsp # 文件列表
│ ├── file_upload.jsp # 文件上传
│ ├── question_list.jsp # 问题列表
│ ├── question_add.jsp # 提问
│ ├── question_edit.jsp # 编辑问题
│ ├── profile.jsp # 个人中心
│ ├── profile_edit.jsp # 编辑资料
│ └── error.jsp # 错误页面
└── sql/
└── init.sql # 数据库初始化脚本
核心功能
1. 用户注册与登录
- 支持学号或邮箱注册
- 支持学号或邮箱登录
- 密码使用MD5加密存储
- 支持第三方账号登录(预留接口)
2. 信息发布
- 支持发布文本、图片、视频等多种形式的帖子
- 帖子支持标题、内容、图片路径、视频路径等字段
- 支持编辑和删除自己的帖子
- 管理员可以管理所有帖子
3. 话题讨论
- 支持对帖子进行评论
- 支持评论的点赞功能
- 支持帖子的点赞功能
- 支持转发帖子并添加附言
- 支持收藏帖子
4. 兴趣小组
- 用户可以创建兴趣小组
- 用户可以加入或退出小组
- 小组支持成员管理
- 小组可以关联帖子
5. 资源分享
- 支持文件上传功能
- 支持文件下载功能
- 文件支持描述信息
- 记录文件下载次数
6. 问答系统
- 用户可以提问
- 用户可以回答问题
- 支持设置最佳答案
- 支持问题标签分类
7. 通知与消息
- 系统自动生成通知(评论、点赞、回答等)
- 支持通知的已读/未读状态
- 支持通知列表查看
8. 个人中心
- 展示用户基本信息
- 展示发帖记录
- 展示收藏列表
- 展示关注列表和粉丝列表
- 支持编辑个人资料
数据库设计
系统包含以下主要数据表:
- user - 用户表
- post - 帖子表
- comment - 评论表
- like_record - 点赞记录表
- share - 转发表
- favorite - 收藏表
- follow - 关注表
- group - 小组表
- group_member - 小组成员表
- group_post - 小组帖子关联表
- file_resource - 文件资源表
- question - 问题表
- answer - 回答表
- notification - 通知表
详细数据库结构请参考 sql/init.sql 文件。
代码特点
1. 架构设计
- 三层架构: 采用经典的MVC三层架构(Servlet控制器层、DAO数据访问层、Entity实体层)
- 职责分离: 每个类职责明确,便于维护和扩展
- 代码复用: 公共组件(header、menu、footer)通过JSP include实现复用
2. 安全性
- 密码加密: 使用MD5算法对密码进行加密存储
- 权限控制: 用户只能查看和操作自己的数据,管理员可以管理所有数据
- SQL注入防护: 使用PreparedStatement防止SQL注入攻击
- 字符编码: 统一使用UTF-8编码,防止乱码问题
3. 用户体验
- 统一UI风格: 所有页面使用统一的CSS样式,保持界面一致性
- 响应式布局: 采用Flex布局,适配不同屏幕尺寸
- 操作反馈: 提供成功/错误提示信息
- 确认对话框: 删除等危险操作需要用户确认
4. 代码规范
- 命名规范: 遵循Java命名规范,类名、方法名、变量名清晰易懂
- 注释完整: 关键类和方法都有详细的JavaDoc注释
- 异常处理: 完善的异常处理机制,避免程序崩溃
- 资源管理: 正确关闭数据库连接等资源,防止资源泄漏
5. 功能完整性
- 增删改查: 所有模块都实现了完整的CRUD操作
- 前后端对应: 每个前端页面都有对应的后端Servlet处理
- GET/POST区分: 正确区分GET和POST请求,GET用于查询,POST用于提交数据
- 数据验证: 前后端都进行了必要的数据验证
部署说明
1. 环境要求
- JDK 1.8 或更高版本
- MySQL 8.0
- Tomcat 8.5 或更高版本
- Eclipse IDE(推荐)
2. 数据库配置
- 创建MySQL数据库
- 执行
sql/init.sql脚本初始化数据库 - 修改
src/com/huati/util/DBUtil.java中的数据库连接信息:private static final String URL = "jdbc:mysql://localhost:3306/huati?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai"; private static final String USERNAME = "root"; private static final String PASSWORD = "root";
3. 导入项目
- 在Eclipse中创建新的Dynamic Web Project
- 将项目文件复制到对应目录
- 添加必要的JAR包到
WebContent/WEB-INF/lib/目录:- mysql-connector-java-8.0.x.jar(MySQL驱动)
- servlet-api.jar(Servlet API)
- jsp-api.jar(JSP API)
4. 运行项目
- 配置Tomcat服务器
- 将项目部署到Tomcat
- 启动Tomcat服务器
- 访问
http://localhost:8080/huati/
5. 默认账号
- 管理员账号:
- 学号: admin001
- 密码: admin123
- 测试学生账号:
- 学号: 2021001
- 密码: 123456
开发过程
第一阶段:项目初始化
- 创建项目目录结构
- 设计数据库表结构
- 编写数据库初始化SQL脚本
- 创建数据库工具类(DBUtil)
第二阶段:核心功能开发
- 实现用户注册登录功能
- 实现帖子发布和管理功能
- 实现评论和点赞功能
- 实现转发和收藏功能
- 实现关注功能
第三阶段:扩展功能开发
- 实现兴趣小组功能
- 实现文件上传下载功能
- 实现问答系统功能
- 实现通知消息功能
- 实现个人中心功能
第四阶段:界面优化
- 设计统一的UI风格
- 创建公共组件(header、menu、footer)
- 优化页面布局和样式
- 添加JavaScript交互功能
第五阶段:测试和完善
- 测试所有功能模块
- 修复发现的bug
- 优化代码结构
- 完善文档说明
技术亮点
- 不使用Filter: 按照要求,所有字符编码处理都在Servlet中完成
- 传统Java EE: 使用javax包,不使用Spring等框架
- 手动管理依赖: 不使用Maven,手动管理JAR包
- 完整的权限控制: 用户和管理员权限分离,数据访问受控
- 统一的数据访问: 所有数据库操作都通过DAO层,便于维护
后续优化建议
- 文件上传优化: 可以添加文件类型验证、文件大小限制、图片压缩等功能
- 搜索功能: 可以添加帖子、问题、用户的搜索功能
- 分页功能: 对于大量数据,可以添加分页显示
- 实时通知: 可以使用WebSocket实现实时消息推送
- 第三方登录: 可以集成微信、QQ等第三方登录
- 图片处理: 可以添加图片上传、裁剪、压缩等功能
- 缓存机制: 可以添加Redis缓存,提高系统性能
- 日志系统: 可以添加日志记录功能,便于问题排查
注意事项
-
数据库连接信息需要根据实际情况修改
-
文件上传路径需要确保有写入权限
-
所有JSP页面都需要登录后才能访问
-
管理员账号拥有所有数据的查看和管理权限
-
普通用户只能查看和操作自己的数据