RequestBody 和 RequestParam的区别

随笔6天前发布 阡陌暖春
23 0 0

@RequestBody , 需要使用 传入 json格式,#

专门为了application/jsonapplication/xml等设置的

会自动装配到 实体类中

代码

    @RequestMapping(value="test3",method = RequestMethod.POST)
    public void test3(@RequestBody UserDto userDto){
//          from-data 报错 415
//        x-www-form-uriencodéd 报错 415
//        json 报错  400
        System.out.println(userDto);
    }
**package com.example.hello_reqquestparam.common.dto;

public class UserDto {
    private String name;
    private String password;
    private int age;

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "UserDto{" +
                "name='" + name + ''' +
                ", password='" + password + ''' +
                ", age=" + age +
                '}';
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}**

RequestBody 和 RequestParam的区别

一般用于 post 请求

📌 只能装配类型: String, int (不能是 Integer!!!),Boolean 这两种类型

@RequestParam 与 “不写默认”#

相同

都是从 requestParam 作用域中 获取

获取 除了 application/jsonapplication/xml等 方式 提交的内容

form-data
x-www-form-urlencoded

GET POST 都可以获取

都可以用作文件传输,且 必须以 from-data 方式提交, 可用于文件上传

不同:

会不会自动装载 实体类 ?

不写默认 是可以 装载到 实体类中的,

@ReqquestParam 无法装载到 实体类

@ReqquestParam 只支持 简单类型: String、 Ingeger 、Map (只能用于 某一个字段上)

public void test22(@RequestParam HashMap<String,String> hashMap)

作用不同

不写时 ,默认 改参数时可以不传递的

@RequestParam, 一般用于 规定 名字、必选、默认值等 属性

原理:

发起一次POST请求时,若未指定content-type,则默认content-type为application/x-www-form-urlencoded。

即参数会以Form Data的形式进行传递,不会显式出现在请求url中。

请求参数将被放置于request.paramter,解析成map。

在控制台看到,数据就是在Form Data中。

form表单中数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式为application/x-www-form-urlencoded)。

所以urlQuery String ParametersForm Data里的参数都可以通过@RequestParam或者request.getParameter(" ")获取。

(33条消息) @requestbody和@requestparam到底什么作用_Archie_java的博客-CSDN博客_什么情况下需要@requestparam(33条消息)

@RequestBody的使用_justry_deng的博客-CSDN博客_@requestbody

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...