基于spring boot 的个人博客系统

摘要

随着社会上计算机行业的发展,记录知识的手段就不仅限于笔记,逐渐由纸质衍生到电子笔记,继而随着电子记录文档方式的多样性发展,大家将所学的知识进行回顾总结时发现,text、md等格式已无法满足需求,大家需要将整个知识体系从头到尾贯穿起来,对于从事计算机行业的学生和社会人士来说,记录博客就是一个很好的选择,比如CSDN、博客园、牛客等等,本人也在其中几个网站中发表过一些文章来分享自己的学习成果,因此想拥有一个属于自己的博客。

本文设计了一套后端技术基于Spring Boot + Spring Data JPA + thymeleaf模板,前端技术基于Semantic UI框架的个人博客系统,该系统的平台开发语言是基于面向对象思想的Java语言,并使用MySql作为本项目的后台数据库,开发出游客及管理者使用的博客网站。该系统的开发可以帮助计算机学习者和工作者记录知识并分享的需求,及实现了自己的学习记录,完善了自己的学习系统,还可以向大家分享。同时也能做到安全、保密地保存用户信息。这系统的开发带给了代价一个更加开放的平台。

关键词:Spring Boot;知识体系Spring Data JPA

Design and implementation of flower sales management system based on SSM

Abstract

With the development of the computer industry in society, the means of recording knowledge is not limited to notes, but gradually derived from paper to electronic notes. Then, with the diversified development of electronic recording methods, when reviewing and summarizing the knowledge learned, it is found that text, MD and other formats can not meet the needs, and you need to run through the whole knowledge system from beginning to end, For students and social personages engaged in the computer industry, recording blog is a good choice, such as CSDN, blog Garden, Niuke, etc. I have also published some articles on several websites to share my learning achievements, so I want to have a blog of my own.

This paper designs a personal blog system with back-end technology based on spring boot + spring data JPA + thymeleaf template and front-end technology based on semantic UI framework. The platform development language of the system is java language based on object-oriented thinking, and MySQL is used as the background database of the project to develop the blog website used by tourists and managers. The development of the system can help computer learners and workers record knowledge and share their needs, realize their own learning records, improve their own learning system, and share with you. At the same time, it can also save user information safely and confidentially. The development of this system brings a more open platform.

Key words:Spring Boot; Knowledge system;Spring Data JPA

1 概述

1.1 课题背景及意义

1.2 国内外研究现状

1.3 系统设计目标

2 需求分析

2.1 系统需求分析

2.2 可行性分析

2.2.1 技术可行性

2.2.2 经济可行性

2.2.3 操作可行性

2.3 开发及运行环境

2.3.1 计算机的硬件配置

2.3.2 软件需求

3 总体设计

3.1 系统功能结构图

3.1.1 数据库表概要

3.2 数据库表设计

3.3 配置文件详情

4 系统详细设计

4.1 登录界面

4.2 游客操作

4.2.1 博客查看

4.2.2 分类查看

4.2.3 标签查看

4.2.4 关键词搜索

4.2.5 归档查看

4.2.6 查看作者

4.3 管理员操作

4.3.1 博客管理

4.3.1.1 添加博客

4.3.1.2 查询博客

4.3.1.3 编辑博客

4.3.1.4 删除博客

4.3.2 分类管理

4.3.2.1 显示分类

4.3.2.2 添加分类

4.3.2.3 编辑分类

4.3.2.4 删除分类

4.3.3 标签管理

4.3.3.1 显示标签

4.3.3.2 添加标签

4.3.3.3 编辑标签

4.3.3.4 删除标签

5 系统测试

5.1 测试的必要性

5.2 测试环境

5.3 测试结果

5.4 测试总结

6 总结

参考文献

致谢

附录

  1. 概述
    1. 课题背景及意义

社会进入二十一世纪以来,现代的网络和通信技术均以互联网作为核心,各种类型的网络通信工具得到强大的发展。其中受广大互联网人欢迎的就包括公众号、社区、博客、论坛等,他们也都是现在流行程度较高的个人信息交流的工具。

在博客等工具未发展到此阶段时,大家可以通过写日志,现在我们的博客也属于一种日志,俗称“网络日志”。我们可以通过博客来记录生活与学习,用来分享身边的美好事物并加上自己的理解与感言,同时还能和大家一起交流讨论结交朋友,各取所长。我们以新浪、头条作为代表来说,国内很多互联网公司都相继推出自己的博客服务,技术上也随着用户量的增加在不断的进步和完善,然而,现有的第三方博客网站也存在着通用的问题,那就是网站的广告、弹窗等等都很多,藉此,开发一个属于个人的网站博客是一个既能提升自己也能够记录日志生活的方式。

    1. 国内外研究现状

