示例 自定义HttpMessageConverter 接收JSON格式的数据
示例 自定义HttpMessageConverter 接收JSON格式的数据
Spring
默认使用Jackson
处理JSON
数据。在实际开发中,开发者也可以选择使用其他开源框架处理JSON
数据。那么,如果使用其他的开源框架处理JSON
数据,该如何配置HttpMessageConverter
呢?接下来,我们就使用在业界非常受欢迎的Fastjson
来接收JSON
数据。
下载Fastjson
本书成书时Fastjson
开源框架的最新版本是1.2.9。jar
包只有1个:fastjson-1.2.9.jar
。建议读者进入该地址下载该版本或者更高版本进行测试。
项目示例
创建一个FastjsonTest
项目,在WebContent
目录下创建一个js
目录,加入jQuery
和json2
的js
文件,在WEB-INF/lib
目录中加入Fastjson
的jar
文件。
项目结构
展开/折叠
D:\Desktop\随书源码\Spring+Mybatis企业应用实战(第2版)\codes\03\FastjsonTest ├─src\ │ └─org\ │ └─fkit\ │ ├─controller\ │ │ └─BookController.java │ └─domain\ │ └─Book.java └─WebContent\ ├─index.jsp ├─js\ │ ├─jquery-1.11.0.min.js │ ├─jquery-migrate-1.2.1.min.js │ └─json2.js ├─META-INF\ │ └─MANIFEST.MF └─WEB-INF\ ├─lib\ │ ├─commons-logging-1.2.jar │ ├─fastjson-1.2.9.jar │ ├─spring-aop-5.0.1.RELEASE.jar │ ├─spring-aspects-5.0.1.RELEASE.jar │ ├─spring-beans-5.0.1.RELEASE.jar │ ├─spring-context-5.0.1.RELEASE.jar │ ├─spring-context-indexer-5.0.1.RELEASE.jar │ ├─spring-context-support-5.0.1.RELEASE.jar │ ├─spring-core-5.0.1.RELEASE.jar │ ├─spring-expression-5.0.1.RELEASE.jar │ ├─spring-instrument-5.0.1.RELEASE.jar │ ├─spring-jcl-5.0.1.RELEASE.jar │ ├─spring-jdbc-5.0.1.RELEASE.jar │ ├─spring-jms-5.0.1.RELEASE.jar │ ├─spring-messaging-5.0.1.RELEASE.jar │ ├─spring-orm-5.0.1.RELEASE.jar │ ├─spring-oxm-5.0.1.RELEASE.jar │ ├─spring-test-5.0.1.RELEASE.jar │ ├─spring-tx-5.0.1.RELEASE.jar │ ├─spring-web-5.0.1.RELEASE.jar │ ├─spring-webflux-5.0.1.RELEASE.jar │ ├─spring-webmvc-5.0.1.RELEASE.jar │ └─spring-websocket-5.0.1.RELEASE.jar ├─springmvc-config.xml └─web.xml
BookController.java
1 | package org.fkit.controller; |
springmvc-config.xml
1 |
|
以上配置文件和之前的配置文件主要的区别在于:
- 之前使用的是
Spring
中默认的MappingJackson2HttpMessageConverter
,这样只需要配置默认的<mvc:annotation-driven/>
就可以了。 - 而现在使用第三方的开源框架
Fastjson
处理JSON
数据,则需要另行配置HttpMessageConverter
。
Spring MVC
默认使用MappingJackson2JsonView
转换器,所以必须加入Jackson
这个库的第三方类文件。而在实际开发中,更加受欢迎的是Fastjson
,所以本例并没有使用Jackson
,而是使用了Fastjson
,则转换器需要配置成com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter
类型,该类是Fastjson
中实现了HttpMessageConverter
接口的类。
如果加入了Fastjson
相关jar
文件,但是没有配置FastJsonHttpMessageConverter
转换器,则在发送请求时后台会提示错误:
1 | Handler execution resulted in exception: Content type application/json;charset=UTF-8 not supported |
此外,其他JSP
和Java
文件和之前项目的一致,并且还需要在web.xml
文件中配置Spring MVC
的前端控制器DispatcherServlet
,因为每次配置基本一致,此处不再赘述读者可自行配置.
测试
部署FastjsonTest
这个Web
应用,在浏览器中输入如下URL
来测试应用:
1 | http://localhost:8080/FastjsonTest/ |
浏览器显示效果:
1 | 编号:1 |
由此可知,处理JSON
格式的开源框架使用Jackson
和Fastjson
,只是需要使用不同的HttpMessageConverter
而已.