Jackson2HttpMessageConverter

用处

  • SpringMVC中,controller中的方法返回java Bean对象,mvc将此对象转换成字符串
  • 默认支持的mediaType: MediaType.APPLICATION_JSON, new MediaType("application", "*+json"),也就json请求

为什么改造

想让url以.html结尾的请求走json请求的逻辑

现状

当后端使用如下方法编码时,url以.html为后缀,最终会响应406状态页面

后端@RestController返回java对象

@RequestMapping(value = "/data", method = {RequestMethod.POST, RequestMethod.GET})
public ApiResult data(HttpServletRequest httpServletRequest, String type, String param, Model model) {
return new ApiResult(2);
}

目标

修改后/data.html返回

{ "code" : 2 }

修改方式

/**
* 自定义的jackson到httpmessage的转换器
* Created by cdliujian1 on 2018/1/27.
*/
public class JMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter { /**
* Construct a new {@link MappingJackson2HttpMessageConverter} using default configuration
* provided by {@link Jackson2ObjectMapperBuilder}.
*/
public JMappingJackson2HttpMessageConverter() {
this(Jackson2ObjectMapperBuilder.json().build());
} /**
* Construct a new {@link MappingJackson2HttpMessageConverter} with a custom {@link ObjectMapper}.
* You can use {@link Jackson2ObjectMapperBuilder} to build it easily.
* @see Jackson2ObjectMapperBuilder#json()
*/
public JMappingJackson2HttpMessageConverter(ObjectMapper objectMapper) {
super(objectMapper);
List<MediaType> mediaTypes = getSupportedMediaTypes();
List<MediaType> newMediaTypes = new ArrayList<>();
newMediaTypes.add(MediaType.TEXT_HTML);
newMediaTypes.addAll(mediaTypes);
setSupportedMediaTypes(newMediaTypes);
} }

构造函数中,调用setSupportedMediaTypes方法,将MediaType.TEXT_HTML添加到当前HttpMessageConverter支持媒体类型中

这样当.html后缀结尾的链接到后端时,可以进入到MappingJackson2HttpMessageConverter的处理流程

MvcConfiguration

@Configuration
//@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter { @Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder()
.indentOutput(true)
.dateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); converters.add(new JMappingJackson2HttpMessageConverter(builder.build()));
converters.add(new MappingJackson2XmlHttpMessageConverter(builder.xml().build()));
}
}

最新文章

  1. 烂泥:ubuntu 14.04搭建OpenVPN服务器
  2. 在Windows下使用Git
  3. coding题都在考察我们的什么技能
  4. 完整学习git五git重置
  5. Java 包(package)详解
  6. java07循环结构
  7. 【jsp exception】如何处理jsp页面的错误
  8. Python之路-Linux命令基础(4)
  9. Enabling Chrome Developer Tools inside Postman
  10. 天猫魔盘在 deepin-linux中的使用
  11. hi-nginx-1.4.9正式发布,支持javascript后端开发
  12. Python heapq模块
  13. LoadRunner如何监控Linux下的系统资源
  14. 第一册:lesson ninety one.
  15. Python:每日一题002
  16. plsql developer无法识别32位oracle问题如何解决?
  17. 弹性势能,position,min用法,获取元素的宽
  18. mysql索引总结(2)-MySQL聚簇索引和非聚簇索引
  19. iOS开发-Autolayout小结
  20. myeclipse bug

热门文章

  1. Python+Appium实现APP自动化测试
  2. Windows10上安装MySQL(详细)
  3. JUC 常用4大并发工具类
  4. 微服务实战系列(七)-网关springcloud gateway
  5. Spark中的聚类算法
  6. Python-列表 元组-list tuple
  7. mysql-4-functions
  8. 如何设置UITextField的焦点?
  9. 01 Arcgis10.6 安装教程
  10. 源码安装IVRE