摘要
随着互联网的发展和信息化时代的到来,个人博客成为了许多人进行知识分享和交流的重要平台。基于Spring Boot的个人博客网站系统的设计与实现,可以提供一个稳定、高效、易于维护的网络交流、分享和互动的平台,满足用户需求,为他们提供良好的使用体验。
本系统以实际运用为开发背景,使用Java开发语言,利用MySQL关系型数据库,基于Spring Boot开发框架,迅速构建起适合Web平台,并集简洁、便捷、简单、高效、安全等优点于一身的个人博客网站系统,为用户提供了展示自我、分享经验和与他人互动的社交化和互动性空间。,提升了用户对其的满意度和使用体验。
关键词:Spring Boot技术框架;个人博客网站系统;Java开发语言;MYSQL数据库
Abstract
With the development of the Internet and the arrival of the information age, personal blog has become an important platform for many people to share and exchange knowledge. The design and implementation of a personal blog website system based on Spring Boot can provide a stable, efficient, and easy to maintain platform for network communication, sharing, and interaction, meet user needs, and provide them with a good user experience and management functions.
This system is developed based on practical applications, using Java development language and MySQL relational database. Based on the Spring Boot development framework, it quickly builds a personal blog website system that is suitable for web platforms and combines the advantages of simplicity, convenience, simplicity, efficiency, and security. It provides users with a social and interactive space to showcase themselves, share experiences, and interact with others., Improved user satisfaction and user experience.
Keywords: Spring Boot technology framework; Personal blog website system; Java development language; MYSQL database
随着互联网的发展和信息化时代的到来,人们对于在线交流和知识分享的需求不断增强,在当前社交化和信息化的时代背景下,个人博客作为一种自由表达和知识分享的平台,扮演着越来越重要的角色,有助于个人展示和传播思想,促进交流和学习。随着越来越多的人加入到博客创作和阅读的行列,构建一个高效、稳定、易用的个人博客平台变得至关重要。
本系统以实际运用为开发背景,使用Java开发语言,利用MySQL关系型数据库,基于Spring Boot开发框架,迅速构建起适合Web平台,并集简洁、便捷、简单、高效、安全等优点于一身的个人博客网站系统,为用户提供了展示自我、分享经验和与他人互动的社交化和互动性空间,提升了用户对其的满意度和使用体验。
基于Spring Boot的个人博客网站系统的设计与实现,不仅可以提供一个信息化、社交化、交互性且易于维护的交流和分享的平台,并且提供了一个社交和互动的空间,满足用户需求,提供良好的使用体验,方便用户分享观点,评论博客和参与互动吸引更多用户加入并分享自己的经验和知识,并建立起良好的人际关系和社交网络,增强用户之间的交流与交互性。同时该系统能够提供多元全面的管理功能,方便管理人员进行管理维护。并且该系统具备良好的数据管理和安全性,保障用户数据的隐私和安全,避免信息泄露和安全漏洞。此外个人博客网站系统的开发与实现推动了技术的进步和创新。通过研究个人博客网站系统的功能、性能和用户体验等方面,可以提出新的设计理念和技术解决方案。还能够为其他领域的技术应用提供了参考和借鉴。
目前,国内外有许多关于个人博客系统设计与实现的研究和应用。以下是一些主要的研究情况:
系统框架:在个人博客系统的设计中,常用的框架有Spring Boot、Django、Ruby on Rails等。这些框架提供了快速搭建博客系统所需的核心功能和结构。
用户界面设计:为了提供良好的用户体验,研究者们在个人博客系统的界面设计上进行了许多尝试。其中包括响应式设计、个性化主题、用户友好的编辑器等。
内容管理和发布:个人博客系统的核心功能之一是内容管理和发布。研究者们提出了许多方法和技术来优化博客内容的管理和发布过程,包括标签分类、搜索引擎优化、实时预览等。
移动端适配:随着移动设备的普及,研究者们开始关注个人博客系统在移动设备上的适配。他们提出了响应式设计、移动端优化等方法,以确保博客系统在不同的移动设备上都能提供良好的用户体验。
数据分析和个性化推荐:为了更好地满足用户的需求,研究者们开始关注博客系统中的数据分析和个性化推荐问题。他们通过分析用户的行为和偏好,提供个性化的内容推荐和搜索结果,从而提高用户的满意度和使用体验。
多媒体支持:为了满足用户对多样化内容的需求,研究者们开始探索在个人博客系统中支持多媒体内容,如图片、音频、视频等。他们设计了相应的编辑器和展示界面,以提供更丰富和多样化的内容表达方式。
区块链技术应用:近年来,区块链技术在个人博客系统中的应用也成为研究的热点。研究者们探索了在个人博客系统中使用区块链技术来确保内容的真实性和可信度,以及实现去中心化的博客系统等。
总的来说,个人博客系统的设计与实现研究已经取得了很大的进展,不仅提供了丰富的功能和良好的用户体验,还提高了系统的安全性和稳定性。未来,个人博客系统的发展将更加注重个性化、社交化和智能化等方面的创新。
论文将分层次经行编排,除去论文摘要致谢文献参考部分,正文部分还会对系统需求做出分析,以及阐述大体的设计和实现的功能,最后罗列部分调测记录,论文主要架构如下:
第1章 交代项目的背景、意义、开发这个系统的现状以及论文的章节安排情况。
第2章 对系统的具体需求展开分析。
第3章 阐述了系统的设计,其中涵盖了功能设计以及数据库的设计。
第4章 阐明了个人博客网站系统各个功能模块的实现,以图文的形式进行展示。
第5章 罗列了部分系统调试与测试的记录。
第6章 介绍了个人博客网站系统的结论。
个人博客网站系统设计与实现是一个利用Web平台实现在线互动、分享、交流的平台,我们在实现这个系统所采用的技术方案是采用Java编程语言,采取的是比较流行的Spring Boot框架以及MYSQL数据库,使用Spring Boot框架进行开发,能够使系统的可扩展性和维护性更佳,Java作为一种常用的编程语言,具有广泛的应用领域和成熟的开发生态系统。它提供了丰富的库和工具,使开发人员能够轻松构建各种功能模块。而MySQL作为一种关系型数据库管理系统,具有数据完整性高、稳定性好的特点。因此在技术方面可行的。
在开发个人博客网站系统中所使用的开发软件像IDEA开发工具、Tomcat8.0服务器、MySQL5.7数据库等都是开源免费的,并且所使用的开发环境、技术及工具都在学校进行了系统的学习,能够由作者本人独立操作完成,无需额外花费,而且系统的开发工具也都能够从网上可以直接下载,因此在经济方面是可行的。
当下网络新时代,计算机已经得到了普及,多数人对计算机都比较的熟悉,知道如何使用它,当然也存在对计算机比较陌生的这一群体,也需要对其进行考虑。在进行个人博客网站系统页面的设计的时候,考虑到使用人群,可能也存在对计算机比较陌生的人,所以,在页面的设计方面,设计的很是简单、简洁,布局明了,色调明朗,让无论是对计算机陌生还是对计算机熟悉的使用者,都可以使用自如,这也说明了该程序的操作方面也是非常可行。
按照基于Spring Boot的个人博客网站系统的设计与实现的角色需求分析,主要包括注册用户和管理员这两大功能模块,以上模块又可以细分为小功能模块。以下为各模块功能具体说明:
- 首页:用户登录系统后首先进入的是前台首页页面,可查看轮播图、公告信息、新闻资讯等信息,并可使用系统其他功能。
- 公告信息:查看系统发布的公告信息,包括关于我们、联系方式、网站介绍等信息,及时了解系统动态。
- 新闻资讯:用户可以查看系统的新闻资讯信息,对资讯进行点赞、收藏和评论操作。
- 博客信息:用户可以浏览发布的所有博客信息,包括发布用户、用户姓名、博客标题、博客类别、博客标签、发布日期、关键词语、博客归档、友链信息、博客内容、博客详情等详情信息,并可以对某一博客信息进行点赞、收藏和评论操作。
- 友链信息:用户可以搜索查看发布的友链信息,包括发布用户、用户姓名、友链标题、友链类型、发布日期、友链链接、点赞数、友链内容等详情信息,点击友链链接可跳转到相应页面,并可以对某一友链信息进行点赞、收藏和评论操作。
- 我的账户:用户可以对个人资料和登录密码进行管控和修改。
- 个人中心:在个人中心,用户可以对个人首页、博客信息、友链信息和收藏等信息进行查看和管理,并可添加博客信息和友链信息。
管理员模块:
- 系统用户:管理员可以查阅和管理系统用户信息,包括管理员和注册用户的添加、修改、删除、查阅等操作,确保系统的安全性和用户身份管理。
- 博客类型管理:管理员可以查阅博客类型详情,也能添加和新的博客类型,并可进行删除操作。
- 博客标签管理:管理员可以查阅博客标签详情,也能添加新的博客标签,并可进行删除和修改操作。
- 博客信息管理:管理员可以查阅博客信息详情和查看评论信息,也能添加新的博客信息,并可进行删除操作。
- 友链信息管理:管理员可以查阅友链信息详情和查看评论信息,也能添加新的友链信息,并可进行删除操作;同时可以进入详情页面审核友链信息。
- 系统管理:管理员可以对系统前台的轮播图进行查询、添加、删除和修改操作。
- 公告信息管理:管理员可以对系统的公告信息进行查询、添加、删除和修改操作。
- 资源管理:管理员可以对系统的新闻资讯和新闻分类进行查询、添加、删除和修改操作,并可查看新闻资讯的评论信息。
- 权限管理:管理员可以对用户组权限进行查询和管理,修改用户组增改删查的权限。
个人博客网站系统的非功能性需求比如个人博客网站系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:
表2.1 个人博客网站系统非功能需求表
| 安全性 | 主要指个人博客网站系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
| 可靠性 | 可靠性是指个人博客网站系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
| 性能 | 性能是影响个人博客网站系统占据市场的必要条件,所以性能最好要佳才好。 |
| 可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
| 易用性 | 用户只要跟着个人博客网站系统的页面展示内容进行操作,就可以了。 |
| 可维护性 | 个人博客网站系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
通过2.3功能的分析,得出了本个人博客网站系统的用例图:
个人博客网站系统中注册用户角色用例图如图2.1所示:

