基于 Spring Boot 博客系统开发(一)

ops/2024/10/25 6:15:15/

基于 Spring Boot 博客系统开发(一)

本系统是简易的个人博客系统开发,为了更加熟练地掌握SprIng Boot 框架及相关技术的使用。🤓🤓🤓

本系统开发所需的环境及相关软件

操作系统:Windows
Java开发包:JDK 8
spring boot 版本:2.6.13
项目管理工具:Maven 3.8.0
项目开发工具:IntelliJ IDEA
数据库:MySQL
浏览器:谷歌浏览器

系统功能框架图

在这里插入图片描述

  1. 前端使用Spring Boot支持的模板引擎Thymeleaf+jQuery完成页面信息展示
  2. 后端使用Spring MVC+Spring+MyBatis Plus框架进行整合开发

静态资源首页效果预览

静态资源下载链接
在这里插入图片描述

项目结构

创建一个名称为blog_system01的Spring Boot项目,选择Web模块
在这里插入图片描述

数据库设计

文章详情表t_article
在这里插入图片描述
文章评论表t_comment
在这里插入图片描述
文章统计表t_statistic
在这里插入图片描述
用户信息表t_user
在这里插入图片描述
用户权限表authority
在这里插入图片描述
用户权限关联表t_user_authority
在这里插入图片描述

创建数据库并导入测试数据

创建一个名称为blog_system01的数据库,并选择该数据库,然后将本书资源中所提供的blog_system.sql文件导入到blog_system数据库中。
在这里插入图片描述

引入依赖

starters 快捷添加依赖
在这里插入图片描述
所需要的依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.1</version></dependency><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.0</version></dependency><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.10</version></dependency>

编写配置文件

application.properties全局配置文件添加配置

