SpringBoot从零到一项目实战落地博客系统(附源码!!!)

1.项目内容

1.1.页面展示

在这里插入图片描述

1.2.博客分类

在这里插入图片描述

1.3.面试辅导

在这里插入图片描述

1.4.私教带徒

在这里插入图片描述

1.5.文章编辑

在这里插入图片描述

1.6.后台管理

在这里插入图片描述

2.项目架构及技术描述

2.1.本项目用到的技术和框架
  • 项目构建:Maven
  • web框架:Springboot
  • 数据库ORM:Mybatis
  • 数据库连接池: HikariCP
  • 分页插件:PageHelper
  • 数据库:MySql
  • 缓存:Redis
  • 前端模板:Thymeleaf
  • 文章展示:Editor.md
2.2.本项目中的关键点
  • 采用Springboot开发,数据库使用连接池加orm框架的模式,对于系统的关键业务使用Redis缓存,加快相应速度。
  • 整体系统采用门户网站+后台管理+用户个人中心的方式搭建,门户网站展示博客内容以及博主介绍,后台管理用于编辑文章,查看反馈,管理评论留言。
  • 使用华为云obs进行静态资源存储,以及CDN全站加速。
2.3.开发环境
工具名称
开发工具IDEA
语言JDK1.8、Html、css、js
数据库MySQL5.6
ORMMybatis
安全框架SpringSecurity
缓存Redis
项目构建Maven
运行环境华为云Centos
2.4.结构设计

在这里插入图片描述在这里插入图片描述

3.功能描述

3.1.主页
  • 博客汇总,以列表形式展示文章,并附上文章作者、发布日期、分类情况以及文章简要
  • 能够以分类形式查看文章
  • 能够以时间列表方式归档文章
  • 可实现通过标签查找所有相关文章
  • 个人介绍、联系方式
  • 博客网站更新记录
  • 友链链接
3.2后台管理
  • 网站仪表盘,记录网站访客量情况
  • 文章管理
  1. 分页展示文章信息
  2. 可对文章进行再编辑以及删除文章
  • 发布文章
  1. 使用markdown编辑器,支持插入代码,插入图片等功能
  2. 文章可选择分类和标签,以及转载文章支持链接原作者文章
  • 分类管理,支持增加、删除、修改分类

  • 友情链接

  1. 支持增加友情链接
  2. 支持删除友情链接
  • 反馈信息管理,可查看用户反馈信息
3.3.安装部署
  • 支持-jar方式
  • 使用springboot自带方式打包

4.项目业务设计

4.1.发表文章流程

在这里插入图片描述

4.2.登录流程

在这里插入图片描述

4.3.用户个人资料修改流程

在这里插入图片描述

4.4.打包、部署和运行
  • 本项目采用Springboot的maven插件进行打包,打包结果:**.jar
  • 部署方式:使用 nohup java -jar .jar >.log 2>&1 &的方式,后台启动项目,并在该路径下生成运行日志。
4.5.数据库设计

用户表:user

名称类型长度主键非空描述
idint11truetrue主键、自增
phonevarchar255falsetrue手机号
usernamevarchar255falsetrue用户名
passwordvarchar255falsetrue密码
genderchar50falsetrue性别
trueNamevarchar255falsefalse姓名
birthdaychar100falsefalse生日
emailvarchar255falsefalse邮箱
personalBriefvarchar255falsefalse个人简介
avatarImgUrlvarchar255falsetrue头像url
recentlyLandedvarchar255falsefalse最近登录时间

文章表:article

名称类型长度主键非空描述
idint11truetrue主键,自增
articleIdbigint20falsetrue作者
originalAuthorvarchar255falsetrue文章原作者
articleTitlevarchar255falsetrue文章标题
articleContentlongtext0falsetrue文章内容
articleTagsvarchar255falsetrue文章标签
articleTypevarchar255falsetrue文章类型
articleCategoriesvarchar255falsetrue文章分类
publishDatevarchar255falsetrue发布文章日期
updateDatevarchar255falsetrue更新文章日期
articleUrlvarchar255falsetrue文章url
articleTabloidint255falsetrue文章摘要
likesint11falsetrue文章喜欢数
lastArticleIdbigint20falsefalse上一篇文章id
nextArticleIdbigint20falsefalse下一篇文章id

评论记录表:comment_record

名称类型长度主键非空描述
idbigint20truetrue主键,自增
pIdbigint20falsetrue文章原作者
answererIdint11falsetrue评论者id
respondentIdint11falsetrue评论日期
likesint11falsetrue评论点赞数
commentContenttext0falsetrue评论内容

