@ResponseBody响应json数据
1)、静态资源拦截问题
DispatcherServlet会拦截到所有的资源,导致一个问题就是静态资源(img、css、js)也会被拦截到,从而
不能被使用。解决问题就是需要配置静态资源不进行拦截,在springmvc.xml配置文件添加如下配置
- mvc:resources标签配置不过滤
1). location元素表示webapp目录下的包下的所有文件
2). mapping元素表示以/static开头的所有请求路径,如/static/a 或者/static/a/b
<!-- 设置静态资源不过滤 -->
<mvc:resources location="/css/" mapping="/css/**"/> <!-- 样式 -->
<mvc:resources location="/images/" mapping="/images/**"/> <!-- 图片 -->
<mvc:resources location="/js/" mapping="/js/**"/> <!-- javascript -->
2)、json转换为对象
1).实体类User
public class User implements Serializable {
private String username;//姓名
private String password;//密码
private Integer age;//年龄
}
2).前端页面编写AJAX(原生阿贾克斯的实现)
<script>
/* 全局函数 */
$(function () {
$("#btn01").click(function () {
$.ajax({
url:"test/testAjax", //请求路径
contentType:"application/json;charset=utf-8", //设置编码请求格式
data:'{"username":"哈哈","password":"123445","age":23}', //传入的数据
datatype:"json", //数据类型
type:"post", //请求类型
success:function (data) { //请求成功返回类型
alert(data)
}
})
});
});
</script>
3).标注controller为回写数据(@ResponseBody)注解,如果不了解这些注解,小编给出传送门-----> SpringMVC 学习笔记心得(四)常用注解详解
@RequestMapping("/testAjax")
public @ResponseBody User testAjax(@RequestBody User user) {
System.out.println(user);
user.setPassword("123123");
user.setAge(29);
return user;
}
4). json字符串和JavaBean对象互相转换的过程中,需要使用jackson的jar包
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
5).返回的data就被转换为对象了