SpringMVC 的Ajax传对象需要借助json,而对象转化成json我这里使用Jackson框架类实现,由于我的myeclipse是2014版只支持jackson2.0以后版本,所以我使用jackson2.5版本
jackson-annotations-2.5.0.jar
jackson-core-2.5.0.jar
jackson-databind-2.5.0.jar
实例:
index.jsp界面
<body>
<p align="center">userId:<input type="text" id="userId" name="userId"/></p>
<p align="center" id="info2"></p>
</body>
js代码:
$("#userId").bind('input', function(){
$.ajax({
type: "POST",
contentType: "application/x-www-form-urlencoded;charset=utf-8",
url: "user/userInfo.do",
dataType: "json",
data:{userId: $("#userId").val()},//json数组,发送的数据
success: function(data){//返回的json格式数据
$("#info2").text("userId:"+ data.userId +"/userName:" + data.userName + "/userSex:" + data.userSex);
$("#info2").css({color:"green"});
}
});
});
});
后台控制器ValidateServlet:
使用@Responsebody后,返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。
比如异步获取json数据,加上@Responsebody后,会直接返回json数据。
对于@Responsebody用法参照:http://blog.csdn.net/huaishuming/article/details/31390161
@RequestMapping("/userInfo.do")
public @ResponseBody UserInfo validate(Integer userId){//@ResponseBody表示对象作为httpServletResponse 正文返回,而不是返回页面地址
System.out.println("userId" + userId);
UserInfo userInfo = new UserInfo();//new一个userInfo对象用于返回
userInfo.setUserId(userId);
userInfo.setUserName("张三");
userInfo.setUserSex("男");
return userInfo;
}
spring-servlet.xml中配置
由于需要将返回的对象解析成json格式,所以配置需要为@Responsebody添加注解适配器
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
<!-- mvc 注解驱动 -->
<mvc:annotation-driven/>
<!-- 扫描器 -->
<context:component-scan base-package="com"></context:component-scan>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 配置前缀和后缀 -->
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- 从请求响应读取/编写字符串 -->
<bean id="stringHttpMessage" class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- 用于将对象转化为json字符串注意这里使用的是jackson2.x -->
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
<!-- 注解适配器 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="stringHttpMessage"></ref>
<ref bean="jsonConverter"></ref>
</list>
</property>
</bean>
</beans>