SpringMVC接收json传值
什么是json
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。在JavaScript中使用如下:
//这是一个json对象,注意键名也是可以使用引号包裹的
var jsonObject = {
"username":"admin",
"password":123
}
//这是一个json字符串,本质是一个字符串
var json = '{"a": "Hello", "b": "World"}';
既然JSON有着上述两种存在方式,那我们通过ajax向SpringMVC传值的时候,我们该传哪一种呢?
我们首先尝试直接发送JSON对象,默认使用application/x-www-form-urlencoded类型:
//定义json对象
var jsonObject = {
"username":"admin",
"password":123
}
// Jquery Ajax请求
$.ajax({
url : "jsontest",
type : "POST",
async : true,
data : json,
dataType : 'json',
success : function(data) {
if (data.userstatus === "success") {
$("#errorMsg").remove();
} else {
if ($("#errorMsg").length <= 0) {
$("form[name=loginForm]").append(errorMsg);
}
}
}
});
SpringMVC接收如下:
@RequestMapping("/jsontest")
public void test(@RequestParam(value="username",required=true) String username,
@RequestParam(value="password",required=true) String password){
System.out.println("username: " + username);
System.out.println("password: " + password);
}
//或
@RequestMapping("/jsontest")
public void test(String username, String password){
System.out.println("username: " + username);
System.out.println("password: " + password);
}
发送json字符串,contentType 为 application/json:
$.ajax({
url : "jsontest",
type : "POST",
async : true,
contentType : "application/json",
data : JSON.stringify(json),
dataType : 'json',
success : function(data) {
if (data.userstatus === "success") {
$("#errorMsg").remove();
} else {
if ($("#errorMsg").length <= 0) {
$("form[name=loginForm]").append(errorMsg);
}
}
}
});
SpringMVC接收如下:
@RequestMapping("/jsontest")
public void test(@RequestBody(required=true) Map<String,Object> map ){
String username = map.get("username").toString();
String password = map.get("password").toString();
System.out.println("username: " + username);
System.out.println("password: " + password);
}
//或
@RequestMapping("/jsontest")
public void test(@RequestBody String param){
User user = JSON.parseObject(param, User.class);
System.out.println("username: " + user.getUsername());
System.out.println("password: " + user.getPassword);
}