【项目实战】博客系统设计与实现

这篇具有很好参考价值的文章主要介绍了【项目实战】博客系统设计与实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 一、项目概述

1.项目需求

前端:展示文章,文章分类,评论,用户登录。
后端 :系统管理:用户管理,菜单管理,角色管理。内容管理:文章管理,分类管理,标签管理 

2.总述 

此项目为Springboot项目,前后端分离,典型的单体架构,主要功能是对文章,分类评论 等业务进行管理,同时有权限管理的功能,能够进行权限分配。

3.技术栈选择

前端:Vue、ElementUI
后端:SpringBootMybatisPlusSpringSecurityEasyExcelSwagger2Redis OSS

4.环境介绍

数据库:mysql8.0.28
项目结构:maven
数据库连接池:Druid
前端框架:Vue
后端框架:SpringBoot,SpringSecurity
语言:Java
jdk版本:17
编写的IDE:IDEA

5.效果图展示

【项目实战】博客系统设计与实现

【项目实战】博客系统设计与实现  

【项目实战】博客系统设计与实现

【项目实战】博客系统设计与实现

【项目实战】博客系统设计与实现

 【项目实战】博客系统设计与实现

【项目实战】博客系统设计与实现

二、设计思路 

一般项目三层架构

【项目实战】博客系统设计与实现

由上图可以看到单体项目中大致的组成。
一般的单体应用都会分三层——数据库层,业务层,控制层,而我们这个博客系统也是如此。 

2.前后端交互示意图

【项目实战】博客系统设计与实现

 3.博客系统架构设计图

在看完了单体项目一般是如何架构之后,再来看看我们的系统架构图(由于业务比较少,所以这里可以直接把各个类写到上面)

项目前端分前端页面和后端页面

【项目实战】博客系统设计与实现

 和上面的差不多,只不过这里利用SpringSecurity实现了token机制来进行权限控制,同时用了点spring的aop来处理日志信息,以及利用自定义异常处理器处理全局异常信息,返回对应的错误响应。

4.响应格式

对于前后端分离的项目,响应格式必定是前后端交流非常重要的一环。

【项目实战】博客系统设计与实现

5.日志记录机制

利用spring的aop机制,我们可以轻松的在controller接口处理请求之前打印请求的相关信息到日志文件中。

6.鉴权服务设计与实现

关于此系统的鉴权服务,也就是我们常说的注册登录,我用的是SpringSecurity实现的一套简单的token机制,示意图如下:

验证机制

【项目实战】博客系统设计与实现

认证过滤器设计与实现

【项目实战】博客系统设计与实现

SpringSecurity认证授权异常处理设计与实现

认证失败处理器器,实现AccessDeniedHandler

【项目实战】博客系统设计与实现

 授权失败处理器器,实现AuthenticationEntryPoint

【项目实战】博客系统设计与实现

配置异常处理器

【项目实战】博客系统设计与实现

三、数据库设计

1.文章表(sg_article)

【项目实战】博客系统设计与实现

描述:文章表,存储文章

表结构:

序号

字段名

数据类型

主键

非空

默认值

描述

1

id

BIGINT(19)

2

title

VARCHAR(256)

标题

3

content

LONGTEXT

文章内容

4

summary

VARCHAR(1024)

文章摘要

5

category_id

BIGINT(19)

所属分类id

6

thumbnail

VARCHAR(256)

缩略图

7

is_top

CHAR(1)

0

是否置顶(0否,1是)

8

status

CHAR(1)

1

状态(0已发布,1草稿)

9

view_count

BIGINT(19)

0

访问量

10

is_comment

CHAR(1)

1

是否允许评论 1是,0否

11

create_by

BIGINT(19)

12

create_time

DATETIME

13

update_by

BIGINT(19)

14

update_time

DATETIME

15

del_flag

INT(10)

0

删除标志(0代表未删除,1代表已删除)

2.文章标签关联表(sg_article_tag)

【项目实战】博客系统设计与实现

 描述:文章标签关联表

序号

字段名