在网络技术逐渐渗入社会生活各个层面的今天,传统的交流方式也面临着变革,而网络博客则是一个很重要的方向。博客在现如今这个飞速发展的网络时代已经成为人们不可或缺的一部分,博客,又译为网络日志、部落格或部落阁等,是一种通常由个人管理、不定期张贴新的文章的网站[1]。博客上的文章通常根据张贴时间,以倒序方式由新到旧排列[2]。许多博客专注在特定的课题上提供自己的观点或消息,其他则被作为比较个人的日志。一个典型的博客结合了文字、图像、其他博客或网站的链接、及其它与主题相关的媒体。能够让读者以互动的方式留下意见,是许多博客的重要要素。大部分的博客内容以文字为主。 博客是社会媒体网络的一部分。

博客在中国的发展起始于1998年,但到了2000年才开始真正的流行。而2000年博客开始进入中国,并迅速发展,但都业绩平平。直到2004年木子美事件,才让中国民众了解到了博客,并运用博客。2005年,国内各户站网站,如新浪、搜狐,原不看好博客,也加入博客阵营,开始进入博客春秋战国时代[1]。由于博客沟通方式比电子邮件、讨论群组更容易和简单,博客已成为家庭、部门、公司和团队之间越来越盛行的交流工具。

在发达国家,个人网站的搭建方式和平台也是多种多样的,从操作系统上划分,除了较为普通的windows,还有基于Linux,M爱吃 OS德国更为人性化的方式,举例来说,Mac OS中提供的iWeb套件,就能够完整的实现一个个人站点的开发[2]。而我们国内大多数是抱紧windows 去开发,我们利用java就可以利用他跨平台的特性达到多平台是实现运行部署使用。

    1. 系统设计目标

依据以上的研究背景和研究意义的讲述,回顾目前国内外的现状,本毕业设计基于Spring特性中的Spring Boot框架开发了一个个人博客系统。该系统基本符合现代人们记录生活、方便快捷、随时随地的特点。

为了区分发布者管理员和游客的身份,专门为该系统设计了两种不同的权限用户,分别为管理员和普通用户。系统管理员可以登陆个人博客网站的管理后台,可以管理维护本系统的所有业务。主要功能有:博客管理、分类管理、标签管理等相关功能。普通游客用户不需要登录网站,因我们的博客属于一个个人网站,用于分享,所以游客用户不需要登录,因此游客用户拥有一些查看等功能。主要功能包括:分页查看所有的博客,查看所有分类,搜索博客,博客内容评论等。

  1. 需求分析
    1. 系统需求分析

个人网站博客系统主要分为两个角色:普通访客,管理员。普通游客访客可以查看到博主所有的发布的博客内容,所有博主设置的内类、标签。同时访客用户可以对某一篇博客发表评论,打赏管理员博主等。管理员也就是博主,可以对博客进行增删改查操作,同样的,对博客的分类、标签也同样拥有增加、删除、修改、查询等操作。

    1. 可行性分析
      1. 技术可行性

我设计的系统的后端开发的语言是采用java语言,Spring Boot+Spring Data JPA框架来实现;前端网页开发主要用Semantic UI框架来实现;数据库采用的是MYSQL关系型数据库,主要是负责数据的存储,配合前端页面的调动数据以及实现,数据库语言我的系统设计是采用SQL92标准语言。整个系统结合大学四年所学的专业知识进行开发,遇到不会的技术难题尽快的查阅资料或请教导师解决。

      1. 经济可行性

作为主打个人专属网站的开发来说,主要的花费方向在于项目的一个部署上面,我们可以使用阿里云服务器,阿里云服务器对学生来说相对友好,一个月只需要10元就可以拥有属于自己的服务器来进行项目部署,对于经济可行性上来说,对于大多数人来说,这是一笔相对较小的开销,并且这是唯一开销,因此个人博客系统在经济可行性上面是完全行得通的。

      1. 操作可行性

