admin管理员组

文章数量:1794759

Spring MVC处理JSON数据(3)

Spring MVC处理JSON数据(3)

Spring MVC处理JSON数据(3)-自定义消转换器

Spring MVC默认使用Jackson处理JSON数据。在实际开发中,若需要使用其他的工具处理JSON,那么就可以使用自定义的Http消转换器(HttpMessageConverter)。

使用fastjson处理JSON示例:

1.User实体类 public class User implements Serializable { private static final long serialVersionUID = -1684248767747396092L; private String username;//用户名 private String pwd;//密码 //get、set略 } 2.请求的js $("#_btn_send3").click(function(){ $.ajax({ url : "${pageContext.request.contextPath}/json/receiveJson3.do", type : "post", data: {username:"小明",pwd:"123456"}, dataType : "json", success : function(data){ console.log(data); } }); }); 3.Controller

该方法和前两篇文章一致,仍是通过@ResponseBody标识将Java类转换为特定格式的数据写入到输出流中。区别的地方是在Spring要调用我们自定义的消转换器。

@RequestMapping("/receiveJson3") public @ResponseBody Map<String, Object> receiveJson3(User user) throws Exception { Map<String, Object> dataMap = new HashMap<String,Object>(); dataMap.put("status", "success"); if(user != null){ System.out.println("用户名:" + user.getUsername() + " 密码:" + user.getPwd()); }else { System.out.println("未获取到用户"); } dataMap.put("user", user); return dataMap; } 4.配置springmvc.xml

重点在springmvc配置这里,此时不注册默认的消转换器,并在此定义自己的消转换器以及fastjson转换器。在使用fastjson时,需要引入fastjson.jar,具体配置如下:

<!-- 设置配置方案 --> <mvc:annotation-driven> <!-- 不使用默认的消转换器 --> <mvc:message-converters register-defaults="false"> <!-- 配置Spring的转换器 --> <bean class="org.springframework.http.converter.StringHttpMessageConverter"/> <bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"/> <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/> <bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter"/> <!-- 配置fastjson中实现HttpMessageConverter接口的转换器 --> <bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <!-- 加入支持的媒体类型,返回contentType --> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> 5.测试结果

(1).正常结果

(2).为测试是否是配置的fastjson起作用,注释掉<bean id="fastJsonHttpMessageConverter" ...>该bean后测试结果

6.注

(1).通过<mvc:message-converters>关闭默认的消转换器,之后自定义所需使用的JSON转换器。在引入相关jar后,使用实现了HttpMessageConverter接口的类创建bean,同时配置响应的MIME;

(2).406状态码:HTTP协议状态码的一种,Not Acceptable,客户端错误,一般指客户端浏览器不接受请求的MIME类型

(3).fastjson相关jar下载地址,GitHub:点击打开链接,CSDN:点击打开链接

 

本文标签: 数据springMVCjson