springboot 获取前端json数据几种方法

基本概念

  1. JQuery Ajax 以 application/x-www-form-urlencoded 上传 JSON对象 ,

后端用 @RequestParam 或者Servlet 获取参数。

  1. JQuery Ajax 以 application/json 上传 JSON字符串,

后端用 @RquestBody 获取参数,或者@RequestParam获取。

几个注释

@PathVariable:

一般我们使用URI template样式映射时用,即url/{key}这种形式,也就是一般我们使用的GET,DELETE,PUT方法会使用到的,我们可以获取URL后所跟的参数。

@RequestParam:

一般我们使用该注解来获取多个参数,在注解后括号内写入需要获取参数的参数名即可,一般在PUT,POST中比较常用。注意后端想用这个方法,前端必须x-www-form-urlencoded,而不能加contentType: ‘application/json;charset=UTF-8’,

@RequestBody:

该注解和@RequestParam殊途同归,我们使用该注解将所有参数转换,在代码部分在一个个取出来,也是目前我使用到最多的注解来获取参数。它是用来处理前台定义发来的数据Content-Type: 而不是application/x-www-form-urlencoded编码的内容。例如application/json, application/xml等;使用@RequestBody注解接收参数的时候,从名称上来看也就是说要读取的数据在请求体里,前台的Content-Type必须要改为application/json,所以要发post请求,因为Ajax使用的POST,并且发送的是JSON对象。前端必须指定请求json数据的contentType为:application/json,否则会报类型不支持的异常错误“org.springframework.web.HttpMediaTypeNotSupportedException”

@RequestHeader

获取头信息里的值

@CookieValue

获取Cookie值

示例

参数来自路径

1.get请求,url路径传参

http://localhost:4001/api/unit?code=111

后端要获取code参数,可以使用@RequestParam注解

@RestController
public class HelloController {
    @RequestMapping(value="/hello",method= RequestMethod.GET)
    public String sayHello(@RequestParam Integer id){
        return "id:"+id;
    }
}

2.get请求,url路径参数

http://localhost:4001/api/unit/1

后端使用@PathVariable可以接收路径参数1。

@RestController
public class HelloController {
    @RequestMapping(value="/hello/{id}/{name}",method= RequestMethod.GET)
    public String sayHello(@PathVariable("id") Integer id,@PathVariable("name") String name){
        return "id:"+id+" name:"+name;
    }
}

一般参数来自路径的,为get请求时,使用@PathVariable或者@RequestParam获取参数值,获取路径参数。
@PathVariable一般用于获取获取url/{key}
@RequestParam获取查询参数。即url?name=XX

参数来自请求体Body

一般是post请求,后端接受方式为用map接收,或者实体对象接收

//map接收
@PostMapping(path = "/demo1")
public void demo1(@RequestBody Map person) {
    System.out.println(person.get("name"));
}
 
//或者是实体对象接收
@PostMapping(path = "/demo1")
public void demo1(@RequestBody Person person) {
    System.out.println(person.toString());
}
 
 //或者直接集合的方式,这样前端传的是列表
@PostMapping("/getJson")
@ResponseBody
public List getJsonVal(@RequestBody List person) throws IOException {
    for(User person1: person){
        System.out.println("person1= " + person1);
    }
    return user;
}

参考链接:

https://blog.csdn.net/qq_20957669/article/details/89227840.

https://my.oschina.net/u/4057956/blog/3052388.

你可能感兴趣的:(java,数据库,java,spring,ajax,jquery,java,json)