个人博客系统我们上面说过是一个部署在云上面的web项目,他的操作非常的简单,我们在项目部署成功后,只需要使用浏览器进行访问就可以了,类似于我们使用淘宝等大型网站,并且我们的系统与很多第三方博客系统相似,在操作上相信大多数人通过简单的文档阅读就可以完全上手,因此在操作上是可行的。

    1. 开发及运行环境
      1. 计算机的硬件配置

硬件需求:CPU核心数:4,内存大小:32GB,硬盘:100GB。

测试工具: Postman。

      1. 软件需求

操作系统: win10电脑操作系统。

数据库系统: Mysql 8.0。

浏览器: Google Chrome 84、火狐浏览器、IE浏览器等。

服务器:apache-tomcat-8.5.40。

软件开发工具:IntelliJ IDEA 2021.1.3 x64。

  1. 总体设计
    1. 系统功能结构图

本个人博客系统用户主要分成两大模块,游客用户和管理员用户,针对两大角色的具体功能操作进行介绍:

管理员:

博客管理:撰写博客发布、对博客进行分类、对博客打标签、修改博客、删除已发布博客、根据标题,分类,标签查询博客;

分类管理:新增、修改、删除、查询分类;

标签管理:新增、修改、删除、查询标签。

游客:

首页:博客分页列表查看、标签展示、分类展示、最新推荐、博客详情;

分类:展示所有分类、展示单个分类下列表内容、跳转博客详情;

标签:展示所有标签、展示单个标签下列表内同、跳转博客详情;

归档:按照时间线展示列表内容、跳转博客详情。

系统中各功能模块的结构如下图3.1所示:

图3.1个人博客功能图

      1. 数据库表概要

通过对本系统进行需求分析和系统功能确定,确定我们需要使用的数据库表对象,具体的关系说明如下。

博客表(Blog)、博客分类表(Type)、博客标签(Tag)、博客评论(Comment)、用户(User)。各表之间的实体关系E-R图如3.2所示:

图3.2各表之间的实体关系E-R图

    1. 数据库表设计
  • 博客表设计如表3.1所示:

3.1博客表

序号

字段名

数据类型

主键

非空

默认值

描述

1

id

Bigint(20)

博客id

2

Title

varchar(20)

标题

3

content

Longtext

博客内容

4

First_picture

varchar(20)

首图

5

flag

varchar(255)

标记

6

views

int(11)

阅读数量

7

appreciation

Bit(1)

是否开启赞赏

8

Share_statement

Bit(1)

是否开启转载说明

9

commentabled

Bit(1)

是否开启评论

10

published

Bit(1)

是否发布

11

recommend

Bit(1)

是否推荐

12

Create_time

datetime

创建时间

13

Update_time

datetime

更新时间

  1. 博客表E-R如图3.3所示:

图3.3 博客表E-R图

  • 分类表设计如表3.2所示:

3.2 分类表

序号

字段名

数据类型

主键

非空

默认值

描述

1

id

Bigint(20)

分类id

2

Type

varchar(255)

分类

  1. 博客表E-R如图3.4所示:

图3.4 分类表E-R图

  • 标签表设计如表3.3所示:

3.3 标签表

序号

字段名

数据类型

主键

非空

默认值

描述

1

id

Bigint(20)

分类id

2

Tag

varchar(255)

标签名称

  1. 标签表E-R如图3.5所示:

图3.5 标签表E-R图

  • 评论表设计如表3.4所示:

3.4 评论表

序号

字段名

数据类型

主键

非空

默认值

描述

1

id

Bigint(20)

分类id

2

nickname

varchar(255)

评论者名称

3

email

varchar(255)

邮箱

4

content

varchar(255)

评论内容

5

avatar

varchar(255)

头像

6

createTime

Datetime

创建时间

  1. 评论表E-R如图3.6所示:

图3.6 评论表E-R图

  • 用户表设计如表3.5所示:

3.5 评论表

序号

字段名

数据类型

主键

非空

默认值

描述

1

id

Bigint(20)

分类id

2

nickname

varchar(255)

昵称

3

username

varchar(255)

用户名

4

password

varchar(255)

密码

5

email

varchar(255)

邮箱

6

avatar

varchar(255)

头像url

7

type

Int(11)

用户类型

8

Create_time

datetime

创建时间

9

Update_time

datetime

更新时间

  1. 用户表E-R如图3.6所示:

图3.6 用户表E-R图

    1. 配置文件详情

配置文件时程序设计的整体控制者,他负责了很多项目设计上的一些基础配置:包括数据库连接、数据库连接账号密码和系统静态文件地址配置等,若配置出错则整个系统的数据读取等就会出现问题,甚至程序将无法运行。配置如图3.7所示:

