美文网首页互联网技术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