当前位置: 代码迷 >> Java Web开发 >> spring3 mvc 报业务错误和处理错误后应答中文乱码
  详细解决方案

spring3 mvc 报业务错误和处理错误后应答中文乱码

热度:3059   发布时间:2013-02-25 21:05:46.0
spring3 mvc 报业务异常和处理异常后应答中文乱码
spring3.1 mvc.在配置文件中配置了应答编码方式,正常的处理流程返回的应答字串没有中文乱码。如果处理业务中报异常,跳转到统一的业务处理函数处理异常后,再返回应答,此时的应答中文就成了乱码。所有的应答都是JSON字串。

配置项:
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters"> 
<list> 
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
<bean class="org.springframework.http.converter.StringHttpMessageConverter"> 
<property name="supportedMediaTypes"> 
<list> 
<value>text/plain;charset=UTF-8</value> 
</list> 
</property> 
</bean> 
<bean class="org.springframework.http.converter.ResourceHttpMessageConverter" /> 
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
<bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" />
<bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" />
</list> 
</property> 
</bean>
<mvc:annotation-driven />

统一异常处理函数:
/** 基于@ExceptionHandler异常处理,处理异常后返回JSON应答 */
@ExceptionHandler
@ResponseBody
public String exp(HttpServletRequest request, Exception ex) {
//request.setAttribute("ex", ex);

// 根据不同错误返回不同的错误消息
if(ex instanceof ParameterException) {
operlogger.error(ex.getMessage(), ex);
return getOutJson("-1", ex.getMessage(), "");
}else if(ex instanceof BusinessException) {
syslogger.error(ex.getMessage(), ex);
return getOutJson("-2", ex.getMessage(), "");
} else {
syslogger.error(ex.getMessage(), ex);
return getOutJson("-10", ex.getMessage(), "");
}
}
麻烦大家帮我看看,是哪出了问题。
 <value>text/html;charset=UTF-8</value>加上这个
  相关解决方案