@RequestBody , 需要使用 传入 json格式,#
专门为了
application/json
和application/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;
}
}**
一般用于 post 请求
📌 只能装配类型: String, int (不能是 Integer!!!),Boolean 这两种类型
@RequestParam 与 “不写默认”#
相同
都是从 requestParam 作用域中 获取
获取 除了 application/json
和application/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)。
所以url
、Query String Parameters
、Form Data
里的参数都可以通过@RequestParam
或者request.getParameter(" ")
获取。
(33条消息) @requestbody和@requestparam到底什么作用_Archie_java的博客-CSDN博客_什么情况下需要@requestparam(33条消息)
@RequestBody的使用_justry_deng的博客-CSDN博客_@requestbody