Spring MVC整合fastjson
2016-04-05 15:59
357 查看
接到任务,需要springmvc整合fastjson,原因嘛,当然是为了快。
百度到的资料不全面,因此,自己总结一下,不妥的地方请大家指正。
1,首先引入fastjson的jar包
pom.xml
2,在springmvc的配置中启用fastjson
对于这个,网上有另一种写法
貌似两种方法用的人都有,但是有些前台的框架一定要html哪个,第一种是不会错的
3.添加MappingFastJsonHttpMessageConverter类。这个百度的教程里没说,我也是错了之后才发现的。
@ResponseBody,这个表示 用我们配置好的东西返回json,接着,就可以直接return 对象啦
983a
百度到的资料不全面,因此,自己总结一下,不妥的地方请大家指正。
1,首先引入fastjson的jar包
pom.xml
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.8</version> </dependency>
2,在springmvc的配置中启用fastjson
<mvc:annotation-driven> <mvc:message-converters register-defaults="true" > <bean class="com.undersea.frame.MappingFastJsonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>application/json</value> </list> </property> <property name="serializerFeature"> <array> <value>WriteMapNullValue</value> <value>QuoteFieldNames</value> </array> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
对于这个,网上有另一种写法
<mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean class="com.undersea.frame.MappingFastJsonHttpMessageConverter"> <property name="supportedMediaTypes" value="application/json"/> </bean> </mvc:message-converters> </mvc:annotation-driven>
貌似两种方法用的人都有,但是有些前台的框架一定要html哪个,第一种是不会错的
3.添加MappingFastJsonHttpMessageConverter类。这个百度的教程里没说,我也是错了之后才发现的。
public class MappingFastJsonHttpMessageConverter extends AbstractHttpMessageConverter<Object>{ public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); // fastjson特性参数 private SerializerFeature[] serializerFeature; public SerializerFeature[] getSerializerFeature() { return serializerFeature; } public void setSerializerFeature(SerializerFeature[] serializerFeature) { this.serializerFeature = serializerFeature; } public MappingFastJsonHttpMessageConverter() { super(new MediaType("application", "json", DEFAULT_CHARSET)); } @Override public boolean canRead(Class<?> clazz, MediaType mediaType) { // JavaType javaType = getJavaType(clazz); // return this.objectMapper.canDeserialize(javaType) && // canRead(mediaType); return true; } @Override public boolean canWrite(Class<?> clazz, MediaType mediaType) { // return this.objectMapper.canSerialize(clazz) && canWrite(mediaType); return true; } @Override protected boolean supports(Class<?> clazz) { // should not be called, since we override canRead/Write instead throw new UnsupportedOperationException(); } @Override protected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); int i; while ((i = inputMessage.getBody().read()) != -1) { baos.write(i); } return JSON.parseArray(baos.toString(), clazz); } @Override protected void writeInternal(Object o, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { String jsonString = JSON.toJSONString(o, serializerFeature); OutputStream out = outputMessage.getBody(); out.write(jsonString.getBytes(DEFAULT_CHARSET)); out.flush(); } }4.配置现在就完了,接着就可以用了,用的时时候需要在用的函数上加上注解
@ResponseBody,这个表示 用我们配置好的东西返回json,接着,就可以直接return 对象啦
983a
相关文章推荐
- activemq--命令行工具
- java多线程之线程的6种状态
- (终极)java中自己的一写迷茫的地方(未完)
- LeetCode 292 -Nim Game ( JAVA )
- java之异常处理机制
- Spring 从零開始-03
- jsp中应用JavaBean
- MyEclipse 使用 User Library 不自动部署到 WEB-INF/lib 文件夹的解决方案
- [j2ee]java中的xml操作
- 关于使用容联demo出现java.lang.NoClassDefFoundError
- Java NIO系列教程(十) Java NIO DatagramChannel
- Spring Mvc问题之session存取出现错误问题
- [java-solr日常一]solr4.9同步mysql数据
- Java字符编码
- Intellij:java web找不到WEB-INF下的文件
- Java类的初始化顺序
- Java-ASM
- Java反射机制
- 在Eclipse中使用JUnit4进行单元测试(高级篇)
- 深入理解java多态性