拒绝一切套路-浅谈@RequestBody注解使用

利用@RequestBody注解User对象接收前台json数据。
Controller中代码如下

1
2
3
4
@RequestMapping(value="/hhoo")
public void getHello1(@RequestBody User user){
System.out.println(user.getFname());
}

实体类User代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class User {
private int id;
private String fname;
public String getFname() {
return fname;
}
public void setFname(String fname) {
this.fname = fname;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}

jsp页面代码如下

1
2
3
4
5
6
<body>
<form id="sin" action="#" method="post" >
<input type="text" name="fname">
<input id="submit" onclick="ppp()" type="button" value="Submit" />
</form>
</body>

注意from表单数据如果不经处理是无法被@RequestBody注解对象User所接收,所以这里需要引入jquery.serializejson.js
来将from表单数据转换为json字符串。

1
<script src="<%=basePath%>js/jquery.serializejson.js"></script>

转换代码

1
var data1=JSON.stringify($('#sin').serializeJSON())

js部分代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script >
function ppp(){
var data1=JSON.stringify($('#sin').serializeJSON());
$.ajax({
type:"POST",
url: "hhoo",
dataType:"json",
contentType:"application/json;charset=UTF-8",
data:data1,
success: function(data){
alert(data);
}
});
}
</script>

此时在页面上提交请求(此时提交的json字符串为 {“fname”:”Wei”} )

控制台打印如下

总结

@RequestBody注解通常用来处理contentType类型为application/json, application/xml这类的数据。
注意 此注解接收的是json字符串,而不是json对象。

0%