1,请求映射路径与非JSON参数:

  1. - **使用 @RequestMapping 注解:**
  2. - 作用:**设置当前控制器类/方法请求访问路径,如果设置在类上方统一设置当前控制器方法请求访问路径后缀;**
  3. - 如:
@RestController
@RequestMapping("/books")
public class BookController {
    //注入业务层的bean
    @Autowired
    private BookService bookService;

    //设置控制器方法类型
    /**
     * 查询所有
     */
    @GetMapping
    public Result setTextSelectAllBooks(){
        List <Book> books = bookService.selectAllBook();
        //设定返回的结果集
        Integer code = books.size() > 0 ? Code.GET_OK :Code.GET_ERR;
        String msg = books.size() > 0 ? "查询成功":"查询失败";
        return new Result(books,code,msg);
    }

@ResponseBody (方法注解):设置当前控制器方法相应内容为当前返回值,无需解析;

A,Get请求的参数传递:(URL地址传参,请求行)

  - **普通参数:**url地址传参,地址参数名与形参变量名相同,定义形参即可接收参数;
@RequestMapping("/commonParam")
@ResponseBody
public String commonParam(String name ,int age){
    System.out.println("普通参数传递 name ==> "+name);
    System.out.println("普通参数传递 age ==> "+age);
    return "{'module':'common param'}";
}
  - **地址参数与变量名不同的普通参数:**
     - 要使用** @RequestParam** 与地址参数名进行绑定;
     - **注意:当只有一个参数的时候,只要名字对上了就不用@RequestParam也可以进行参数传递;**
@RequestMapping("/commonParamDifferentName")
@ResponseBody
public String commonParamDifferentName(@RequestParam("name")String userName , int age){
    System.out.println("普通参数传递 userName ==> "+userName);
    System.out.println("普通参数传递 age ==> "+age);
    return "{'module':'common param different name'}";
}

@RequestParam : 绑定请求参数与处理器方法形参间的关系;(形参注解)

  - **POJO类型参数:用实体类属性来接收参数:**
     - 请求参数名与形参对象属性名相同;
     - ![image.png](https://cdn.nlark.com/yuque/0/2022/png/25975946/1648624457613-a10725ab-ef63-43f9-a3d5-375f3f3a0bdf.png#clientId=ua0095a9e-3005-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=78&id=u81aa88ee&margin=%5Bobject%20Object%5D&name=image.png&originHeight=78&originWidth=388&originalType=binary&ratio=1&rotation=0&showTitle=false&size=9232&status=done&style=none&taskId=u21c37a54-5dc3-4982-93c1-6a05653d0d1&title=&width=388)
@RequestMapping("/pojoParam")
@ResponseBody
//POJO对象其实就是:实体类对象User
public String pojoParam(User user){
    System.out.println("pojo参数传递 user ==> "+user);
    return "{'module':'pojo param'}";
}
  - **嵌套的POJO类型对象:**POJO对象中包含POJO对象
     - url地址传参格式:![image.png](https://cdn.nlark.com/yuque/0/2022/png/25975946/1648625204860-c1f97c30-b318-4647-b14e-083815ceddac.png#clientId=u1d8e082b-ab3a-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=34&id=u853e81a9&margin=%5Bobject%20Object%5D&name=image.png&originHeight=34&originWidth=652&originalType=binary&ratio=1&rotation=0&showTitle=false&size=8489&status=done&style=none&taskId=u23c67dca-31dc-45fc-9fc4-50f0af431fa&title=&width=659)
//User类中包含Address类对象
public class User {
    private String name;
    private int age;
    private Address address;
}


//Address类:
public class Address {
    private String province;
    private String city;
}


@RequestMapping("/pojoParam")
@ResponseBody
public String pojoParam(User user){
    System.out.println("pojo参数传递 user ==> "+user);
    return "{'module':'pojo param'}";
}
  - **数组参数:**请求参数名与形参对象属性名相同且请求参数为多个,定义数组类型形参即可接收参数:
     - ![image.png](https://cdn.nlark.com/yuque/0/2022/png/25975946/1648625338355-b874a472-020d-42ae-a5d8-21caa68958ce.png#clientId=u1d8e082b-ab3a-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=37&id=ueed47397&margin=%5Bobject%20Object%5D&name=image.png&originHeight=37&originWidth=454&originalType=binary&ratio=1&rotation=0&showTitle=false&size=5728&status=done&style=none&taskId=u991574eb-f447-4649-a036-ed9f29b0d63&title=&width=454)
@RequestMapping("/arrayParam")
@ResponseBody
public String arrayParam(String[] likes){
    System.out.println("数组参数传递 likes ==> "+ Arrays.toString(likes));
    return "{'module':'array param'}";
}
  - **集合保存普通参数**:请求参数名与形参集合对象名相同且请求参数为多个:
     - 要使用 **@RequestParam 绑定参数关系;**
     - ![image.png](https://cdn.nlark.com/yuque/0/2022/png/25975946/1648625462337-41c09f01-08fb-4696-bec9-f6d03750b20c.png#clientId=u1d8e082b-ab3a-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=28&id=u8310bcbe&margin=%5Bobject%20Object%5D&name=image.png&originHeight=28&originWidth=438&originalType=binary&ratio=1&rotation=0&showTitle=false&size=5368&status=done&style=none&taskId=u3601231b-f124-422b-ba5a-2b52934ff64&title=&width=438)
@RequestMapping("/listParam")
@ResponseBody
public String listParam(@RequestParam List<String> likes){
    System.out.println("集合参数传递 likes ==> "+ likes);
    return "{'module':'list param'}";
}

B,Post请求的参数传递:

  - **使用表单进行参数传递,form表单传参;**
  - ![image.png](https://cdn.nlark.com/yuque/0/2022/png/25975946/1648626464013-e3726b2b-7e57-4460-8b92-c0466ede816d.png#clientId=u1d8e082b-ab3a-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=113&id=u6ca2be4c&margin=%5Bobject%20Object%5D&name=image.png&originHeight=113&originWidth=507&originalType=binary&ratio=1&rotation=0&showTitle=false&size=14982&status=done&style=none&taskId=ua50d1b50-0641-43a6-878f-c1573f2c543&title=&width=507)
  - **步骤与Get请求的同理;(略)**

2,JSON的请求参数传递:(传递JSON数据)

3,JSON的响应参数传递:(传递JSON数据)

image.png
image.png

,* JSON对象的参数传递(常用):

A,JSON请求:

在框架中,JSON对象转字符串都由框架来进行

image.png要在 SpringMVC配置类加上这个开启webMVC的功能之一:使用JSON对象作为参数进行传递;
image.png
在请求体中获取的JSON对象,要加上@RequestBody 注解,且该注解只能存在一个,因为一次只有一个请求体;
image.png

嵌套的pojo对象的json对象写法:
image.pngimage.png
image.png

注意:json对象的数组格式:[ … ] ;如果出现格式不对,服务器无法识别,就会出现4000错误;

image.png

B,JSON响应:

image.png