解决与 Spring MVC 的 @ResponseBody 的内容类型差异
在 Spring MVC 应用程序中,当控制器方法返回 String 并注释为@ResponseBody,框架负责设置响应的内容类型。默认情况下,它使用 UTF-8 编码的“text/plain”。
自定义 Content-Type
要覆盖默认内容类型,您可以包含在 Spring 应用程序中进行以下配置:
<code class="xml"><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes" value="text/plain;charset=UTF-8" /> </bean> </list> </property> </bean></code>
这将确保从 @ResponseBody 方法返回的字符串使用指定的内容类型。然而,这种方法并不总是有效。
使用 Produces 属性
Spring 3.1 在 RequestMapping 注解中引入了 Produces 属性。通过指定 Produces = "application/json; charset=utf-8",您可以显式设置响应的内容类型。
示例控制器:
<code class="java">@RequestMapping(value = "/getDealers", method = RequestMethod.GET, produces = "application/json; charset=utf-8") @ResponseBody public String sendMobileData() { return "..."; }</code>
此方法使用生成属性来覆盖默认的内容类型行为并确保响应包含正确的编码。
以上是如何解决 Spring MVC 的 @ResponseBody 的内容类型差异?的详细内容。更多信息请关注PHP中文网其他相关文章!