struts2与springMvc下的AJax异步数据交互2
2.springMVC下的ajax异步数据通信
① 第一种与 Struts2一样使用 Servlet 的输出流,即response.getWrite() 来输出json格式字符串
②第二种 ,在springMVC-Servlet.xml中配置
<!-- 返回json 方法二 需要导入 jackson-annotations.jar,jackson-core.jar,jackson-databind.jar-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<!-- 从请求和相应读取和编写字符串 -->
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- 用于将对象转化为json-->
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
在controller中,使用@ResponseBody返回一个对象
@RequestMapping("ajaxPost3")
public @ResponseBody UserEntity add3(String userName,String passWord,HttpServletResponse response,Map<String,Object> map){
System.out.println("add3:---user:--"+userName+"password:--"+passWord);
UserEntity user=new UserEntity();
user.setUserName(userName);
user.setPassWord(passWord);
return user;
}
③也是这三个包的,另外一种返回json字符串的方式 (不用任何配置)
ObjectMapper mapper=new ObjectMapper();
User user=XXXXService.getUser();
response.setContentType("text/html;charset=utf-8");
mapper.writerValue(response.getWriter(),user);
④使用mvc自带的配置和@ResponseBody
<mvc:annotation-driven/>//提供数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)
注意(<context:component-scan base-package=”XX.XX”/> 重叠了<context:annotation-config/>的功能 ---》声明支持一些通用的注解例如 @Required
, @Autowired
, @PostConstruct
, and so on. )