图3.7 application-dev.yml

  1. 系统详细设计
    1. 登录界面

系统中登录功能时管理员进入管理功能的一个入口,该用户需要时数据库中存在的用火狐才能登录此系统,在登录过程中我们通过账号密码的方式来确认用户是否存在是否可以登录系统,如图4.1所示:

图4.1 登录界面

    1. 游客操作
      1. 博客查看

在本系统中,博客网站的首页时游客视角进入系统所展示的页面,用来展示博主管理员撰写发布的文章等,用户点击某博客即可查看文章,同时还可以在博客下方进行留言评论或赞赏。游客视角进入系统首页如图4.2所示:

图4.2 游客视角博客列表页

      1. 分类查看

分类功能主要是给游客用户提供一个分类查询的一个入口,可以根据不同的分类查询博客,分类页面如图4.3所示:

图4.3 游客视角分类查看博客列表页面

      1. 标签查看

标签功能主要是给游客用户提供一个根据标签的不同区分博客的一个功能入口,标签页面如图4.4所示:

图4.4 游客视角标签查看博客列表页面

      1. 关键词搜索

搜索功能和我们平常使用的模糊查询功能相似,输入一个词或者一段语句来查找出包含该内容的博客或包含该内容的标题,关键词搜索页面如图4.5所示:

图4.5 游客视角关键词搜索博客列表页面

      1. 归档查看

系统中游客视角中归档功能是可以根据博主管理员所发布的博客文章根据年份继续查看。归档页面如图4.6所示:

图4.6 游客视角归档查看博客列表页面

      1. 查看作者

在个人博客系统中,关于我这个模块是为了向大家描述有关于博主作者的一些基本情况,向游客视角用户做一些相关的简单介绍,可以更好的联系到作者,关于查看作者的页面如图4.7所示:

图4.7 游客视角查看作者页面

    1. 管理员操作
      1. 博客管理
        1. 添加博客

添加博客是该系统最核心的一部分,需要编写每一篇博客的内容,这一部分的设计使用到了markdown编辑器,markdown文本是近几年最流行的一种记录文档的一个格式,并且几乎所有第三方博客系统都是使用的markdown语法来记录博客。添加撰写博客页面如图4.8所示:

图4.8 添加博客页面

        1. 查询博客

查询功能,我们可以通过页面上展示的分类、标题等来进行过滤博客列表,因为当我们的个人博客网站中博客发布量的增长,无法立马找到相应的博客。查询博客页面如图4.9所示:

图4.9 查询博客页面

        1. 编辑博客

编辑博客功能中可以让管理员博主对自己发布的博客进行编辑调整,方便在记录的过程中产生新的知识点或记忆点,若无法编辑博客会造成用户的使用感下降。编辑博客页面如图4.10所示:

图4.10 编辑博客页面

        1. 删除博客

对想要删除的博客进行删除操作,删除博客页面如图4.11所示:

图4.11 删除博客页面

      1. 分类管理
        1. 显示分类

分类显示是管理员博主后台显示分类,这一部分和游客用户的分类页面存在一些差异,管理员的功能主要是对分类的增删改,页面如下图4.12所示:

图4.12 分类管理显示分类页面

        1. 添加分类

管理员博主可以在该页面进行添加分类的操作,所添加成功的分类将显示在游客视角下的页面上,该部分也有一些校验,若分类名称重复则无法添加并进行提示,如图4.13所示:

图4.13 添加分类页面

        1. 编辑分类

管理员博主可以在该页面进行编辑分类的操作,所编辑成功的分类将显示在游客视角下的页面上,校验部分也添加相同,如图4.14所示:

图4.14 编辑分类页面

        1. 删除分类

管理员博主可以在该页面进行删除分类的操作,删除成功后,游客视角下所对应的分类也将被删除掉,删除分类如图4.15所示:

图4.15 删除分类页面

      1. 标签管理
        1. 显示标签

标签显示是管理员博主后台显示标签,这一部分和游客用户的标签页面存在一些差异,管理员的功能主要是对标签的增删改,页面如下图4.16所示:

图4.16 分类管理显示分类页面

        1. 添加标签

管理员博主可以在该页面进行添加标签的操作,所添加成功的标签将显示在游客视角下的页面上,该部分的校验和分类相同,若标签名称重复则无法添加并进行提示,如图4.17所示:

