博客项目

1项目概述

  该项目是一个个人博客的项目,主要实现的功能有首页博客的展示、根据博客的标题检索博客、博客根据分类和标签的展示、博客详情、博客二级评论的显示、根据时间对博客进行归档、用户的登录、博客的编辑以及博客分类标签的管理。

2.涉及的技术

  主要采用SpringBoot、持久化层myBatis、数据的渲染thymeleaf、jQuery发送ajax请求,数据渲染和前端框架SemainticUI。

3.大致实现过程

  我第一步在pom.xml引入了需要的jar包、编写mybaits的总配置文件和映射文件、编写application.yml文件的基础配置:比如数据库的连接、使用的数据池、分页插件的配置、日志的配置等。

  对数据库进行了设计,表的结构如下图所示。
在这里插入图片描述

  在com.pavi.blog.aspect包下做了一个切面,在每个方法执行前后都会记录它的访问者的IP、方法的请求参数、方法的返回值等。

  在com.pavi.blog.web.admin中LoginController实现了登录的校验、注销的操作,登录的成功后会把用户信息保存到session中,注销又会在session中删除相关的信息。

  在com.pavi.blog.config配置了一个拦截器,会对所有的后端管理的方法进行拦截,判断是否登录,没有登录的时候是不允许进行访问,会跳转到登录页面。

  在com.pavi.blog.handler对项目中所有的异常进行统一的处理,当产生异常时会跳转到error页面。

在com.pavi.blog.web下面是自己编写的控制器,它的子包admin是后台管理的控制器。com.pavi.blog.service是业务层代码,com.pavi.blog.po是项目的实体类,com.pavi.blog.util存放一些工具类。

3.1二级评论功能的实现

  由于数据库设计的失误,所以在实现评论功能的时候出现了一些问题,起初以为自关联查询然后把文章的评论和回复文章的评论、回复文章的评论的回复查询出来,之后需要把回复文章的评论的回复添加到根节点的直接孩子节点中,虽然这样做是可行的,但是一方面时间复杂度很高,另外一方面是无法把没有回复评论的文章评论查询出来。

  后面自己使用俩个sql语句,一个查询有回复评论的文章评论A,一个是文章的评论B,A和B的差集就是没有回复评论的文章评论,之后和第一段中求得结果取并集即可。

  上面实现得方式还是太臃肿,先查询直接文章得评论,然后以它得ID作为后续回复的parentId查询即可,修改相应的属性即可。其实更加友好的方式更改数据库评论的设计,设计一个评论表和回复表,直接评论表和回复表的关联以及回复表的自关联即可。

3.2 博客显示

  由于编辑博客采用的markdown,所以博客内容在数据库存储的是markdown格式,这样就无法正确显示。后面通过查阅相关资料找到commonmark提供了markdown专HTML格式,然后就是在数据库检索到的博客内容进行转换,之后发送给前端,可以正常显示。

4.项目功能展示

在这里插入图片描述

项目首页

在这里插入图片描述

分类显示博客

在这里插入图片描述

博客详情的目录、留言、微信二维码

在这里插入图片描述

二级评论

在这里插入图片描述

编辑博客

在这里插入图片描述

博客展示功能的设计

更多功能欢迎访问文末博客Github地址和网站地址

5.收获

由于文章和标签属于多对多的关系,通过这次项目使得自己对表之间的关系有了进一步的认识。数据库设计的优良直接导致需求实现的难易,比如二级评论的显示。准备在后续在该博客项目添加文件上传、评论表的重构、用户注册等功能。

6项目地址

github地址:blog

网站:blog

作者:pavi

出处:http://www.cnblogs.com/pavi/

本文版权归作者和博客园所有,欢迎转载。转载请在留言板处留言给我,且在文章标明原文链接,谢谢!

如果您觉得本篇博文对您有所收获,觉得我还算用心,请点击右下角的 [推荐],谢谢!

原文地址:https://www.cnblogs.com/pavi/p/13815140.html