图2.1注册用户角色用例图
个人博客网站系统中管理员角色用例图如图2.2所示:

图2.2 管理员角色用例图
登录模块主要满足管理员以及用户的权限登录,用户登录流程如下图所示。

图2.3 登录流程图
未有账号的用户可进入注册界面进行注册操作,用户注册流程如下图所示。

图2.4 注册流程图
用户在添加信息时,信息编号自动生成,系统会对添加的信息进行验证,验证通过则添加至数据库,添加信息成功,反之添加失败。添加信息流程如下图所示。

图2.5 添加信息流程图
用户可选择要删除的信息进行信息删除操作,在删除信息时系统提示是否确定删除信息,是则删除信息成功,系统数据库将信息进行删除。删除信息流程如下图所示。

图2.6 删除信息流程图
系功能模块分成了管理员及注册用户两个模块,每个模块登录进去对应相应的功能,具体的功能模块图如图3.1所示。

图3.1 个人博客网站系统功能模块图
数据库的设计承载者系统的各种数据,在建立数据库的时候,主要是数据库模型的设计以及各个数据库表的设计两部分。
下面是整个个人博客网站系统中主要的数据库表总E-R实体关系图。
图3.2 个人博客网站系统总E-R关系图
通过前面E-R关系图可以看到项目需要创建很多个数据表。以下是项目中的主要数据库表的关系模型:
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
| 2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
| 3 | info | text | 65535 | 0 | Y | N | ||
| 4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
| 5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
| 2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
| 3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
| 4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
| 5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
| 6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
| 9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
| 10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
| 11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
| 12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
| 13 | description | text | 65535 | 0 | Y | N | 文章描述 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
| 2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
| 3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
| 4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
| 5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
| 6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
| 7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
| 8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
| 2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
| 3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
| 4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
| 5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
| 6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
| 7 | position | varchar | 32 | 0 | Y | N | 位置: | |
| 8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
| 9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
| 10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
| 11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
| 12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
| 13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
| 14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
| 15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
| 16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
| 17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
| 18 | option | text | 65535 | 0 | Y | N | 配置: | |
| 19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | blog_classification_id | int | 10 | 0 | N | Y | 博客分类ID | |
| 2 | blog_categories | varchar | 64 | 0 | Y | N | 博客类别 | |
| 3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | blog_information_id | int | 10 | 0 | N | Y | 博客信息ID | |
| 2 | publish_users | int | 10 | 0 | Y | N | 0 | 发布用户 |
| 3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
| 4 | blog_title | varchar | 64 | 0 | Y | N | 博客标题 | |
| 5 | blog_categories | varchar | 64 | 0 | Y | N | 博客类别 | |
| 6 | blog_tags | varchar | 64 | 0 | Y | N | 博客标签 | |
| 7 | blog_cover | varchar | 255 | 0 | Y | N | 博客封面 | |
| 8 | release_date | date | 10 | 0 | Y | N | 发布日期 | |
| 9 | key_words | varchar | 64 | 0 | Y | N | 关键词语 | |
| 10 | blog_archive | varchar | 64 | 0 | Y | N | 博客归档 | |
| 11 | blog_content | text | 65535 | 0 | Y | N | 博客内容 | |
| 12 | blog_details | longtext | 2147483647 | 0 | Y | N | 博客详情 | |
| 13 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
| 14 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
| 15 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
| 16 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 17 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
| 3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 6 | title | varchar | 255 | 0 | Y | N | 标题: | |
| 7 | img | varchar | 255 | 0 | Y | N | 封面: | |
| 8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
| 3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
| 4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
| 5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
| 6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
| 7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表friendly_link_information (友链信息)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | friendly_link_information_id | int | 10 | 0 | N | Y | 友链信息ID | |
| 2 | publish_users | int | 10 | 0 | Y | N | 0 | 发布用户 |
| 3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
| 4 | friend_chain_title | varchar | 64 | 0 | Y | N | 友链标题 | |
| 5 | friend_chain_type | varchar | 64 | 0 | Y | N | 友链类型 | |
| 6 | release_date | date | 10 | 0 | Y | N | 发布日期 | |
| 7 | friendly_link | varchar | 255 | 0 | Y | N | 友链链接 | |
| 8 | friendly_content | text | 65535 | 0 | Y | N | 友链内容 | |
| 9 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
| 10 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
| 11 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
| 12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
| 3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | label_information_id | int | 10 | 0 | N | Y | 标签信息ID | |
| 2 | blog_tags | varchar | 64 | 0 | Y | N | 博客标签 | |
| 3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
| 2 | title | varchar | 125 | 0 | N | N | 标题: | |
| 3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
| 4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
| 3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | registered_users_id | int | 10 | 0 | N | Y | 注册用户ID | |
| 2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
| 3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
| 4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
| 5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
| 6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
| 2 | title | varchar | 64 | 0 | Y | N | 标题: | |
| 3 | content | varchar | 255 | 0 | Y | N | 内容: | |
| 4 | url | varchar | 255 | 0 | Y | N | 链接: | |
| 5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
| 6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
| 7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
| 2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
| 3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
| 4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
| 5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
| 6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
| 7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
| 8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
| 2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
| 3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
| 4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
| 5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
| 6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
| 7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
| 8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
| 9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
| 10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
| 11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
| 12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
| 13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
| 14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
| 16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
表user_group (用户组:用于用户前端身份和鉴权)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
| 2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
| 3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
| 4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
| 9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
管理员、用户在登录界面输入账号+密码,完成验证,点击“登录”按钮,系统在用户数据库表中会对管理员、用户的账号进行匹配,账号+密码正确的话,就会登录到系统中各个用户的主管理界面,否则提示对应的信息,返回到登录的界面,其主界面展示如下图4.1所示。
图4.1 登录界面图
登录代码如下:
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
Duration duration = Duration.ofSeconds(7200L);
redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
密码修改代码如下:
/**
* 修改密码
* @param data
* @param request
* @return
*/
@PostMapping("change_password")
public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
// 根据Token获取UserId
String token = request.getHeader("x-auth-token");
Integer userId = tokenGetUserId(token);
// 根据UserId和旧密码获取用户
Map<String, String> query = new HashMap<>();
String o_password = data.get("o_password");
query.put("user_id" ,String.valueOf(userId));
query.put("password" ,service.encryption(o_password));
int count = service.selectBaseCount(service.count(query, service.readConfig(request)));
if(count > 0){
// 修改密码
Map<String,Object> form = new HashMap<>();
form.put("password",service.encryption(data.get("password")));
service.update(query,service.readConfig(request),form);
return success(1);
}
return error(10000,"密码修改失败!");
}
当用户想要进行资料相关信息的查询管理的时候,就必须进行登录,如果没有账号的话,在登录界面,点击“注册”按钮就会跳转到注册的界面,根据提示填写好注册信息,添加提交,注册的信息在数据库中就添加完成了,然后再输入填写好的账号和密码进行登录,其主界面展示如下图4.2所示。
图4.2 注册界面图
注册代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
用户登录系统后首先进入的是前台首页页面,可查看轮播图、公告信息、新闻资讯等信息,并可使用系统其他功能。界面如下图所示。
图4.3 前台首页界面图
用户可以浏览发布的所有博客信息,包括发布用户、用户姓名、博客标题、博客类别、博客标签、发布日期、关键词语、博客归档、友链信息、博客内容、博客详情等详情信息,并可以对某一博客信息进行点赞、收藏和评论操作。界面如下图所示。
图4.4 博客信息详情界面图
用户可以搜索查看发布的友链信息,包括发布用户、用户姓名、友链标题、友链类型、发布日期、友链链接、点赞数、友链内容等详情信息,点击友链链接可跳转到相应页面,并可以对某一友链信息进行点赞、收藏和评论操作。界面如下图所示。
图4.5 友链信息界面图
用户在个人中心,用户可以对个人首页、博客信息、友链信息和收藏等信息进行查看和管理,并可添加博客信息和友链信息。。界面如下图所示。
图4.6 个人中心界面图
管理员可以查阅和管理系统用户信息,包括管理员和注册用户的添加、修改、删除、查阅等操作,确保系统的安全性和用户身份管理。界面如下图所示。
图4.7系统用户界面图
管理员可以查阅博客信息详情和查看评论信息,也能添加新的博客信息,并可进行删除操作。界面图如下所示。
图4.8博客信息管理界面图
管理员可以查阅友链信息详情和查看评论信息,也能添加新的友链信息,并可进行删除操作;同时可以进入详情页面审核友链信息。界面如下图所示。
图4.9友链信息管理详情界面图
管理员可以对系统前台的轮播图进行查询、添加、删除和修改操作。界面如下图所示。
图4.10系统管理界面图
管理员可以查阅友链信息详情和查看评论信息,也能添加新的友链信息,并可进行删除操作;同时可以进入详情页面审核友链信息。界面如下图所示。
图4.11公告信息管理界面图
管理员可以对系统的新闻资讯和新闻分类进行查询、添加、删除和修改操作,并可查看新闻资讯的评论信息。界面如下图所示。
图4.12资源管理界面图
管理员可以对用户组权限进行查询和管理,修改用户组增改删查的权限。界面如下图所示。
图4.13权限管理界面图
-
5 章 系统测试
- 系统测试目的
通过前面章节的介绍,我们可以看到个人博客网站系统已经完成了,但是能不能投入使用还是未知,因为在每个项目正式使用之前必须对开发的项目进行测试,如果不进行测试一旦投入使用可能会出现很多未可知的问题,比如使用人数太多导致系统瘫痪,比如某一功能存在bug信息填写错误等,这些错误将给使用者带来很多的困扰,甚至造成更大的损失,因此测试是项目投入使用的最后一步,为用户提供一个运行顺畅、完美的项目也就是我们进行最后测试的目的。
(1)登录测试
登录测试用例如下表所示。
表6-1 登录测试用例
| 测试用例编号 | YL_01 | |
| 测试用例名称 | 系统使用者登录 | |
| 测试用例描述 | 登录者输入用户名、密码和验证码 | |
| 系统入口 | 浏览器 | |
| 步骤 | 预期结果 | 实际结果 |
| 输入正确的用户名、密码和验证码 | 提示“登录成功”,并进入系统 | 预期结果 |
| 输入错误的用户名、密码和验证码 | 提示“登录失败”,并返回登录界面 | 预期结果 |
| 不输入用户名、密码和验证码 | 提示“请输入完整” | 预期结果 |
(2)注册测试
注册测试用例如下表所示。
表6-2 注册测试用例
| 测试用例编号 | YL_02 | |
| 测试用例名称 | 系统使用者注册账号 | |
| 测试用例描述 | 使用者输入用户名、密码以及个人信息进行账号注册 | |
| 系统入口 | 浏览器 | |
| 步骤 | 预期结果 | 实际结果 |
| 输入系统不存在的用户名、密码和个人信息 | 提示“注册成功” | 预期结果 |
| 输入系统已存在的用户名 | 提示“注册失败”,并返回注册界面 | 预期结果 |
| 不输入用户名、密码和个人信息 | 提示“请输入完整” | 预期结果 |
(3)添加新闻资讯测试
添加新闻资讯测试用例如下表所示。
表6-3 添加新闻资讯测试用例
| 测试用例编号 | YL_03 | |
| 测试用例名称 | 系统使用者进行添加新闻资讯 | |
| 测试用例描述 | 使用者点击添加,进行输入新闻资讯相关内容信息 | |
| 系统入口 | 浏览器 | |
| 步骤 | 预期结果 | 实际结果 |
| 输入完整正确的新闻资讯信息 | 提示“添加成功”,并进入系统 | 预期结果 |
| 不输入的新闻资讯某一内容 | 提示“请输入完整” | 预期结果 |
添加博客信息测试用例如下表所示。
表6-4 添加博客信息测试用例
| 测试用例编号 | YL_04 | |
| 测试用例名称 | 系统使用者进行添加博客信息 | |
| 测试用例描述 | 使用者点击添加,进行输入博客信息相关内容信息 | |
| 系统入口 | 浏览器 | |
| 步骤 | 预期结果 | 实际结果 |
| 输入完整正确的博客信息 | 提示“添加成功”,并进入系统 | 预期结果 |
| 不输入的博客信息某一内容 | 提示“请输入完整” | 预期结果 |
通过编写个人博客网站系统的测试用例已经检测完毕用户的用户登录、注册、添加新闻资讯测试、添加博客信息测试等功能测试,在对以上功能得测试过程中,发现了系统中的很多漏送并进行了完善,经过多人在线进行测试,系统完全可以正常运行,当然在后期的维护中系统将不断完善。。
-
结 论
本文总结了个人博客网站系统开发背景与意义,然后阐述了系统的具体业务需求,并根据系统需求对系统结构以及功能模块等进行了详细地设计,选择采用Java开发语言,利用springboot技术框架,采取MySQL数据库实现数据的储存和处理,通过Web平台进行部署和实施,划分并实现整个系统多个不同的功能模块。在分析系统功能需求时,对整个系统的总体架构以及功能模块等进行了分析,并选择合适的系统开发技术完成了对各个模块的开发工作。系统开发完成之后进行了部署,同时进行了系统的测试过程,通过测试证明了系统在功能以及性能等方面都达到了预期的要求,具有较高的稳定性与可靠性。
此时项目已经完成,即使实施的时间不是很长,但是这个过程中需要准备很长的一段时间去对系统设计开发所实践到的技术进行学习。在学习的过程中,我逐渐认识得到了我自身存在的一些不足。在设计的过程中也涉及到了很多自己无法解决的问题,主要通过找专业的网站和论坛来解决这些问题,对于圆满完成我的毕业设计,他们也贡献了很大一部分力量。个人博客网站系统的开发环境和配置都是可以自行安装的,系统使用JAVA开发工具,使用比较成熟的Mysql数据库进行对系统前台及后台的数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得系统运行更具有稳定性和安全性,从而完成实时系统的开发。在以后的学习及工作中,我将继续努力学习计算机方面的技术,以期在平台开发中可以更好更快的实现需求功能。
参考文献
[1]赵彩霞,张栽培,杨璇.基于Java编程导航学习平台开发设计的研究[J].家电维修,2024,(03):62-64.
[2]韩小龙,司珍,吕晓峰,等.基于面向对象编程的Java语言程序设计方法分析[J].集成电路应用,2024,41(01):228-229.DOI:10.19339/j.issn.1674-2583.2024.01.103.
[3]赵旭东.计算机软件开发与设计中Java语言的应用研究[J].信息与电脑(理论版),2023,35(24):31-33.
[4]王科翔,刘星含,娄志城,等.基于Spring Boot+Vue框架的智慧学习平台的设计与实现[J].无线互联科技,2023,20(14):65-68.
[5]Hongyan W .Construction of Online Teaching System Based on SpringBoot Framework for Normal University Students’ Informatization Teaching Ability Training[C]//[出版者不详],2022:
[6]Li G ,Yong H ,Yunli C .Research on intelligent learning platform system based on Spring Boot[C]//[出版者不详],2022:
[7]姜全坤,邬卓恒,闫娇娇.基于SpringBoot+AdminLTE3的博客管理系统设计与实现[J].信息与电脑(理论版),2021,33(24):124-127.
[8]徐莉,张旭旭.基于Sematic UI个人博客的设计与实现[J].电脑编程技巧与维护,2021,(09):56-58.DOI:10.16184/j.cnki.comprg.2021.09.022.
[9]卢云霞.浅谈个人博客网站的设计与实现[J].内蒙古科技与经济,2021,(17):78-79+81.
[10]刘子凡,郭昱君.基于SpringBoot+Mybatis的个人博客系统设计与实现[J].现代信息科技,2021,5(08):104-107+111.DOI:10.19850/j.cnki.2096-4706.2021.08.029.
[11]钟怡旸,郭昱君.基于Springboot的博客管理系统设计与实现[J].现代信息科技,2021,5(07):18-20+24.DOI:10.19850/j.cnki.2096-4706.2021.07.005.
[12]常佳宁,李阳齐.基于Django的个人博客系统设计开发[J].中国科技信息,2021,(02):75-77.
[13]赵一品.基于Spring Boot和MyBatis的银行知识库管理系统的设计与实现[D].山东大学,2020.DOI:10.27272/d.cnki.gshdu.2020.001250.
[14]罗涛.基于Spring Boot的多用户博客系统的设计研究[D].青海师范大学,2020.DOI:10.27778/d.cnki.gqhzy.2020.000061.
致谢
基于Spring Boot的个人博客网站系统的设计与实现的完成,如何实现的更好,其中付出的努力是很大的,这段时光将会终生难忘。
首先要感谢我的指导老师,谢谢您在设计和论文中给我的指导。在您的细心指导下我才能快速的掌握系统的相关功能,在您的大力帮助下我才能将课本上的知识与自己的项目结合,真正的做到学以致用。感谢您经常牺牲自己的休息时间,利用其丰富的教学和项目经验对我进行指导。
感谢所有教过我的老师,为我倾注了大量的心血,正是你们的谆谆教诲、严谨教学才使我能顺利的完成学业,在此向你们表示深深的感谢。
感谢我的同学们,对我的大力支持及帮助,正是你们不断的帮助、鼓励,给我带来了极大的动力,最终系统可以顺利的运行。我们在交流、谈论的这段时间,将是我未来的财富,我要深深地感谢你们!
毕业在即,在今后的工作和生活中,我会铭记师长们的教诲、同学们的帮助,继续不懈努力和追求,来报答所有支持和帮助过我的人。
请关注点赞+私信博主,免费领取项目源码
2万+

被折叠的 条评论
为什么被折叠?



