@RequestParam 和@RequestBody区别
一 引言
本文简单区别介绍一下这两个常用注解的使用,主要包括前端请求方式,前端请求内容格式,后端入参。
二 @RequestParam
参数:
name: 请求参数名,即将请求参数中名为name的给后端参数
value: name和value互为别名,两者的作用一致
required: 是否必须传入该参数,默认为true
defaultValue: 请求参数中没有该参数时的参数默认值
入参请求方式:

1 当使用@RequestParam接收参数时,前端get或post请求都可以,最重要的是contentType一般为application/x-www-form-urlencoded,至于前端参数放在url或者data中都可以,最后请求时均会并入请求URL中。
2 @RequestParam,可以在一个方法中多次使用:
public List<AdminArea> getSelect( @RequestParam(value="queryTableName")String queryTableName, @RequestParam(value="queryAdminCode") String queryCode )
二 @RequestBody
参数:
required:
入参请求方式:

1 @RequestBody接收参数时,必须使用post,一般用json格式进行传参,在前端传入时,可以使用JSON.stringify()进行json字符串转换。参数必须放在data也就是请求体中。
2 @RequestBody,在一个方法中只能使用一次。
三 多种类型参数传递
多种参数传参情况,如后端需要传入String 类型和自定义对象类型的参数,可以将@RequestParam和@RequestBody一起使用:
后端接收参数:
public int get( @RequestParam(value="code")String code, @RequestParam(value="name") String name, @RequestBody Area area ){
前端发送请求:
//json,需放入请求体data var area = { "name":"大名", "class": "一班", } //将需要传入@RequestParam的参数并入请求URL var param = "?code="+"123"+"&name"+"小名"; //ajax请求 $.ajax({ url: url+param, type: "POST", data: JSON.stringify(area), contentType: "application/json", success: function (res) { console.log(res); } })

浙公网安备 33010602011771号