1.太牛了!码断Spring+Springboot+SpringMVC+SpringCloud实战篇
2.SpringMVC中Controller处理response.setContentType()
太牛了!码断Spring+Springboot+SpringMVC+SpringCloud实战篇
Spring 4.0,码断Java领域第一开源平台的码断翘楚地位在积蓄4年后,迎来升级。码断新功能包括基于Groovy Bean的码断web考勤系统源码配置、HTML 5/WebSocket支持以及全面支持Java 8.0,码断最低要求为Java 6.0。码断这些功能增强了开发的码断实用性与易用性,降低了Java应用,码断尤其是码断Java Web应用的开发难度,同时提升了优雅性。码断本书以《精通Spring 3.x——企业应用开发详解》为基础,码断通过一年的码断调整改版,旨在深度理解Spring原理,码断使读者熟练掌握并透彻理解Spring内部实现。同时强调实战性,dnf等级查询源码从实际项目出发,指导到实际项目应用。本书涵盖Spring的核心、Web中的Spring、后端中的Spring和Spring集成等内容。
深入Springboot的学习,从基础应用开发到分布式应用开发,再到核心源代码分析,精淘客源码本书内容丰富,涵盖细节众多。每个部分都包含更细化的知识点,帮助开发者深入理解并熟练掌握Springboot。
SpringMVC学习指南全面介绍了SpringMVC的用法,包括基础应用开发的技巧,为开发者提供了详细的指导。
SpringCloud微服务实战深入探讨了微服务构建、源码编译没有makefile服务治理、客户端负载均衡、服务容错保护、声明式服务调用、API网关服务、分布式配置中心、消息总线、分布式服务跟踪等关键领域,sqlite源码分析书籍为开发者提供全面的微服务开发指南。
本书内容丰富,细节详尽,旨在为Java程序员提供深入学习与实践Spring、Springboot、SpringMVC和SpringCloud微服务的指导。如有需要,点击此处获取资料。
SpringMVC中Controller处理response.setContentType()
处理response.setContentType()及header为"application/json;charset=utf-8"无效问题分析
在SpringMVC中,当使用Controller处理request并设置response.setContentType("application/json;charset=UTF-8")以输出中文时,发现结果仍然为乱码。此类问题的异常现象通常源于源码内部的特殊处理,导致通过该方法设置的请求头编码无效。
SpringMVC通过RequestMappingHandlerAdapter处理注解定义的请求处理器方法。在该类中,invokeHandlerMethod()方法负责调用目标方法并处理返回值。当return value不为null时,会通过returnvalueHandlers进行处理,其中会调用MessageConverter将返回值转换为相应的报文格式。
HttpOutputMessage实例通常是ServletServerHttpResponse,它在写入数据的同时会设置response的header,包括content-type(根据RequestMapping的produces属性计算得出)。因此,在controller中设置content-type在请求方法带有返回值的情况下是无效的,会被消息转换器覆盖。
为解决此问题,有两种方法可考虑:
1. 方法一,利用produces属性:在RequestMapping中明确指定produces为"application/json;charset=UTF-8",这将直接影响到消息转换器对返回值的处理方式,确保输出内容按照指定编码格式。
2. 方法二,请求方法不带返回值:在Controller方法中,可以设计为不返回数据,而是通过直接在response对象上输出所需内容。这样,可以避免与消息转换器的冲突,确保输出内容按照预期编码格式显示。