7 SpringMVC处理ajax请求

axios基本认识

axios(){
		// url:" ",请求路径
		// method:" ",请求方式
		// params:{},参数列表,以name=value&name=value的方式发送,而且无论是get还是set都会拼接到请求地址,可以在后端通过req.getParameter()获得
		// data()也是参数列表,以json格式发送请求参数,请求参数保存在请求报文的请求体中,由于get没有请求体不能用get方式,不可通过req.getParameter,只能通过处理json的jar工具来转换成java对象
}.then(function (response) {//response封装了响应的数据,具体是response.data中
    console.log(response);
  })
或者


具体参考Axios中文文档 | Axios中文网 (axios-http.cn)

json格式

{
  "key1": "value1",
  "key2": "value2",
  "key3": true,
  "key4": [1, 2, 3],
  "key5": {
    "nestedKey": "nestedValue"
  }
}
  • json对象采用键值对形式,name:value形式,我们获取到的就是字符串json格式,{“key1”:“value1”,“key”:“value2”…}

@RequestBody处理json格式的请求参数

  • 使用@RequestBody可以获取请求体,用它标识控制器方法的String类型形参,那么这个形参能获取请求体的内容(json)
  • 但是怎么把这个字符串(json)转换为java的实体对象
  • 使用@RequestBody将json格式的参数转换为java对象
    • 导入jackson依赖
    • 在SpringMVC设置注解驱动(已经设置)
    • 在控制器方法形参位置设置一个java对象来接收json格式数据或者使用map集合接收,并使用@RequestBody注解标识
    • json字符串格式自动转换为java对象中的属性,没有对应的属性就不赋值,用map集合也可以接收
       <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.12.5</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.12.5</version>
        </dependency>

@ResponseBody注解响应json格式数据(用的非常多)

  • 将所标识的控制器的方法的返回值作为响应报文的响应体发送给前端
    • 我们之前的控制器方法返回字符串会被视图解析器自动解析为视图
    • 我们可以通过@ResponseBody来表示让他返回的这个字符串(也可以是java对象,但是不能直接用)作为响应体给前端而不是视图
    • 这样我们axios可以从response中读取到数据
  • 使用@ResponseBody注解响应json格式数据给前端
    • 将java对象转换为json字符串,然后通过返回值返回给前端
  • 示例代码
    @PostMapping("/text/response")
    @ResponseBody
    public User textaxios(@RequestBody User user){
        System.out.println(user);
        return user;
    }

	通过@requestBody接收axios发来的json数据,
	然后通过@responseBody发送user对象并且自动转换为json给前端
	上面都需要第三方jakson的jar包和SpringMVC的注解驱动
  • 转换规则
    • java map会转换为json对象
    • java 实体类会转换为json对象
    • java list会转换为json数组

@RestController代替@Controller可以使Controller的所有方法自动加上具有@ResponseBody注解的功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值