# 应用服务 WEB 访问端口
server.port=8080# 数据源
spring.datasource.driver‐class‐name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/blog_system01
spring.datasource.username=root
spring.datasource.password=root# 显示SQL日志
mybatis‐plus.configuration.log‐impl=org.apache.ibatis.logging.stdout.StdOutImpl# mapper.xml 配置文件路径
mybatis‐plus.mapper‐locations=classpath:mapper/*.xml
# 配置XML映射文件中指定的实体类别名路径
mybatis-plus.type-aliases-package=cn.qvtu.web.domain#Thymeleaf 模板缓存、模板编码、模板样式、指定模板页面存放路径、指定模板页面名称的后缀
spring.thymeleaf.cache=false
spring.thymeleaf.encoding=utf-8
spring.thymeleaf.mode=HTML5
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html

添加分页拦截器

package cn.qvtu.web.config;import com.github.pagehelper.PageInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.Properties;@Configuration
public class MyBatisConfig {@Beanpublic PageInterceptor pageInterceptor(){PageInterceptor pageInterceptor = new PageInterceptor();Properties properties = new Properties();properties.setProperty("helperDialect", "mysql");pageInterceptor.setProperties(properties);return pageInterceptor;}
}

添加代码生成器

代码生成器代码文件需要修改数据库连接信息、生成目录、使用该类的主函数启动。
在这里插入图片描述

package cn.qvtu.web.config;import com.baomidou.mybatisplus.generator.FastAutoGenerator;import java.util.Arrays;
import java.util.Collections;
import java.util.List;/*** 代码生成器*/
public class MyBatisPlusCodeGenerator {public static void main(String[] args) {FastAutoGenerator.create("jdbc:mysql://localhost:3306/blog_system01", "root", "root")// 全局配置.globalConfig((scanner, builder) -> builder.author(scanner.apply("请输入作者名称?")).fileOverride().outputDir("E://"))
// 包配置.packageConfig((scanner, builder) -> builder.parent(scanner.apply("请输入包名?"))).packageConfig(builder-> builder.entity("domain"))
// 策略配置.strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all"))).addTablePrefix("t_").controllerBuilder().enableRestStyle().enableHyphenStyle().entityBuilder().enableLombok().mapperBuilder().enableMapperAnnotation().build()).execute();}// 处理 all 情况protected static List<String> getTables(String tables) {return "all" .equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));}}

代码生成器生成基础文件放入项目

在这里插入图片描述

测试数据库的连接和分页

下面代码执行成功,返回sql日志和输出list对象信息,集合个数为3。🥳🥳🥳

@SpringBootTest
class BlogSystem01ApplicationTests {@Autowiredprivate IArticleService articleService;@Testvoid contextLoads() {PageHelper.startPage(1,3);List<Article> list = articleService.list();System.out.println(list);}}

前端资源引入

静态资源下载链接
在这里插入图片描述

配置404,500等错误页面

只需在template目录下创建error目录,然后将模板按错误码命名,发生404,500等错误时就会统一跳转到指定html页面。
在这里插入图片描述

前端模板结构

在这里插入图片描述

编写controller的页面跳转方法

编写完这些方法,通过http://127.0.0.1:8080/请求这些方法可以返回模板页面

@Controller
public class HomeController {@RequestMapping("/")public String home(){return "client/index";}@RequestMapping("/article")public String article(){return "client/article";}@GetMapping("/login")public String login(){return "client/login";}}

访问效果

在这里插入图片描述


http://www.ppmy.cn/ops/8374.html

相关文章

Avalonia 捕获全局异常(UI线程 和 非UI线程),增加客户端的稳定性

在 App.axaml.cs 中&#xff0c;App类添加下列事件&#xff1b; 1.重写 OnFrameworkInitializationCompleted &#xff0c;会在程序初始化完成后触发 2. 绑定AppDomain中当前域的事件 AppDomain.CurrentDomain.UnhandledException HandleGlobalException; //UI线程 …

38. UE5 RPG 修改火球术的攻击方向以及按住Shift攻击

在前面&#xff0c;我们实现了火球术火球的制作&#xff0c;能够在释放火球术时&#xff0c;角色将播放释放技能动画&#xff0c;并实现了对火球的目标的服务器同步功能。 我们先回忆一下之前完成的内容。 在前面&#xff0c;我们先做了一个Actor&#xff0c;用于承载发射的火…

前端HTML面试题:meta 元素都有什么

在HTML中&#xff0c;<meta> 元素是一个非常重要且常用的元素&#xff0c;它用于表示关于HTML文档的元数据&#xff08;metadata&#xff09;&#xff0c;这些元数据不会直接显示在页面上&#xff0c;但可以被浏览器以及其他网页服务利用。在前端开发的面试中&#xff0c…

使用kafka的几种场景

1.消息异步化 在一个分布式的微服务架构中&#xff0c;实现一个聊天的功能&#xff0c;小明和小红互相给对方发消息&#xff0c;如果有两个netty服务器&#xff0c;小明连的是netty服务器1&#xff0c;小红连的是netty服务器2&#xff0c;现在小明给小红发消息&#xff0c;但是…

HTML知识点

知识点搜索网站 MDN 总的理解 这个东西是用来进行界面设计的&#xff0c;可以看成是一些简单的语法规则&#xff0c;然后创作者根据自己的审美&#xff0c;借助这个工具来进行创作 创建 创建一个html文件之后&#xff0c;输入&#xff01;&#xff0c;连续点击三下tab键&a…

爬虫入门——Request请求

目录 前言 一、Requests是什么&#xff1f; 二、使用步骤 1.引入库 2.请求 3.响应 三.总结 前言 上一篇爬虫我们已经提及到了urllib库的使用&#xff0c;为了方便大家的使用过程&#xff0c;这里为大家介绍新的库来实现请求获取响应的库。 一、Requests是什么&#xff1…

【数据结构】5.ArrayList与顺序表

目录 1.线性表 2.顺序表 2.1接口的实现 3.ArrayList简介 4.ArrayList使用 4.1ArrayList的构造 4.2ArrayList常见操作 4.3ArrayList的遍历 4.4ArrayList的扩容机制 5.ArrayList的具体使用 5.1简单的洗牌算法 5.2杨辉三角 1.线性表 线性表是n个具有相同特性的数据元素…

mysqlySQL中启用慢查询日志并设置阈值

要在MySQL中启用慢查询日志并设置阈值&#xff0c;可以按照以下步骤进行&#xff1a; 编辑MySQL配置文件&#xff1a;打开MySQL的配置文件&#xff08;通常是my.cnf或my.ini&#xff09;&#xff0c;在[mysqld]部分添加或修改以下行来启用慢查询日志并设置阈值&#xff1a; s…