1. JSON
1.1 介绍
JSON —> JS对象简谱
格式 1. 数组 [{},{}] ; 2. 对象 { “名字”:值 , “名字”:值 }
1.2 语法格式
1.2.1 前端处理
json和json字符串互换
- 对象转换成字符串 var jsonStr = JSON.stringify(jsonObj)
- 字符串转换成对象 var jsonObj = JSON.parse(jsonStr)
1.2.2 后端处理
1.2.2.1 jackon
作为json处理框架,是SpringMVC中默认使用的JSON解析器
1.2.2.2 处理所用的api
//对象/集合 -> json字符串
ObjectMapper objectMapper=new ObjectMapper();
String s=objectMapper.writeValuesAsString(对象);
//json字符串 -> 对象/集合
//单个对象
ObjectMapper objectMapper=new ObjectMapper();
类 对象 = objectMapper.readValue(json字符串,类或对象.class);
//集合
ObjectMapper objectMapper=new ObjectMapper();
List<类/map> list=objectMapper.readValue(json字符串,new TypeReference<List<类/map>>(){});
注意
boot底层自动处理json的序列化和反序列化,用到的注解是:@ResponseBody @RequestBody 。
2. 响应
//一个方法加了@ResponseBody注解,
//意味着这个方法的返回值会被当成响应体返回给页面
//如果我们方法返回值返回的是List或者对象,springboot会帮咱们把返回值转换成Json格式字符串返回
统一响应结果 Result
3. 请求(接收前端提交过来的参数)
3.1 简单参数
3.1.1 接收传递过来的普通参数的两种方式
- 原始方式 :HttpServletRequest(请求对象)
- springboot方式: 如果是简单参数,参数名与形参变量名相同,定义同名的形参即可接收参数。
- 参数不一致:使用Spring提供的@RequestParam注解完成映射
3.1.2 实体参数
- 简单实体对象:请求参数名与实体类的属性名相同
- 复杂实体对象:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套实体类属性参数。
3.1.3 数组集合参数
- 集合参数:请求参数名与形参集合对象名相同且请求参数为多个,@RequestParam 绑定参数关系
3.1.4 JSON参数(必须有请求体!!!)
- 封装规则:JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数。需要使用 @RequestBody标识。
- @RequestBody注解:将JSON数据映射到形参的实体类对象中(JSON中的key和实体类中的属性名保持一致)
3.1.5 路径参数
- 前端:通过请求URL直接传递参数
- 后端:使用{…}来标识该路径参数,需要使用@PathVariable获取路径参数
4. 三层架构
- Controller:控制层。接收前端发送的请求,对请求进行处理,并响应数据。
- Service:业务逻辑层。处理具体的业务逻辑。
- Dao:数据访问层(Data Access Object),也称为持久层。负责数据访问操作,包括数据的增、删、改、查。
5. Spring IOC/DI
5.1 IOC
5.1.1 控制反转
不再自己new对象,让spring帮你创建
5.1.2 使用步骤
- 1.在目标类上加 @Component 注解
- 2.在需要目标对象的类中使用 @Autowired 注入目标对象
5.1.3 相关注解
创建对象放入spring容器
- @Component
- @Controller 放在web层
- @Service 放在service层
- @Repository 放在dao层
后面三个是语义化注解,和@Component没区别
从容器中获取对象
@Autowired
5.1.4 在多态可以使用
注解加在实现类
@Autowired
接口 对象;
5.2 DI
依赖注入 spring在创建对象的时候给对象赋值 @Component
5.3 SpringBoot的单元测试
在这里插入代码片@SpringBootTest(classes = BootApplication.class)
public class IOCTest {
//找spring容器要对象
@Autowired
//Dog dog;
UserController userController;
@Autowired
UserService userService;
@Autowired
UserDao userDao;
@Test
public void testIOC(){
System.out.println(userController);
System.out.println(userService);
System.out.println(userDao);
}
}