1.SpringBoot入门
1.1 步骤
①. 创建springboot工程,填写模块信息,并勾选web开发相关依赖。
②. 创建请求处理类HelloController,添加请求处理方法 hello,并添加注解。
③. 运行启动类,打开浏览器测试。
2.HTTP协议
2.1 概述
-
概念: H yper T ext T ransfer P rotocol ,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
2.2 请求格式
Host | 请求的主机名 |
User-Agent | 浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0 ... Chrome/79,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...) like Gecko |
Accept | 表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有; |
Accept-Language | 表示浏览器偏好的语言,服务器可以据此返回不同语言的网页; |
Accept-Encoding | 表示浏览器可以支持的压缩类型,例如gzip, deflate等。 |
Content-Type | 请求主体的数据类型。 |
Content-Length | 请求主体的大小(单位:字节)。 |
2.3 响应格式
3 Web服务器Tomcat
-
Web服务器是一个软件程序,对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是 "提供网上信息浏览服务" 。
-
springboot内嵌了Tomcat服务器。
4. 请求
4.1 简单参数
- SpringBoot方式
- 请求参数名与方法形参变量名相同
- 会自动进行类型转换
- @RequestParam注解
- 方法形参名称与请求参数名称不匹配,通过该注解完成映射
- 该注解的required属性默认是true,代表请求参数必须传递
4.2 实体参数
- 简单实体对象:请求参数名与形参对象属性名相同,定义POJO接收即可
- 复杂实体对象:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数。
4.3 数组集合参数
- 数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数
- 集合参数:请求参数名与形参集合名称相同且请求参数为多个,@RequestParam 绑定参数关系
4.4 日期类型的参数
- 日期参数:使用 @DateTimeFormat 注解完成日期参数格式转换
- 注意:本方法存在差错,本人还没有操作成功的先例
4.5 JSON类型参数
- JSON参数:JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用 @RequestBody 标识
4.6 路径参数
- 路径参数:通过请求URL直接传递参数,使用{…}来标识该路径参数,需要使用 @PathVariable 获取路径参数
5 响应
- @ResponseBody
- 统一响应结果
6 分层解耦
6.1 三层架构
- controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据。
- service:业务逻辑层,处理具体的业务逻辑。
- dao:数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增、删、改、查。
- 优点:复用性强,便于维护,利于拓展。
6.2 分层解耦
6.3 IOC&DI入门
-
Service层 及 Dao层的实现类,交给IOC容器管理。
-
为Controller及Service注入运行时,依赖的对象。
6.4 IOC详解
- Bean的声明
要把某个对象交给IOC容器管理,需要在对应的类上加上如下注解之一:
注解 | 说明 | 位置 |
@Component | 声明bean的基础注解 | 不属于以下三类时,用此注解 |
@Controller | @Component的衍生注解 | 标注在控制器类上 |
@Service | @Component的衍生注解 | 标注在业务类上 |
@Repository | @Component的衍生注解 | 标注在数据访问类上(由于与mybatis整合,用的少) |
- Bean组件扫描
- 前面声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描。
- @ComponentScan注解虽然没有显式配置,但是实际上已经包含在了启动类声明注解 @SpringBootApplication 中,默认扫描的范围是启动类所在包及其子包。
- 建议不要随便移动包的顺序
6.5 DI详解
- @Autowired注解,默认是按照类型进行,如果存在多个相同类型的bean,将会报出如下错误:
- 通过以下几种方案来解决:
- @Primary
- @Qualifier
- @Resource
-
@Resource 与 @Autowired区别
7 项目(Tlias员工管理系统)
7.1 准备工作
7.1.1 需求 & 环境搭建
7.1.1.1 需求说明
7.1.1.2 环境搭建
7.1.2 开发规范
-
案例基于当前最为主流的前后端分离模式进行开发。
- lREST(REpresentational State Transfer),表述性状态转换,它是一种软件架构风格
- 前后端交互统一响应结果 Result
- 开发流程
7.2 部门管理
7.2.1 查询部门
- 需求
- 思路
7.2.2 前后端联调
7.2.3 删除部门
-
思路
7.2.4 新增部门
- 思路
7.2.5 小结
7.3 员工管理
7.3.1 分页查询
- 分析
- 思路
- 实现
- PageHelper
7.3.2 条件分页查询
- 思路
- 实现
7.3.3 删除员工
- 思路
- 实现
7.3.4 新增员工
- 思路
- 实现
7.3.5 文件上传
7.3.5.1 简介
- 文件上传,是指将本地图片、视频、音频等文件上传到服务器,供其他用户浏览或下载的过程。
- 文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能。
- 页面前端三要素
- 服务器端接受
7.3.5.2 本地上传
在服务端,接收到上传上来的文件之后,将文件存储在本地服务器磁盘中。
在SpringBoot中,文件上传,默认单个文件允许最大大小为 1M。如果需要上传大文件,可以进行如下配置:
7.3.5.3 阿里云OSS
-
阿里云对象存储OSS(Object Storage Service),是一款海量、安全、低成本、高可靠的云存储服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。
- 阿里云OSS-集成
- 小结
7.3.6 修改员工
7.3.6.1 查询回显
- 思路
- 实现
7.3.6.2 修改员工
- 思路
- 实现
7.4 配置文件
7.4.1 参数配置化
- 问题 分析
- 问题解决
7.4.2 yml配置文件
- yml
- yml数据格式
- 对象/Map集合:
-
- 数组/List/Set集合:
- yml配置
在application.properties中配置
在application.yml中配置
7.4.3 @ConfigurationProperties
- 问题分析
- 解决方案
- @ConfigurationProperties 与 @Value