两种情况下使用json数据:第一种是请求时请求的数据是json;第二种是响应的数据是json数据.
1.Json数据交互需要使用的jar包
* jackson-core-asl-1.9.11.jar
* jackson-mapper-asl-1.9.11.jar
在pom.xml中添加相应的依赖:
<!-- Jackson Json处理工具包 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.2</version>
</dependency>
2.配置json解析器
* 在注解适配器中加入messageConverters.
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" p:ignoreDefaultModelOnRedirect="true" >
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
</list>
</property>
</bean>
* 注意:如果使用`<mvc:annotation-driven/>`,即注解驱动,则不用再配置json解析器.
3.请求时为json
使用@RequestBody注解,标注在方法的形参上.
Controller代码:
@ResponseBody
@RequestMapping("/test")
public Emp testjsp(@RequestBody Emp emp){
System.out.println(emp.getEname()+"***************");
return emp;
}
JSP代码 :
< script type= "text/javascript" src =" ${pageContext.request.contextPath } /js/jquery-1.4.4.min.js"></ script>
< script type= "text/javascript" >
function sendJson() {
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath }/empController/test",
contentType:"application/json;charset=utf-8", //发送信息至服务器时内容编码类型。
data:'{"ename":"tom"}',
dataType:'json',
success:function(data){
alert("保存....");
if(data.ename != '') {
alert(data.ename);
}
},
error:function(data) {
alert("失败...");
}
});
}
</ script>
4.响应json数据(重点重点!!!)
需要在方法上添加一个@ResponseBody注解.而使用该注解后,可以将返回值改成POJO类型.有了这个注解之后,框架会自动将返回的POJO对象转为json格式.
@ResponseBody
@RequestMapping("/test")
public Emp testjsp(@RequestBody Emp emp){
System.out.println(emp.getEname()+"***************");
return emp;
}