步骤
现在做ajax,主要使用json数据格式。实现步骤:
- 加入处理json的工具库依赖,springmvc默认使用的是jackson
- 在springmvc的配置文件之间加入注解驱动,应用于
json=om.writeValueAsString(student)
- 在处理器方法的上面加入@ResponseBody注解
resp.setContentType("application/json;charset=utf-8"); PrintWriter pw = resp.getWriter(); pw.println(json);
原理
springmvc处理器方法返回Object,可以转为json输出到浏览器,响应ajax的内部原理
- mvc:annotation-driven注解驱动。
注解驱动实现的功能是完成java对象到json、xml、text、二进制等数据格式的转换。
有个HttpMessageConveter接口:消息转换器
功能:定义来java转为json,xml等数据格式的方法。这个接口有很多的实现类。这些实现类完成了java对象到json、xml、二进制数据的转换 - @responseBody注解
放在处理器方法上面,把处理器方法返回对象转成json后,通过HttpServletResponse输出数据,响应ajax请求
实现
在springmvc配置文件中加入注解驱动
<!-- 使用@RequestMapping jackson注解驱动,必须是这个http://www.springframework.org/schema/mvc-->
<mvc:annotation-driven/>
前端发起请求
$(function () {
$("button").click(function () {
$.ajax({
url:"ajax2.do",
data:{
name:"cjl",
age:23
},
type:"post",
dataType:"json",
success:function (resp){
alert(resp.name+" --- "+resp.age);
// alert(resp);
}
}
)
})
})
controller处理
//返回object,添加jackson依赖,在springmvc配置文件中加入注解却动,在方法上加@ResponseBody注解
//返回对象会被框架转成json
@RequestMapping(value = "/ajax2.do", method = RequestMethod.POST)
@ResponseBody
public Object doAjax2(String name, Integer age) {
Student student=new Student(name,age);
return student;
}