数据类型

主键

非空

默认值

描述

1

article_id

BIGINT(19)

文章id

2

tag_id

BIGINT(19)

0

标签id

3.分类表(sg_category)

【项目实战】博客系统设计与实现

 描述:文章分类表

表结构:

序号

字段名

数据类型

主键

非空

默认值

描述

1

id

BIGINT(19)

2

name

VARCHAR(128)

分类名

3

pid

BIGINT(19)

-1

父分类id,如果没有父分类为-1

4

description

VARCHAR(512)

描述

5

status

CHAR(1)

0

状态0:正常,1禁用

6

create_by

BIGINT(19)

7

create_time

DATETIME

8

update_by

BIGINT(19)

9

update_time

DATETIME

10

del_flag

INT(10)

0

删除标志(0代表未删除,1代表已删除)

4.评论表(sg_comment)

【项目实战】博客系统设计与实现

描述:评论表

表结构:

序号

字段名

数据类型

主键

非空

默认值

描述

1

id

BIGINT(19)

2

type

CHAR(1)

0

评论类型(0代表文章评论,1代表友链评论)

3

article_id

BIGINT(19)

文章id

4

root_id

BIGINT(19)

-1

根评论id

5

content

VARCHAR(512)

评论内容

6

to_comment_user_id

BIGINT(19)

-1

所回复的目标评论的userid

7

to_comment_id

BIGINT(19)

-1

回复目标评论id

8

create_by

BIGINT(19)

9

create_time

DATETIME

10

update_by

BIGINT(19)

11

update_time

DATETIME

12

del_flag

INT(10)

0

删除标志(0代表未删除,1代表已删除)

5.友链(sg_link)

【项目实战】博客系统设计与实现

描述:友链

表结构:

序号

字段名

数据类型

主键

非空

默认值

描述

1

id

BIGINT(19)

2

name

VARCHAR(256)

3

logo

VARCHAR(256)

4

description

VARCHAR(512)

5

address

VARCHAR(128)

网站地址

6

status

CHAR(1)

2

审核状态 (0代表审核通过,1代表审核未通过,2代表未审核)

7

create_by

BIGINT(19)

8

create_time

DATETIME

9

update_by

BIGINT(19)

10

update_time

DATETIME

11

del_flag

INT(10)

0

删除标志(0代表未删除,1代表已删除)

6.标签(sg_tag)

【项目实战】博客系统设计与实现

描述:文章标签

表结构:

序号

字段名

数据类型

主键

非空

默认值

描述

1

id

BIGINT(19)

2

name

VARCHAR(128)

标签名

3

create_by

BIGINT(19)

4

create_time

DATETIME

5

update_by

BIGINT(19)

6

update_time

DATETIME

7

del_flag

INT(10)

0

删除标志(0代表未删除,1代表已删除)

8

remark

VARCHAR(500)

备注

7.菜单权限表(sys_menu)

【项目实战】博客系统设计与实现

描述:菜单权限表

表结构:

序号

字段名

数据类型

主键

非空

默认值

描述

1

id

BIGINT(19)

菜单ID

2

menu_name

VARCHAR(50)

菜单名称

3

parent_id

BIGINT(19)

0

父菜单ID

4

order_num

INT(10)

0

显示顺序

5

path

VARCHAR(200)

路由地址

6

component

VARCHAR(255)

组件路径

7

is_frame

INT(10)

1

是否为外链(0是 1否)

8

menu_type

CHAR(1)

菜单类型(M目录 C菜单 F按钮)

9

visible

CHAR(1)

0

菜单状态(0显示 1隐藏)

10

status

CHAR(1)

0

菜单状态(0正常 1停用)

11

perms

VARCHAR(100)

权限标识

12

icon

VARCHAR(100)

#

菜单图标

13

create_by

BIGINT(19)

创建者

14

create_time

DATETIME

创建时间

15

update_by

BIGINT(19)

更新者

16

update_time

DATETIME

更新时间

17

remark

VARCHAR(500)

备注

18

del_flag

CHAR(1)

