json&请求&三层&IOC

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);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值