5.开发流程

5.1.数据库CRUD
  • controller层中编写前端接口,接收前端参数
  • service层中编写所需业务接口,供controller层调用
  • 实现service层中的接口,并注入mapper层中的sql接口
  • 采用Mybatis的JavaConfig方式编写Sql语句。由于并没有使用Mybatis的逆向功能,需要自己手写所有sql语句
  • 关于事务的实现,在启动类中开启事务,并在service层需要实现事务的业务接口上使用@Transactional注解,还是十分方便的
  • 本项目开发并不是很难,只是在业务的实现上比较复杂
  • 页面与展示
  • 作为一名后端开发,对于css的功力有所欠缺,这里我从百度下载对应的UI,极大的减少了页面的开发难度.
  • 前端页面与后端的交互主要是在controller包中,并使用Thymeleaf渲染页面。
  • 自定义异常处理页面,通过重写WebMvcConfigurerAdapter实现自动跳转到404、403页面
5.2.其他功能
  • 使用lazyload插件实现页面图片懒加载
  • 后台实时记录当天访客量,便于了解博客日常访问量
  • 分析访问量最多的数据,主要在于文章访问部分,将文章放入redis缓存。每次编辑完文章后,更新缓存
  • 使用华为云互联网中间件的业务实时监控服务,对于网站性能的了解以及优化有很大的帮助
5.3.网站建设
  • 服务器选用的是华为云centos7
  • 域名是华为云上购买的域名
  • 网站备案以及公安机关备案,后者备案时间较短但是那个备案网站经常挂掉,所以公安机关备案还得看运气。而网站备案时间就比较长了,按照华为云的流程走大概1个月左右时间,需要上传个人身份信息以及邮寄个人资料过去。
  • 网站配置了安全证书,可实现https访问以及自动从http跳转到https。

6.开发中遇到的难点

  • 要实现在一个页面进行权限验证,如果验证不成功会跳转到登录界面,并且登录成功后还要返回到之前界面,这里由于对SpringSecurity内部原理的不了解,所以我这里采用的方法是利用请求头和响应头存储url,并在登录成功后的页面出跳转到响应头中存储的url处。
  • 上传头像处使用上传头像至华为云的OBS对象存储中,由于上传问题并没有返回上传成功后的图片url地址,于是只好设置OBS的Bucket为公共读权限,然后当上传成功后手动拼接图片url并存入数据库。
  • 项目中最大的难点还是莫过于页面css的设计,但是使用了妹子UI后极大的解决了这个问题,只需修改少量css就能实现自己所需要的样式。

网站源码获取方式:关注公众号,回复关键字:博客源码
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/144303.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件测试行业趋势分析

1 绪论 本文先对互联网对时代和社会变革进行了论述,然后再由互联网时代对软件工业模式变革进行了介绍,最后引出附属于软件工业的测试行业在新形势下的需求变化,并对趋势进行了分析,并最终给出了相关的从业人员的职业发展建议。 …

【极客时间-系列教程】Vim 实用技巧必知必会-更多常用命令:应对稍复杂的编辑任务

文章目录 更多常用命令:应对稍复杂的编辑任务光标移动文本修改文本对象选择 更多常用命令:应对稍复杂的编辑任务 几个基本的命令已经了解了,可以操作简单的任务,但一些很复杂的命令,并没有了解到,只知道几…

Freeswitch实现坐席状态

1.呼叫中心的坐席状态 官网地址:mod_callcenter | FreeSWITCH Documentation 2.对应关系 登儒:login 》 Login(暂时没有这个明确,调用下面方法不过没有事件返回,可以用Onbreak代替) EslMessage eslMessag…

SNMP监控解决方案

简单网络管理协议(SNMP)是一种网络协议,可帮助在设备之间传输数据,从而管理和监控互联网协议网络中存在的设备。网络连接着一系列设备,随着技术趋势的发展,新设备被引入其中。 网络上的大多数设备都支持网…

AI创作系统ChatGPT源码+AI绘画系统+支持OpenAI DALL-E3文生图,可直接对话文生图

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。新增支…

java中常见的设计模式

最早概念是在建筑领域产生的,后来被引入到软件开发领域。 模式是解决一类问题的固定写法,一个模式用来解决一种问题,经过反复优化,最终得出来的。之前的程序员们,在工作中对某一类问题解决方式进行总结归纳&#xff0…

【java学习—十四】Class类(2)

