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就能实现自己所需要的样式。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Android]修改应用包名、名称、版本号、Icon以及环境判断和打包

1.修改包名 在Android Studio中更改项目的包名涉及几个步骤: 打开项目结构: 在Android Studio中,确保您处于Android视图模式(在左侧面板顶部有一个下拉菜单可以选择)。 重命名包名: 在项目视图中,找到您的包名&…

论文导读 | 融合大规模语言模型与知识图谱的推理方法

前 言 大规模语言模型在多种自然语言处理相关任务上展现了惊人的能力,如智能问答等,但是其推理能力尚未充分展现。本文首先介绍大模型进行推理的经典方法,然后进一步介绍知识图谱与大模型融合共同进行推理的工作。 文章一:使用思维…

好消息!2023年汉字小达人市级比赛在线模拟题大更新:4个组卷+11个专项,助力孩子更便捷、有效、有趣地备赛

自从《中文自修》杂志社昨天发通知,官宣了2023年第十届汉字小达人市级比赛的日期和安排后,各路学霸们闻风而动,在自己本就繁忙的日程中又加了一项:备赛汉字小达人市级比赛,11月30日,16点-18点。 根据这几年…

C 语言指针怎么理解?

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

【JavaEE初阶】IP协议简介

文章目录 前言🌴IP协议的概念🌳IP数据报🚩IPv4协议头格式🚩IPv6的诞生 🎍IP地址🚩IP地址的格式:🚩IP地址的分类🎈网络号与主机号的划分 🚩特殊的IP地址&#…

【机器学习】八、规则学习

知识图谱与基本概念 基本概念 规则学习定义:从训练数据中学习出一组能用于对未见示例进行判别的规则。 规则定义:规则一般是:语义明确、能描述数据分布所隐含的客观规律或领域概念。 逻辑规则定义:⊕←?1⋀?2⋀?3…⋀??⊕…

任意注册漏洞

目录 一漏洞介绍 二实战演示 三漏洞修复 本文由掌控安全学院 - 小博 投稿 一漏洞介绍 1.未验证邮箱/手机号 情景:应用为了方便用户记录用户名,使用邮箱和手机号作为用户名(因此很多应用在注册的时候就要求用户填写,多数时候…

CTFSHOW -SQL 注入

重新来做一遍 争取不看wp 还是看了。。。。 CTFshow sql注入 上篇(web171-220)更新中 - 掘金 【精选】CTFshow-WEB入门-SQL注入(上)_having盲注_bfengj的博客-CSDN博客 web171 基本联合注入 拿到题目我们已经知道了是sql注入 所以我们可以直接开始 第一题 不会难道哪里去…

Pytorch常用的函数(四)深度学习中常见的上采样方法总结

Pytorch常用的函数(四)深度学习中常见的上采样方法总结 我们知道在深度学习中下采样的方式比较常用的有两种: 池化 步长为2的卷积 而在上采样过程中常用的方式有三种: 插值 反池化 反卷积 不论是语义分割、目标检测还是三维重建等模型&#xff0…

ios 对话框 弹框,输入对话框 普通对话框

1 普通对话框 UIAlertController* alert [UIAlertController alertControllerWithTitle:"a" message:"alert12222fdsfs" pr…

企业大楼门禁,千万不要这么管理!太慢了!

随着社会科技的飞速发展,安全管理已经成为各行业关注的焦点之一。在这个信息化时代,门禁监控系统作为一种全面提升安全性、管理效率的关键工具,逐渐成为企事业单位、学校、医疗机构等场所的不可或缺的一部分。 传统的门禁系统已经无法满足现代…

【移远QuecPython】EC800M物联网开发板的硬件TIM定时器精准延时

【移远QuecPython】EC800M物联网开发板的硬件TIM定时器精准延时 文章目录 导入库定时器初始化延时函数定时中断回调调用函数打包附录:列表的赋值类型和py打包列表赋值BUG复现代码改进优化总结 py打包 首先 这个定时器是硬件底层级别的 优先级最高 如果调用 会导致GN…

JavaScript库:jQuery,简化编程

jQuery介绍 官方网站: https://jquery.com jQuery 是一个 JavaScript 库 。极大地简化了 JavaScript 编程,例如 JS 原生代码几十行 实现的功 能, jQuery 可能一两行就可以实现,因此得到前端程序猿广泛应用。(现在处在比较边…

IO数据采集卡

串口modbus rtu 网口

微信自动添加好友

简要描述: 添加微信好友 请求URL: http://域名地址/addUser 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明wId…

记一次 .NET 某券商论坛系统 卡死分析

一:背景 1. 讲故事 前几个月有位朋友找到我,说他们的的web程序没有响应了,而且监控发现线程数特别高,内存也特别大,让我帮忙看一下怎么回事,现在回过头来几经波折,回味价值太浓了。 二&#…

性能测试?

一、什么是性能测试 先看下百度百科对它的定义 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试 我们可以认为性能测试是:通过在测试环境下对系统或构件的性能进行探测,用以验证在生产环境下系统性能…

MySQL是如何进行排序的,ORDER BY是如何执行的

MySQL 会给每个线程分配一块内存用于排序,称为 sort_buffer。 假设找出在杭州居住的人,按名字排序前1000个人(假设city有索引,那么非常舒服,不用全表扫描) select city,name,age from t where city杭州 or…

在qt的设计师界面没有QVTKOpenGLWidget这个类,只有QOpenGLWidget,那么我们如何得到QVTKOpenGLWidget呢?

文章目录 前言不过,时过境迁,QVTKOpenGLWidget用的越来越少,官方推荐使用qvtkopengnativewidget代替QVTKOpenGLWidget 前言 在qt的设计师界面没有QVTKOpenGLWidget这个类,只有QOpenGLWidget,我们要使用QVTKOpenGLWidget,那么我们如何得到QVTKOpenGLWidget呢? 不过,时过境迁,Q…

【ML】欠拟合和过拟合的一些判别和优化方法(吴恩达机器学习笔记)

吴恩达老师的机器学习教程笔记 减少误差的一些方法 获得更多的训练实例——解决高方差尝试减少特征的数量——解决高方差尝试获得更多的特征——解决高偏差尝试增加多项式特征——解决高偏差尝试减少正则化程度 λ——解决高偏差尝试增加正则化程度 λ——解决高方差 什么是…