请求响应
概述
- DispatchServlet核心控制器/前端控制器
- HttpServletRequest请求对象
- 获取请求数据
- HttpServletResponse响应对象
- 设置响应数据
请求
Postman
- 一款插件,用于网页调试与发送网页HTTP请求,常用于进行接口测试
简单参数
- 原始方式
- 通过HttpServletRequest请求对象获取
- 基于SpringBoot
实体参数
- 简单实体对象:请求参数名与形参对象属性名相同,定义POJO接受即可
- 复杂实体对象
数组集合参数
- 数组参数
- 请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接受参数
- 集合参数
- 请求参数名与形参集合名称相同且请求参数为多个,@RequestParam绑定参数关系
日期参数
- @DataTimeFormat注解完成日期参数格式转换
Json参数
- JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用@RequestBody标识
路径参数
- 参数已经成为了URL的一部分,需要使用@PathVariable获取路径参数
- 参数应该是动态的:@RequestMapping("/path/{id}")
响应
@ResponseBody
- 类型:方法注解,类注解
- 位置:Controller方法上/类上
- 作用:将方法返回值直接响应,如果返回值类型是实体对象/集合,将会转换为JSON格式响应
- 说明:@RestController=@Controller+@ResponseBody
- 统一响应结果Result
-
public class Result{ //响应码,1成功,0失败 private integer code; //提示信息 private String msg; //返回的数据 private Object data; //…… }
-
{ "code":"1", "msg":"操作成功", "data":... }
-
@RequsetMapping("/...") public Result ...(){ ... return Result.success(...); }
简化版
-
分层解耦
三层架构
- 数据访问,逻辑处理,接受请求、响应数据
- Controller:控制层,接受前端发送的请求,对请求进行处理并响应数据
- service:业务逻辑层,处理具体的业务逻辑
- 需要创建接口
- dao:数据访问层(Data Access Object)(持久层),负责数据的访问操作
- 需要创建接口
分层解耦
- 将new对象换成从容器中拿到对象
- 控制反转Inversion Of Control,IOC
- 对象的创建控制权由程序自身转移到外部(容器)
- 依赖注入Dependency Injection,DI
- 容器为应用程序提供运行时所依赖的资源
- Bean对象
- IOC容器中创建、管理的对象,称之为bean
IOC&DI入门
- 1.将Service及Dao层的实现类交给IOC容器管理
- 加上@Component即可
- 2.为Controller及Service注入运行时依赖的对象
- 在变量前加入@Autowired
- 3.运行测试
IOC详解
- bean名字默认是类名首字母小写,也可以通过value指定名字
- 在SpringBoot集成web开发时,声明控制器bean只能使用@Controller
Bean组件扫描
- 解决方法
- 1.手动指定@ComponentScan(不推荐)
- 2.将代码放在启动类所在包及其子包下
DI详解
- @Autowired注解默认是按照类型进行,如果存在多个相同类型的bean则会报错
- 解决方法
- 1.@Primary,指定优先级
- 2.@Autowired+@Qualifier("bean的名字")
- 3.@Resource(name="bean的名字"):替换@Autowired
- @Autowired是spring提供,@Resource是jdk提供