毕业设计实战:基于Spring Boot+MySQL的家乡特色推荐系统,从需求到测试全流程避坑指南!

34 阅读14分钟

毕业设计实战:基于Spring Boot+MySQL的家乡特色推荐系统,从需求到测试全流程避坑指南!

家人们谁懂啊!当初做家乡特色推荐系统毕设时,光"文章分享表"和"文章分类表"的外键关联就卡了3天——一开始没在文章表设"文章分类"外键,查某分类的文章时,数据全混到其他分类下,导师看了直接让我"重新梳理数据库实体关系"😫 后来踩遍无数坑才摸出高效落地流程,今天把需求分析、技术选型、功能实现到测试的核心细节说透,宝子们不用熬夜改代码,轻松搞定毕设!

一、先搞懂家乡特色推荐系统要啥!需求分析别瞎蒙

刚开始我跳过需求分析就写代码,花两周加了个"个性化推荐算法",结果导师一句"核心是文章管理、用户分享、内容审核,不是复杂算法"直接打回重改!后来才明白,需求分析得先抓准"谁用系统、要干啥",这步做对,少走90%弯路。

1. 核心用户&功能拆解(踩坑后总结版)

系统只有两类核心用户:管理员、普通用户(别加"编辑子角色"!我当初加了后权限混乱,编辑能审核所有文章,砍掉才顺畅),功能明确区分,避免越权:

  • 管理员端(必做功能):
    • 用户管理:审核用户注册(通过/驳回)、重置用户密码、按用户名/姓名筛选用户
    • 分类管理:维护文章分类(新增美食/景点/民俗等)、修改分类名称
    • 内容管理:文章审核(查看用户分享、审核内容合规性)、资讯管理(发布系统公告、编辑通知内容)
    • 数据管理:查看系统数据统计(用户数量、文章数量、点击量排行)
  • 用户端(核心需求):
    • 个人操作:注册账号(填写用户名、密码、联系方式)、修改个人信息(头像、手机、姓名)
    • 内容分享:发布文章(填写标题、选择分类、上传图片、编辑内容)、管理我的文章(查看已发布、修改待审核文章)
    • 内容浏览:查看推荐文章(按分类筛选)、查看文章详情(阅读全文、收藏文章)、参与评论互动
    • 收藏管理:查看我的收藏(文章列表)、取消收藏

2. 需求分析避坑指南(血泪教训!)

  • 别空想!找2个同学模拟管理员和用户提意见:比如用户说"想快速找到自己家乡的文章",我才加了"按分类快速筛选",比瞎加"智能推荐"实用
  • 一定要画用例图!用DrawIO画"管理员-审核文章""用户-发布文章""用户-收藏文章",跟导师汇报时比光说"我要做XX功能"直观10倍(当初没画,导师听20分钟没get到逻辑)
  • 写"需求规格说明书"!把约束条件写清楚(如"文章标题≤50字""图片≤5MB""用户手机号必须11位"),编码时对着做,不跑偏

3. 可行性分析别敷衍!3点写清楚就能过

导师超爱问"系统可行吗",别只说"我觉得可行",从3个角度写,显专业:

  • 技术可行性:Spring Boot、Java、MySQL都是课堂学过的,图书馆有《Spring Boot实战》《MySQL数据库设计与优化》,遇到问题能查资料(别用Spring Boot 3.x!我当初试了,跟MySQL 8.0联调时图片上传接口卡2天,换回2.7稳定版才顺)
  • 经济可行性:工具全免费!MyEclipse(免费版)、MySQL、Navicat(学生版)、Tomcat官网直接下,答辩时说"开发成本0,还能帮助传承家乡文化,实现数字化文化传播",导师会觉得你懂社会价值
  • 操作可行性:界面参考主流内容平台,常用功能放显眼位置(如"发布文章"在用户中心显眼位置),找同学测试,5分钟学会发布文章、收藏内容,导师直接认可

二、技术选型别跟风!这套组合稳到爆

刚开始我跟风用Spring Boot 3.x+Vue 3+Redis,结果"文章缓存"卡2天——Redis配置错,重启后热门文章排行数据全丢😫 后来换成Java 8+Spring Boot 2.7+MySQL 8.0+JSP+Tomcat 9+MyEclipse 2022,新手友好,调试效率翻两倍!

