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.hqwc.cn/news/171858.html

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

相关文章

Java数据结构

Java 数据结构 数据结构主要包括以下几种接口和类: 枚举(Enumeration) 接口定义了一种从数据结构中取回连续元素的方式。 nextElement 的方法,该方法用来得到一个包含多元素的数据结构的下一个元素。 位集合(BitSet…

2023数字科技生态展,移远通信解锁新成就

11月10日,以“数字科技,焕新启航”为主题的中国电信2023数字科技生态大会暨2023数字科技生态展在广州盛大启幕。作为物联网行业的龙头标杆,同时更与中国电信连续多年维持稳定友好的合作关系,移远通信受邀参加本次展会。 在本次展会…

网络安全-学习手册

前言 前几天发布了一篇 网络安全(黑客)自学 没想到收到了许多人的私信想要学习网安黑客技术!却不知道从哪里开始学起!怎么学 今天给大家分享一下,很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习…

XML Web 服务 Eclipse实现中的sun-jaxws.xml文件

说明 在sun-jaxws.xml文件,可以配置endpoint、handler-chain等内容。在这个文件中配置的内容会覆盖在Java代码中使用注解属性配置的的内容。 这个文件根据自己的项目内容修改完成以后,作为web应用的一部分部署到web容器中(放到web应用的WEB…

61基于matlab的GWO算法的参数工具箱,图形界面,目标函数的默认名称为CostFunction。

基于matlab的GWO算法的参数工具箱,图形界面,目标函数的默认名称为CostFunction。如果您查看了CostFunction.m文件,成本函数获取向量([x1 x2…xn])中的变量并返回目标值。可以在该文件中编写目标函数,也可以…

sinc 函数

See https://wuli.wiki/online/sinc.html 公式(3)的证明见 https://wuli.wiki/online/JdLem.html#ex_JdLem_1 百度百科

XMind 2023 mac/win:引领思维导图革命,让思维更直观、更高效!

XMind是一款引领思维导图的革命性软件,以其强大的功能和高效的操作体验,赢得了全球用户的广泛喜爱。作为一款思维导图软件,XMind将复杂的思维过程和想法以直观、清晰的方式呈现出来,让用户能够更好地理解、组织和表达自己的思想。…

SQLite3 数据库学习(一):数据库和 SQLite 基础

参考引用 SQL 必知必会SQLite 权威指南(第二版)关系型数据库概述 1. 数据库基础 1.1 什么是数据库 数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件) 可以将其想象为一个文…

手机能做静态二维码吗?用手机做二维码的教程

现在手机上有很多的功能,能够帮助我们应对日常生活中的各种问题,那么如果我们想要在手机上生成一个静态二维码,大家知道该怎么来操作吗?一般制作二维码需要专业的二维码生成工具才可以完成制作,那么下面小编来给大家分…

Banana Pi BPI-M5 Boot Log 导出说明

准备: Preparation: 1、 一块bpi的开发板,一根ttl的串口线,以及一张烧录好镜像的sd/tf卡(烧录到eMMC也行)。 1. A BPI development board, a TTL serial port cable, and an SD/TF card with a burned image (it ca…

opencv车牌识别<二>

目录 一、车牌识别算法流程 二、车牌检测 一、车牌识别算法流程 在解释ANPR代码之前,需要明白主要步骤和使用ANPR 算法的任务。ANPR 有两个主要步骤:车牌检测和车牌识别。车牌检测的目的是在整个视频帧中检测到车牌位置。当在图像中检测到车牌时,分割的…