@ResponseBody注解:
1.将请求体中的内容和控制器方法中的形参进行绑定
2.使用@RequestBody注解将json格式的请求参数转化为java对象
服务器处理ajax请求之后,大多数情况都需要向浏览器响应一个java对象,此时必须将java对象转换为json字符串才可以响应到浏览器,之前我们使用操作json数据的jar包gson或jackson将java对象转换为json字符串。在SpringMVC中,我们可以直接使用@ResponseBody注解实现此功能
@ResponseBody响应浏览器json数据的条件:
1.导入jackson的依赖
XML
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.1</version>
</dependency>
2.SpringMVC的配置文件中设置开启mvc的注解驱动
XML
<!--开启mvc的注解驱动-->
<mvc:annotation-driven />
3.使用@ResponseBody注解标识控制器方法
在方法中,将需要转换为json字符串并响应到浏览器的java对象作为控制器方法的返回值,此时SpringMVC就可以将此对象直接转换为json字符串并响应到浏览器
html
<input type="button" value="测试@ResponseBody响应浏览器json格式的数据"@click="testResponseBody()"><br>
<script type="text/javascript" th:src="@{/js/vue.js}"></script>
<script type="text/javascript" th:src="@{/js/axios.min.js}"></script>
<script type="text/javascript">
var vue = new Vue({
el:"#app",
methods:{
testResponseBody(){
axios.post("/SpringMVC/test/ResponseBody/json").then(response=>{
console.log(response.data);
});
}
}
});
</script>
常用的java对象转换为json的结果:
* 实体类----json对象
java
//转化为实体类
@RequestMapping("/test//RequestBody/json")
public void testRequestBody(@RequestBody User user, HttpServletResponse response) throws IOException {
response.getWriter().write("hello,RequestBody");
//将请求体中的json格式转化为java对象
System.out.println(user);
}
* map----json对象
java
@RequestMapping("/test//RequestBody/json")
public void testRequestBody(@RequestBody Map<String, Object> map, HttpServletResponse response) throws IOException {
response.getWriter().write("hello,RequestBody");
//将请求体中的json格式转化为java对象
System.out.println(map);
}
* list----json数组
java
//省略了一个手动将java对象转换为字符串的过程
@RequestMapping("/test/ResponseBody/json")
@ResponseBody
public List<User> testResponseBodyJson(){
User user1 = new User(1001,"admin","12345",23,"🚹");
User user2 = new User(1001,"admin","12345",23,"🚹");
User user3 = new User(1001,"admin","12345",23,"🚹");
User user4 = new User(1001,"admin","12345",23,"🚹");
List<User> list = new ArrayList<>();
list.add(user1);
list.add(user2);
list.add(user3);
list.add(user4);
return list;
}