此项目并非原创,项目原型是李仁密老师的作品,具体的教学视频来自b站,不过up主貌似也是搬运的。 此个人博客前端是模仿李仁密老师的,其中,我根据自身需求做出了部分修改。 因为我是主后端的,所以想借此机会来锻炼自己,所以后端部分完全由自己来设计编写(不过异常的控制器和博客内容转html这部分是借鉴了李仁密老师的)。 为此在完成项目并测试之后我写了这篇博文来记录我的项目思路和遇到的一些问题,对于一些想学习
的人来说,这应该是个很好的练手项目。
此项目为个人博客系统,分前台和后台。前台负责展示你的博客,且页面适配移动端(不过不是我的功劳,是老师lirenmi的功劳)。管理员可以登录后台来对博客、分类、评论等进行管理。
前端:Semantic UI、thymeleaf 后端:SpringBoot、Spring、SpringMVC、Mybatis-plus
数据库:mysql5.7.0 数据库连接池:Druid 前端框架:Semantic UI、thymeleaf模板引擎 后端框架:SpringBoot、SSM 语言:Java jdk版本:8(jdk8以上都可以运行) 编写的IDE:IDEA 2020.1 插件引用: lombok(简化部分代码插件)、animate.css-master(动画效果)、editor.md-master(markdown插件)、prism(代码高亮)、tocbot-master(目录生成)、typo.css-master(网页排版)、
根据实际背景制定相应的策略
我这里采用的是一种比较常规的手法,那就是拦截器+session的组合1.用户登录 我这里采用的是一种比较常规的手法,那就是拦截器+session的组合
首先写个拦截器,对所有访问后台的请求进行拦截,如果该请求的session中没有user对象,则拦截并将其重定向到登录页面(这里要注意登录页面不能被自己给拦截了)。如果存在该user对象,则放行通过
#####2.评论功能
评论功能还是有点复杂的,解决思路也很多。
而且你在建表的时候就得好好思考思路了。思考如何存储评论内容,如何存储评论与评论之间的关系。这样你后面处理起来才不会手忙脚乱。
这里我介绍一下我的思路。
首先,我把评论comment赋予以下几个属性 id,name,email,blog,isAdmin,content,time,parent。 前面几个属性好理解,无非就是存储评论的用户昵称,邮箱,评论内容之类。最后一个parent表示什么呢?其实这个parent使用用来存储评论与评论之间的关系的,它是int类型,主要存储父评论的id。如果没有父评论,那么则用-1存储以示区别。这样我们就可以分清以及评论和二级评论了。
不过这还是我偷懒的情况,因为在二级评论里你会发现没有回复按钮。 实际上是被我删了,用@XXX代替,不然加了这按钮,这逻辑会复杂很多,存储起来也很麻烦。反正主要的效果都能达到,不如删去些细枝末节的东西来简化逻辑
能区分博主和普通游客的评论 有人可能会问:为什么要区分博主和普通游客的评论?
那你有没有想过一种很有意思的情况,就是游客伪装成博主的用户名和头像来“过愚人节”,这很有意思,但是机智的我为了防止这种情况的发生,在comment类中加了isAdmin属性以区分是否是管理员的评论,前端也根据此来区别显示评论。
而判断的依据就是session中有没有user对象和校验一个特殊的nickName来判断,即使没有登录管理员也可以评论
pagehelper分页插件:但是有几个部分需要多表使用的是写sql,然后先查,再用插件封装分页信息
这么更方便时间的数据进行自动填充,当然也可以进行其他字段的填充,一般用于增加修改
1.Semantic UI文件的导入 2.maven项目的静态资源问题 3.SpringBoot项目的路径问题 4.mybatis-plus join的连表问题 总之都是细节问题
这个博客将会伴随我很久很久,我更想记录一下我一路走来的路,等风来不如追风去,追逐的过程才是人生的意义!!
评论