美文网首页互联网技术IT交流圈java
@RequestParam、@RequestBody、@Mode

@RequestParam、@RequestBody、@Mode

作者: 您社交账号的昵称在简书已被使用 | 来源:发表于2019-01-15 15:09 被阅读30次

1. @RequestParam

value:指定参数名,可以省略;

required:是否必须,true or false;

defaultValue:默认值

方法:public  void AA(@RequestParam Map<String Object> map){ };

参数结构:jsonData=json字符串

结果:map = "jsonData"->"json字符串"(json字符串不会被解析,直接当做字符串处理)

2. @RequestBody(前端需要设置contentType="application/json;charset=utf-8")

通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,也可以将其分别绑定到对应的字符串上。

处理HttpEntity传递过来的数据,一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据。

GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。

POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用HandlerAdapter 配置的HttpMessageConverters来解析HttpEntity中的数据,然后绑定到相应的bean上。

@RequestBody用于post请求,不能用于get请求

方法:public  void AA(@RequestParam Map<String Object> map){ };

参数结构:json字符串

结果:map = json字符串会被处理成key-value的形式,接收类型如果是bean,json也会直接被封装成bean

3. @ModelAttribute

将参数绑定到Model对象

当前台界面使用GET或POST方式提交数据时,数据编码格式由请求头的ContentType指定。分为以下几种情况:

1. application/x-www-form-urlencoded,这种情况的数据@RequestParam、@ModelAttribute可以处理,@RequestBody也可以处理。

2. multipart/form-data,@RequestBody不能处理这种格式的数据。(form表单里面有文件上传时,必须要指定enctype属性值为multipart/form-data,意思是以二进制流的形式传输文件。)

3. application/json、application/xml等格式的数据,必须使用@RequestBody来处理。

4. @PathVariable

映射 URL 绑定的占位符

@RequestMapping("test/{ }")

public ApiResult test1(@PathVariable("userId") String userId){

return ApiResult.SUCCESS(JsonUtil.toJsonString(userId));

}

相关文章

网友评论

    本文标题:@RequestParam、@RequestBody、@Mode

    本文链接:https://www.haomeiwen.com/subject/zhkydqtx.html