文章目录 1. Class类2. Class类的常用方法3. 实例化Class类对象(四种方法) 1. Class类 在 Object 类中定义了以下的方法,此方法将被所有子类继承: public final Class getClass() 以上的方法返回值的类型是一个 Class 类&#xf…

负载均衡原理

负载均衡原理是什么? 负载均衡Load Balance)是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。负载均衡,其核心就是网络流量分发,分很多维度。 …

修炼k8s+flink+hdfs+dlink(七:flinkcdc)

一 :flinkcdc官网链接。 https://ververica.github.io/flink-cdc-connectors/release-2.1/content/about.html 二:在flink中添加jar包。 在flink lib目录下增加你所需要的包。 https://kdocs.cn/join/gv467qi?f101 邀请你加入共享群「工作使用重要工具…

RobotFramework常见问题如何解决 ?

附加-问题解决 1. 执行robot用例的时候提示WebDriverException: Message: invalid argument: cant kill an exited process 查看驱动的log是否是提示 如果是的话,参照第七步安装图形界面 2. jenkins启动后发现打不开jenkins页面的问题解决 打开jenkins页面提…

CNN进展:AlexNet、VGGNet、ResNet 和 Inception

一、说明 对于初学者来说,神经网络进展的历程有无概念?该文综合叙述了深度神经网络的革命性突破,从AlexNet开始,然后深度VGG的改进,然后是残差网络ResNet和 Inception,如果能讲出各种特色改进点的和改进理由…

Springboot监控

1. 监控的理解 什么是监控?就是通过软件的方式展示另一个软件的运行情况,运行的情况则通过各种各样的指标数据反馈给监控人员。例如网络是否顺畅、服务器是否在运行、程序的功能是否能够整百分百运行成功,内存是否够用,等等等等。…

Jordan 引理

See https://wuli.wiki/online/JdLem.html#ex_JdLem_1

嵌入式工作岗位未来会不会越来越少?

今日话题,嵌入式工作岗位未来会不会越来越少?未来的嵌入式岗位机会将会逐渐增多,因为嵌入式技术是万物互联的基础,从智能手表到智能汽车,嵌入式都扮演着关键角色。虽然相比计算机科学CS,嵌入式领域的天花板…

libgdx播放视频、libgdx播放MP4、libgdx播放动画(二十二)

libgdx播放视频、libgdx播放MP4、libgdx播放动画 转自:https://lingkang.top/archives/libgdx-bo-fang-shi-pin 转自:https://lingkang.top/archives/libgdx-bo-fang-shi-pin 转自:https://lingkang.top/archives/libgdx-bo-fang-shi-pin 最…

(C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。

要求&#xff1a;原始数组的数据从键盘随机输入&#xff0c;新数组以4行4列的方式输出。 #include<stdio.h> int main() {int matrix[4][4],matrix2[4][4];int count;for(int i 0;i < 4;i )for(int j 0;j < 4;j )scanf("%d",&matrix[i][j]);for(i…

Day40 Advanced Docking System使用方法

1.ads简介 Qt自带的铆接部件是QDockWidget&#xff0c;也被称为浮动窗口部件。QDockWidget可以用来创建可停靠的面板&#xff0c;它能够与QMainWindow、QDialog或任何具有centralWidget的QMainWindow派生类进行连接。QDockWidget提供了一个框架&#xff0c;允许用户将内容面板放…

C 语言指针怎么理解?

今日话题&#xff0c;C 语言指针怎么理解&#xff1f;让我用更简洁的方式来表达这个内容&#xff1a;就像桌面上的快捷方式一样&#xff0c;指针也可以有多层引用。我们可以将指针比作快捷方式的图标&#xff0c;快捷方式可以指向游戏&#xff08;普通指针&#xff09;&#xf…

think5和fastadmin验证规则的使用

在fastadmin中使用验证规则只需要两步即可 第一步 首先在控制器中开启验证规则 protected $modelValidatetrue;//开启验证规则protected $modelSceneValidatetrue;//开启场景验证第二步 在 app\admin\validate 和控制器对应的 validate 中添加 验证规则以及场景验证 <?…

汽车SOA架构设计方法及关键技术

SOA概述 软件定义汽车时代&#xff0c;面向服务的软件架构&#xff08;Service Oriented Architecture, SOA&#xff09;为软件定义汽车提供了一套良好的解决方案。 Q&#xff1a;什么是SOA&#xff1f; SOA将车辆传统的面向信号的架构升级为面向服务的架构&#xff0c;面向…