万网如何上传网站,手机网站加速器,学院实验室建设网站的好处,wordpress admin-ajax.php 漏洞一、概述 记录时间 [2024-10-23] 本文是一个基于 Spring Boot 3 MybatisPlus 的项目实战开发#xff0c;主要涵盖以下几个方面#xff1a;
从零开始的项目创建IDEA 中开发环境的热部署Maven、Swagger3、MybatisPlus 等的配置路由映射知识静态资源访问文件上传功能实现拦截器…一、概述 记录时间 [2024-10-23] 本文是一个基于 Spring Boot 3 MybatisPlus 的项目实战开发主要涵盖以下几个方面
从零开始的项目创建IDEA 中开发环境的热部署Maven、Swagger3、MybatisPlus 等的配置路由映射知识静态资源访问文件上传功能实现拦截器的配置
通过此次开发练习我们能对 MVC 架构有一个简单的了解会使用 Spring Boot 框架进行 Java 项目的开发感受前后端之间是如何传递信息的。可以说这个项目相当于一个后端基础模板在此基础上我们可以按照需求进一步开发若搭配 Vue 进行前端开发便可以搭建出一个简单的前后端分离系统。
考虑到篇幅的问题将分成两篇文章写此为上篇。 二、开发环境搭建
1. 开发工具
此项目需要使用的开发工具如下各种工具通过官网安装读者可进行参考
Windows 11 - 笔记本的系统JDK 17 - springboot3.0 以上最低支持的 jdk 版本官网下载Intellij IDEA 2021.2.2 - 编写 Java 代码的开发工具MySQL 5.7.43 - 本地数据库Navicat 16.0 - 数据库查看 / 测试工具Postman - API 接口测试工具Notepad - 文本修改工具会标记代码颜色 2. 配置 JDK
Java 开发环境JDK搭建参考文章 - Java 开发环境搭建
使用 IDEA 开发不需要配置系统环境变量下载解压就行 3. 配置 Maven
参考文章 - Maven 在 IDEA 中的配置与使用 三、创建 springboot3.0 项目
Spring Boot 项目可以通过官网创建IDEA 集成了 Spring 官网创建项目的方式因此使用 IDEA 创建 Spring Boot 项目在本质上也是通过官网提供的服务 URL 创建的。
1. 新建项目 Spring Initializr
创建路径File New New Project
使用 IDEA 创建 Spring Initializr 项目开发语言选择 Java以 Maven 的方式管理项目。
SDK 和 Java 版本选择刚才下载的 17 版本同时选择以 jar 包的形式对项目进行打包。
然后点击 Next 继续操作。 2. 添加 Web 依赖
在这里我们选择 Spring Boot 的版本在 3.0 以上。
与 2.0 版本相比3.0 版本是一次较大的升级造成了很多不兼容更新。例如最低兼容的 Java 版本为 17底层也切换到了 Spring 6Swagger 的配置也有很大的不同。
然后勾选 Web 依赖Spring Boot 项目会内置 Tomcat自动完成一些 xml 的相关配置。
最后点击 Finish完成创建。 3. 编码设置
设置项目的编码为 UTF-8以防出现中文乱码的情况。
直接搜索 File Encodings 进行查找。 4. 开发环境热部署
在实际的项目开发调试过程中我们会频繁地修改后台类文件导致项目需要重新编译重新启动整个过程非常麻烦影响开发效率。
解决办法设置 Spring Boot 开发环境热部署。
当 IDEA 监测到主程序中的内容发生改变后会自动对项目进行编译和重启此方法可以带来些许便利。
使用 Spring Boot 提供的组件spring-boot-devtools在 IDEA 中进行相应的设置 添加 Maven 依赖
在 pom.xml 文件中添加 dev-tools 依赖
!-- 使用 optionaltrue 表示依赖不会传递即该项目依赖 devtools;其他项目如果引入此项目生成的 JAR 包则不会包含 devtools --
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdoptionaltrue/optional
/dependency修改配置文件
在 application.properties 中配置 dev-tools
# 设置热部署生效
spring.devtools.restart.enabledtrue# 设置重启目录
spring.devtools.restart.additional-pathssrc/main/java# 设置 classpath 目录下的 WEB-INF 文件夹内容修改不重启
# spring.devtools.restart.excludestatic/**修改 IDEA 的设置
修改路径File Settings Build Compiler
勾选 Build project automatically点击 Apply 进行应用使其能自动编译构建项目。 同时勾选上 auto-make点击 Apply 进行应用确保热部署配置成功。
修改路径File Settings Advanced Settings Compiler 5. 运行主程序
找到 Spring Boot 项目的主程序入口后缀名为 xxxApplication点击运行即可启动整个项目。 四、接收 / 处理 HTTP 请求
1. 控制器 RestController
Spring Boot 中提供了两种注解来标识控制器的类负责接收和处理 HTTP 请求分别是 Controller 和 RestController。
Controller返回页面和数据RestController只返回数据默认情况下该注解会将返回的对象数据转换成 JSON 格式。
在前后端分离模式中一般由前端发送 HTTP 请求给后端后端响应请求并返回数据故使用 RestController 注解。
在 com.example.demo 目录下新建 package controller这个包下面放的是控制器类添加上相应的注解后可以接收和处理 HTTP 请求。 2. 路由映射 RequestMapping
路由映射指的是后端服务端规定前端以何种方式发送请求。后端的控制类中的一个方法对应一种请求方式。
或者说是后端给前端规定了一条路径通过这条路径前端发送的消息才能被后端接收到。
这条路径会写在注解 RequestMapping 中。
RequestMapping 可以写在控制类或者具体的方法中也可以两个地方都写整体的路径就是两个拼接起来。如请求 hello1 方法的整体路由为 http://localhost:后端端口号/hello/hello1当注解中只有一个路径参数时可以省略变量名 value但如果还有其他的参数就不可以省略。
// 以下是一个控制类
RestController
RequestMapping(/hello)
public class HelloController {RequestMapping (value /hello1)public String hello1() {return hello }
}HTTP 请求的类型多样如 Get、Post 等在注解中可以规定请求的类型。如果后端规定了请求的类型那么前端要发送相应类型的请求。后端有两种方式规定请求的类型。 第一种修改注解如 Get 请求就把注解修改成 GetMapping以此类推还有 PostMapping、PutMapping 等。第二种在注解中用 method 参数进行标识。
// 以下是一个控制类
RestController
RequestMapping(/hello)
public class HelloController {// 这是一个 get 请求RequestMapping (value /hello1,method RequestMethod.GET)public String hello1() {return hello }// 这是一个 post 请求PostMapping(/hello2)public String hello2() {return login OK;}}3. 测试工具 Postman
浏览器只能发送简单的 Get 请求其他请求可以通过测试工具 Postman 进行测试。 4. 参数传递
前端在发送请求时可以在请求中添加一些参数这些参数会一起发送给后端。
后端通过某种方式可以获取这些参数。
方式一Query Params
前端直接把参数写在请求路径上格式为 参数名参数内容如果有多个参数则使用 字符进行拼接。如 http://localhost:8080/hello?nicknamezhangsanphone123后端可以在方法中添加参数类型来接收参数如 hello(String nickname, String phone)当请求中的参数名称与方法中的参数名称一致时自动识别参数内容。这里的参数传递不是必须的如果前端没传参数但是后端设置了接收则参数的内容为默认的String 类型为 null。
// 测试用 http://localhost:8080/hello
// 测试用 http://localhost:8080/hello?nicknamezhangsanphone123
GetMapping(/hello)
public String hello(String nickname, String phone) {// 参数传递// 当请求中的参数名称与方法中的参数名称一致时自动识别参数内容System.out.println(phone);return hello nickname;
}当请求中的参数名称与方法中的参数名称不一致时后端不会自动识别参数内容需要添加参数映射。参数映射使用注解 RequestParam 来实现作用是把这两个参数名称对应起来。如请求中的参数名称为 nickname方法中的参数名称为 name则需要映射 RequestParam(value nickname) String name默认情况下用了参数映射则这个参数必须传递。解决方式是更改 required false。
// 参数映射
// 当加了参数映射参数必须传递否则报错 (除非加参数 required false)
// 不加映射值可为空
RequestMapping (value /hello1,method RequestMethod.GET)
public String hello1(RequestParam(value nickname,required false) String name) {// 参数传递// 当请求中的参数名称与方法中的参数名称一致时自动识别参数内容// 不一致时添加参数映射System.out.println(hello1....);return hello name;
}参考测试
先确定路由映射的路径方法需要传递的参数。 方式二请求体 Body 封装类
当请求传递的参数数量较多时可以将参数封装到实体类中。在 Spring Boot 项目中编写一个 User 实体类里面有两个参数 username 和 password给它们生成 Getter / Setter toString() 方法。
// 用于封装参数的实体类
public class User {private String username;private String password;public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;}Overridepublic String toString() {return User{ username username \ , password password \ };}
}前端要传递的参数就是 User 类中的这两个参数 username 和 password注意名字不要写错后端会自动把这些参数封装到 user 对象中去。
// 把对象封装到类里注意参数名称相同
PostMapping(/hello2)
public String hello2(User user) {System.out.println(user.toString());return login OK user.getUsername();
}如果前端用 JSON 格式请求则对象前需要加上请求体 RequestBody注意 JSON 格式的参数是有数据类型的如用双引号表示的是字符串类 zhangsan对应 User 类中的参数类型 String。
// 如果前端用 JSON 格式请求则对象前需要加上请求体 RequestBody
PostMapping(/hello3)
public String hello3(RequestBody User user) {System.out.println(user.toString());return login OK user.getUsername();
}参考测试
先确定路由映射的路径方法需要传递的参数。 前端用 JSON 格式请求 方式三通配符
浅看一下
// 通配符请求
// * 一个目录 http://localhost:8080/text/*
// ** 多个目录 http://localhost:8080/text/**/****
GetMapping(/text/**)
public String text() {return 通配符请求;
}参考资料
参考学习视频 - SpringBoot Vue 全栈开发https://www.bilibili.com/video/BV1nV4y1s7ZN/
参考文章 - Java 开发环境搭建https://blog.csdn.net/Sareur_1879/article/details/137963848
参考文章 - Maven 在 IDEA 中的配置与使用https://blog.csdn.net/Sareur_1879/article/details/143091933
参考文章 - Spring Boot 项目是两种创建方式https://blog.csdn.net/Sareur_1879/article/details/139201323
Maven 官网https://maven.apache.org/download.cgi
MVN 仓库https://mvnrepository.com/
Spring Boot 官网https://spring.io/projects/spring-boot
Oracle 官网https://www.oracle.com
IDEA 官网https://www.jetbrains.com.cn/idea/
Postman 官网https://www.postman.com/
Notepad 下载地址https://notepad-plus.en.softonic.com/
WinRAR 下载地址https://www.winrar.com.cn/