图4.17 添加标签页面

        1. 编辑标签

管理员博主可以在该页面进行编辑标签的操作,所编辑成功的标签将显示在游客视角下的页面上,校验部分也添加相同,如图4.18所示:

图4.18 编辑分类页面

        1. 删除标签

管理员博主可以在该页面点击删除按钮,删除成功后,游客页面中所看到的标签会更新,删除标签如图4.19所示:

图4.19 删除标签页面

  1. 系统测试
    1. 测试的必要性
      1. 目的

软件的测试主要是为了发现我们在开发过程中造成的可能存在的bug,还有一些可能存在的漏洞,一些“黑客”可能会使用各种工具来对系统进行攻击,若攻击成功可能会造成系统直接崩溃宕机,使用户数据丢失,造成用户强制下线。通过测试安全性让数据具有安全性。另一方面是需要测试功能点上有没有按照最初的设计需求去实现。在实际工作中是测试与开发是并行的,开发完成一个小功能点后就提交给测试,是为了保证最终的质量。

    1. 测试环境

软件环境:win10操作系统;MySQL;Tomcat-7.0.52;JDK1.8;Google Chrome 84。

硬件环境:CPU核心数:4,内存大小:32GB,硬盘:100GB;

    1. 测试结果

在测试的过程中,我们不难发现,测试的结果与我们最开始的需求是相吻合的,暂未发现有bug存在,可以投入使用。

    1. 测试总结

经过以上的测试,基于个人博客系统设计与实现符合开发要求,该系统前台网站页面操作使用流程,页面简洁,符合预期的需求设计。所有的功能模块测试下来并没发现严重的缺陷,基本功能都能实现;数据库测试查询数据的信息也都正确;因此本软件测试结果为通过。

类似精确和细心的测试,对系统的每个模块的进行反复测试,最终得出结论,系统操作流畅,页面直观简洁,数据完整无缺,各个模块之间相互链接和依靠。包括环境的测试,软硬件版本的测试,也对系统呈现的结果做了比较,并无产生较大差异,所以系统的开发和设计是相对成功的,与事先的预期相符合。

  1. 总结

为完成本次的个人博客系统的毕业设计遇到了很多比较难以解决的问题,同时也发现了自己的很多不足,但经过几个月的努力,截至今日系统设计和毕业论文已经基本完成。通过本次的毕业设计,发现有很多理论上的知识要运动到实际的应用场景上其实很不容易,需要将需求合理化,并和平常的知识点贯穿起来

在系统未开始启动开发的时候,就遇到了不少难题在技术选型方面犹豫不决,比如数据库方面是选择处理数据较快的Postgres数据库还是选择轻量级易上手的MYSQL数据库?系统开发前期由于对该框架的不熟悉导致出现问题不能及时解决,花费了大量的时间在解决问题上,应了那句“实践是检验真理的唯一标准”。

在项目开发的整体过程中,遇到过代码无法编译,配置文件读取失败、代码运行报错,面对这些种种错误,从刚开始的不知所措无法下手变成了现在学会合理分析报错信息并解决,这个过程让我成长了很多。同时也能够将自己遇到的问题记录到自己开发的博客网站上面,真正做到了去使用。在刚刚接触SpringBoot框架时,无数次感叹框架的强大,帮我们做好了很多的功能,尤其时配置文件,对于我们java初学者来说,大家应该都体会过大量的配置文件是一个很头疼的问题,而SpringBoot却能做到可以将整体的配置文件自动化,让我们开发者能够更加关注具体的业务逻辑。

最后想说,这一次的毕业设计虽然跌跌撞撞的完成了,但发现还有很多的晋升空间,对于自己来说最大的收获是编码能力的到了很大的提升,也希望自己在以后能做的更好。

参考文献

张永强.计算机软件Java编程特点及其技术分析[J].计算机产品与流通,2019(01)

优尔.博客的国内外研究现状和发展趋势[J].2017(02:342.

张永强. 计算机软件Java编程特点及其技术分析[J]. 计算机产品与流通,2019(01):23.

戴亚峰,基于Javaweb的住宅小区物业管理系统设计与实现.江西财经大学,2018年.

葛萌,黄素萍,欧阳宏基. 基于Spring MVC框架的Java Web应用[J]. 计算机与现代化,2018(08):97-101.

王宏,王清勇.计算机软件开发中Java编程语言的应用[J].数字技术与应用,2020,38(01):32-33.