0

8.角色信息表(sys_role)

【项目实战】博客系统设计与实现

描述:角色信息表

表结构:

序号

字段名

数据类型

主键

非空

默认值

描述

1

id

BIGINT(19)

角色ID

2

role_name

VARCHAR(30)

角色名称

3

role_key

VARCHAR(100)

角色权限字符串

4

role_sort

INT(10)

显示顺序

5

status

CHAR(1)

角色状态(0正常 1停用)

6

del_flag

CHAR(1)

0

删除标志(0代表存在 1代表删除)

7

create_by

BIGINT(19)

创建者

8

create_time

DATETIME

创建时间

9

update_by

BIGINT(19)

更新者

10

update_time

DATETIME

更新时间

11

remark

VARCHAR(500)

备注

9.角色和菜单关联表(sys_role_menu)

【项目实战】博客系统设计与实现

描述:角色和菜单关联表

表结构:

序号

字段名

数据类型

主键

非空

默认值

描述

1

role_id

BIGINT(19)

角色ID

2

menu_id

BIGINT(19)

菜单ID

10.用户表(sys_user)

【项目实战】博客系统设计与实现

描述:用户表

表结构:

序号

字段名

数据类型

主键

非空

默认值

描述

1

id

BIGINT(19)

主键

2

user_name

VARCHAR(64)

NULL

用户名

3

nick_name

VARCHAR(64)

NULL

昵称

4

password

VARCHAR(64)

NULL

密码

5

type

CHAR(1)

0

用户类型:0代表普通用户,1代表管理员

6

status

CHAR(1)

0

账号状态(0正常 1停用)

7

email

VARCHAR(64)

邮箱

8

phonenumber

VARCHAR(32)

手机号

9

sex

CHAR(1)

用户性别(0男,1女,2未知)

10

avatar

VARCHAR(128)

头像

11

create_by

BIGINT(19)

创建人的用户id

12

create_time

DATETIME

创建时间

13

update_by

BIGINT(19)

更新人

14

update_time

DATETIME

更新时间

15

del_flag

INT(10)

0

删除标志(0代表未删除,1代表已删除)

11.用户和角色关联表(sys_user_role)

【项目实战】博客系统设计与实现

描述:用户和角色关联表

表结构:

序号

字段名

数据类型

主键

非空

默认值

描述

1

user_id

BIGINT(19)

用户ID

2

role_id

BIGINT(19)

角色ID

四、功能设计与展示

【项目实战】博客系统设计与实现

 1、前台

首页进行文章的展示

【项目实战】博客系统设计与实现

注册功能 ,注册只是简单的注册,密码会进行MD5加密

【项目实战】博客系统设计与实现

 登录功能【项目实战】博客系统设计与实现

 评论功能

【项目实战】博客系统设计与实现

2、后台

写文章

【项目实战】博客系统设计与实现

 用户管理,这里可以对用户进行增删改查,还可以进行授予一定权限

【项目实战】博客系统设计与实现

 【项目实战】博客系统设计与实现

 角色管理,可以对角色进行增删改查,还可以更改角色对应的权限信息

【项目实战】博客系统设计与实现

 【项目实战】博客系统设计与实现

菜单管理,对系统的菜单和一些按钮的增删改查,以及修改路由地址

【项目实战】博客系统设计与实现

 【项目实战】博客系统设计与实现

 文章管理,对文章的增删改查

【项目实战】博客系统设计与实现

分类管理,对分类的增删改查

【项目实战】博客系统设计与实现 友链管理,对友链的增删改查

【项目实战】博客系统设计与实现

 标签管理,对标签的增删 改查

【项目实战】博客系统设计与实现

 五、心得体会

通过本次项目我学到了很多东西,对规范的项目开发流程有了更加深入的了解,对SpringSecurity安全框架的认证和授权流程有了全新的认识。

 项目地址:GitHub - gjhj030108/GBlog文章来源地址https://www.toymoban.com/news/detail-471640.html

到了这里,关于【项目实战】博客系统设计与实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包