1. 技术栈核心选择(附避坑提醒)

别盲目选"最新技术",稳定比炫酷重要!核心工具选择理由和坑点直接抄:

技术工具为啥选它避坑提醒!
Java 8语法简洁,Spring Boot 2.7兼容性最佳,学习资料多别用Java 11+!部分Spring依赖支持差,易出"类加载失败"
Spring Boot 2.7简化Spring配置,自带Tomcat,适合快速开发文章管理、用户交互功能别用自定义启动器!新手直接用官方starter(spring-boot-starter-web、spring-boot-starter-jdbc),避免配置错误导致接口调用失败
MySQL 8.0支持事务/外键,存文章、用户、分类数据足够用,utf8mb4编码支持emoji表情安装设"utf8mb4"编码!我当初用默认编码,文章内容含emoji表情乱码,查2小时才好
JSP与Java无缝衔接,适合做内容平台界面,支持动态数据渲染(如实时显示文章点击量)别用HTML5替代!动态表单(如文章发布)需额外写JS,易出数据绑定错误
Tomcat 9轻量级服务器,适合中小型内容平台,与Spring Boot 2.7适配性好别用10+版本!部分Servlet类包路径变化,启动报错"Servlet初始化失败"
MyEclipse 2022支持Java、Spring Boot开发,自带代码提示,插件丰富(如MyBatis Generator)别装太多插件!我当初装了10+插件,MyEclipse频繁崩溃,只留"Spring Tools""MySQL Connector"就够

2. 开发环境搭建(step by step 实操)

