ajax请求:
1.contentType为application/x-www-form-urlencoded(默认情况,数据传输格式key=value&key=value)
public class User {
private long id;
private Integer age;
private String name;
}
public class Person {
private User user;
private List<User> list;
}
1.1 前端直接传key=value&key=value形式的data:后端可以直接在方法参数上接收,或者通过request.getParameter("key")获取参数
var user = {
id: "111",
age: "18",
name: "唐哲旭"
};
contentType: "application/x-www-form-urlencoded"
data: {
id: "111",
age: "18",
name: "唐哲旭"
}等价于:data:user,
数据在浏览器中的传输格式: id=111&age=18&name=%E5%94%90%E5%93%B2%E6%97%AD
public Object test(User user) {};
或者request.getParemeter("id");
1.2 前端传key=value&key=value形式的data,value为对象:后端无法接收数据
var user = {
id: "111",
age: "18",
name: "唐哲旭"
};
contentType: "application/x-www-form-urlencoded",
data: {
user:user
},
数据在浏览器中的传输格式:user%5Bid%5D=111&user%5Bage%5D=18&user%5Bname%5D=%E5%94%90%E5%93%B2%E6%97%AD
1.3 前端直接传JSON字符串形式的data:后端无法接收数据
var user = {
id: "111",
age: "18",
name: "唐哲旭"
};
contentType: "application/x-www-form-urlencoded",
data: JSON.stringify(user),
数据在浏览器中的传输格式:{"id":"111","age":"18","name":"唐哲旭"}
1.4 前端传key=value&key=value形式的data,value为JSON字符串形式的值:后端无法在方法参数上接收数据,可以通过request.getParameter("key")获取
var user = {
id: "111",
age: "18",
name: "唐哲旭"
};
contentType: "application/x-www-form-urlencoded",
data: {
user:JSON.stringify(user)
},
数据在浏览器中的传输格式:user=%7B%22id%22%3A%22111%22%2C%22age%22%3A%2218%22%2C%22name%22%3A%22%E5%94%90%E5%93%B2%E6%97%AD%22%7D
String user=request.getParemeter("user")
user字符串输出的值:{"id":"111","age":"18","name":"唐哲旭"}
2.contentType: "application/json;charset=utf-8"
2.1 前端传对象形式的data,数据在浏览器中的传输格式还是为key=value&key=value,这时后端无法接收数据
var user = {
id: "111",
age: "18",
name: "唐哲旭"
};
contentType: "application/json;charset=utf-8",
data: user,
数据在浏览器中的传输格式: id=111&age=18&name=%E5%94%90%E5%93%B2%E6%97%AD
2.2 前端直接传JSON字符串形式的data,后端在方法参数上加上@RequestBody注解接收数据
var user = {
id: "111",
age: "18",
name: "唐哲旭"
};
contentType: "application/json;charset=utf-8",
data: JSON.stringify(user),
数据在浏览器中的传输格式:{"id":"111","age":"18","name":"唐哲旭"}
public Object test(@RequestBody User user){};
或者 public Object test(@RequestBody HashMap map){};(map中类型也和前端传的类型对应,比如此时value类型为User)
2.3 前端直接传JSON字符串形式的data,JSON字符串为嵌套类型,后端在方法参数上加上@RequestBody注解接收数据
var person = {
user: {
id: "111",
age: "18",
name: "唐哲旭"
},
list: [{
id: "222",
age: "19",
name: "唐哲旭222"
}, {
id: "333",
age: "20",
name: "唐哲旭333"
}, {
id: "444",
age: "21",
name: "唐哲旭444"
}]
};
contentType: "application/json;charset=utf-8",
data: JSON.stringify(person),
数据在浏览器中的传输格式: {"user":{"id":"111","age":"18","name":"唐哲旭"},"list":[{"id":"222","age":"19","name":"唐哲旭222"},{"id":"333","age":"20","name":"唐哲旭 333"},{"id":"444","age":"21","name":"唐哲旭444"}]}
public Object test(@RequestBody Person person){};
或者 public Object test(@RequestBody HashMap map){};(map中key的名称和value类型都与前端传的类型对应,比如此时key为user和list,value类型为User和 List<User>)
2.4 前端直接传JSON字符串形式的data,字符串的key和后端JavaPojo属性名称不同,在JavaPojo类的属性上加上@JsonProperty("key")注解
public class User {
private long id;
@JsonProperty("user_age")
private Integer age;
@JsonProperty("user_name")
private String name;
}
public class Person {
@JsonProperty("user_user")
private User user;
@JsonProperty("user_list")
private List<User> list;
}
var person = {
user_user: {
id: "111",
user_age: "18",
user_name: "唐哲旭"
},
user_list: [{
id: "222",
user_age: "19",
user_name: "唐哲旭222"
}, {
id: "333",
user_age: "20",
user_name: "唐哲旭333"
}, {
id: "444",
user_age: "21",
user_name: "唐哲旭444"
}]
};
contentType: "application/json;charset=utf-8",
data: JSON.stringify(person),
数据在浏览器中的传输格式: {"user_user":{"id":"111","user_age":"18","user_name":"唐哲旭"},"user_list":[{"id":"222","user_age":"19","user_name":"唐哲旭222"}, {"id":"333","user_age":"20","user_name":"唐哲旭333"},{"id":"444","user_age":"21","user_name":"唐哲旭444"}]}
public Object test(@RequestBody Person person){};
或者 public Object test(@RequestBody HashMap map){};(map中key的名称和value类型都与前端传的类型对应,比如此时key为user_user和user_list,value类型为 User和List<User>)
此时Person对象属性还是为user和list,如果将Person对象转成Json字符串,则变成user_user和user_list,User对象中也变成user_name和user_age
如果用方法参数上用Map接收,则Map的key为user_user和user_list,user_user中也变成user_name和user_age
ajax交互方式
最新推荐文章于 2023-04-02 21:31:51 发布