很多宝子卡"环境配置",跟着步骤来,一次成功:

  1. 装JDK 1.8:记安装路径(如D:\Java\jdk1.8.0_301),配置"JAVA_HOME"环境变量,cmd输"java -version"显"1.8.x"即成
  2. 装MyEclipse 2022:勾选"Spring Tools"插件,配置JRE为JDK 1.8,设工作空间编码为"UTF-8"
  3. 装MySQL 8.0:用Navicat建数据库"hometown_feature",编码设"utf8mb4",排序"utf8mb4_general_ci"
  4. 建Spring Boot项目:MyEclipse选"Spring Starter Project",引入Web、MyBatis、MySQL依赖,配置application.yml(数据库连接、端口号)
  5. 配前端页面:用JSP+Bootstrap写文章列表、文章详情页面,实现响应式布局
  6. 联调测试:在application.yml配置数据库连接(url: jdbc:mysql://localhost:3306/hometown_feature?useSSL=false&serverTimezone=UTC),写"查询文章列表"接口,前端调用能显示文章标题、分类、发布时间即完成

三、数据库设计:别让表关联坑了你

这是毕设"核心骨架",我当初没关联"收藏表"和"文章表",查"某文章的收藏用户"要写3层嵌套SQL,调试到凌晨2点😫 后来按"实体-属性-关系"设计,终于理清。

1. 核心实体&属性(附ER图技巧)

先确定"实体"(用户、文章分类、文章分享、收藏、评论),再想"属性",别漏关键字段!必做7张核心表,直接画ER图:

  • 用户表(yonghu):id(主键)、yonghuming(用户名,唯一)、mima(密码,MD5加密)、xingming(姓名)、touxiang(头像路径)、xingbie(性别)、shouji(手机)、sfsh(是否审核:否/是)、shhf(审核回复)
  • 文章分享表(wenzhang_fenxiang):id(主键)、biaoti(标题)、tupian(图片路径)、wenzhangfenlei(文章分类,关联分类表)、jianshu(简述)、wenzhangxiangqing(文章详情)、fabushijian(发布时间)、yonghuming(关联用户名)、xingming(姓名)、sfsh(是否审核:否/是)、shhf(审核回复)、clicknum(点击次数)
  • 文章分类表(wenzhang_fenlei):id(主键)、wenzhangfenlei(文章分类名称)
  • 收藏表(shoucang):id(主键)、userid(关联用户id)、refid(收藏对象ID)、tablename(收藏表名:wenzhang_fenxiang)、name(收藏名称)、picture(收藏图片路径)
  • 评论表(pinglun):id(主键)、refid(关联文章ID)、userid(用户id)、nickname(用户昵称)、content(评论内容)、reply(回复内容)

画ER图用Visio/亿图,记3规则:

  1. 矩形=实体(如"用户""文章分享""文章分类")
  2. 椭圆=属性(如文章"标题""分类""简述",用户"用户名""手机")
  3. 菱形=关系(如"用户-文章分享"一对多,一个用户可发布多篇文章;"文章分类-文章分享"一对多,一个分类可有多个文章) 避坑提醒:别把"文章图片/用户头像"存数据库!我当初存二进制导致数据库崩溃,改成存路径(如/static/article/img1.jpg、/static/user/avatar1.jpg)才对。

2. 表关联测试!别等编码才发现错

建表后一定要测:在"文章分类表"插数据(id=1,wenzhangfenlei="美食推荐"),"文章分享表"插关联数据(id=1,biaoti="家乡特色小吃",wenzhangfenlei="美食推荐",yonghuming="user001"),用JOIN查"某分类下的文章":

SELECT f.wenzhangfenlei, w.biaoti, w.jianshu, w.fabushijian, w.yonghuming
FROM wenzhang_fenxiang w
JOIN wenzhang_fenlei f ON w.wenzhangfenlei = f.wenzhangfenlei
WHERE f.id = 1;

能查出"分类名称+文章标题+简述+发布时间+发布用户"说明关联对;若报错"Cannot add or update a child row",大概率外键错,赶紧检查表结构(比如wenzhangfenlei字段类型是否和分类表一致)。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

四、功能实现:核心模块操作+页面设计

不用做所有功能!先搞定3个核心模块,答辩足够出彩,附操作逻辑和页面要点:

1. 用户端:文章发布模块(必做!)

核心是"内容编辑+图片上传+提交审核",重点"富文本编辑"和"图片处理",别漏这两步!

  • 操作逻辑
    1. 发布文章前校验"标题非空""分类必选""内容≥100字""图片已上传",缺一项提示"完善文章信息"(我当初没加"字数校验",用户发布几个字的文章成功提交,导师让补了2小时校验逻辑)
    2. 支持富文本编辑:用户可设置字体、插入图片、调整格式,内容保存为HTML格式到数据库
    3. 图片上传:支持多图上传,自动压缩图片(限制单张≤2MB),生成缩略图用于列表展示
    4. 提交后进入"待审核"状态,管理员审核通过后才在前台显示
  • 页面设计(JSP+Bootstrap)
    • 编辑区:标题输入框(限50字)、分类下拉选择(美食/景点/民俗等)、图片上传区域(拖拽上传、显示缩略图)、富文本编辑器(工具栏:加粗/斜体/插入图片/超链接等)
    • 预览区:实时预览文章最终显示效果
    • 提交区:保存草稿按钮、提交审核按钮、发布状态提示(待审核/已通过/被驳回)

2. 用户端:文章浏览模块(核心需求!)

用户核心操作是"浏览推荐内容",流程要流畅:查看首页推荐→按分类筛选→查看文章详情→收藏评论,我当初漏了"点击量统计",文章热度无法体现,补半天统计逻辑才好。

  • 操作逻辑
    1. 首页默认显示最新发布的10篇文章(按发布时间倒序),显示文章标题、封面图、简述、作者、发布时间
    2. 支持按"文章分类"筛选,点击分类只显示该分类下的文章
    3. 查看文章详情时,记录点击量(clicknum+1),用于热门文章排行
    4. 支持收藏文章:判断是否已收藏,已收藏显示"已收藏",可取消收藏
  • 页面设计
    • 首页推荐区:轮播图展示热门文章(按点击量排行)、文章列表网格布局(每行3-4篇文章卡片)
    • 分类筛选区:分类标签(美食/景点/民俗/手工艺等),点击高亮显示当前选中分类
    • 文章详情页:顶部显示文章标题、作者、发布时间、分类,中部显示文章正文(支持图片放大查看),底部显示收藏按钮和评论区

3. 管理员端:内容审核模块(答辩亮点!)

体现"管理功能完整性",导师超爱问!核心"审核列表+内容审查+审核反馈",别漏"审核历史记录"。

  • 操作逻辑
    1. 管理员登录后,首页显示"待审核文章数量"提醒
    2. 审核文章时,查看完整内容(标题、图片、正文),判断是否符合平台规范(无违规内容、图片清晰、内容完整)
    3. 审核通过:文章状态改为"已审核",立即在前台显示;审核驳回:填写驳回理由(如"图片模糊,请重新上传""内容涉及敏感信息"),用户可查看驳回理由并修改重提
    4. 所有审核操作记录日志(审核人、审核时间、审核结果)
  • 页面设计
    • 审核列表:显示待审核文章列表(标题、作者、提交时间、审核状态),操作列"审核"
    • 审核详情页:左侧显示文章完整内容,右侧显示审核操作区(通过按钮、驳回按钮、驳回理由输入框)
    • 审核历史:按时间倒序显示所有审核记录,支持按审核结果(通过/驳回)筛选

五、测试别敷衍!这3步让答辩不翻车

很多宝子觉得"功能能跑就行",答辩时评委一测就出问题!我当初没测"富文本XSS攻击",导致用户可插入恶意脚本,导师说"存在安全漏洞",当场扣分😫 测试要针对性做:

1. 功能测试(必测3模块)

重点测核心功能,整理测试用例表,直接填结果:

测试场景操作步骤预期结果
用户发布含敏感词文章用户编辑文章→内容含敏感词→提交审核提交成功,但管理员审核时能看到敏感词标记,审核驳回
上传超大图片用户上传图片→选择10MB图片→上传提示"图片大小不能超过5MB,请重新选择!"
重复收藏同一篇文章用户打开文章详情→点击"收藏"→再次点击"收藏"第一次收藏成功,第二次提示"已取消收藏"

2. 兼容性测试(容易忽略)

别只在自己电脑测!答辩评委可能用不同设备和浏览器:

  • 浏览器:Chrome、Firefox、Edge、IE11(重点测IE,JSP页面兼容性差,富文本编辑器需用兼容方案)
  • 设备:电脑(1920×1080、1366×768分辨率)、平板、手机(测响应式布局,确保文章列表在不同设备正常显示)
  • 富文本:测试不同浏览器下富文本编辑器的功能是否正常

3. 测试报告要写好!答辩加分

整理"测试报告",含"目的、范围、用例、结果、问题总结":

  • 问题总结:"IE下富文本编辑器部分功能失效,改用UEditor兼容版本;用户可上传超大图片,加文件大小校验修复;富文本存在XSS漏洞,加HTML过滤修复"
  • 测试结论:"核心功能无严重bug,兼容性问题已修复,满足文章发布、内容浏览、审核管理需求"

六、答辩准备:3个加分小技巧

  1. 演示流程顺畅:提前录视频(怕现场崩),按"用户注册→发布文章→管理员审核→文章通过→其他用户浏览收藏"流程来,每个操作停顿2秒,让评委看清
  2. 讲"解决的问题":比如"一开始富文本存纯文本,格式丢失,改用HTML存储解决;用户能上传超大图片,加大小限制解决;存在XSS漏洞,加内容过滤解决",比光说"用了Spring Boot+MySQL"有亮点
  3. 准备常见问题:导师可能问"系统怎么保证内容质量?",答"用户发帖需管理员审核;敏感词过滤;图片内容审查;用户举报机制;定期清理低质量内容"

最后:毕设通关小私心

以上就是基于Spring Boot+MySQL的家乡特色推荐系统从0到1的避坑干货!毕设不难,别瞎做复杂功能(如个性化推荐、AI内容生成),把文章发布、内容浏览、审核管理做扎实,答辩就能过。

需要核心源码(带注释,直接能跑)、数据库脚本(含测试数据)、ER图模板的宝子,评论区扣"家乡特色系统",我私发你;卡在某个模块(如富文本编辑、图片上传),也可以留言,看到必回!

点赞收藏,下次找流程不迷路~祝宝子们毕设顺利,轻松毕业!😘