解决springMVC在浏览器请求数据时产生的乱码问题
来源:互联网 发布:添加mysql服务 编辑:程序博客网 时间:2024/06/05 18:25
我们使用ssm开发时,在前台通过接口请求到后台的数据展示在浏览器上的时候产生了乱码问题,分析了springMVC产生乱码的原因
springMVC中产生的响应有两种
1、ModelAndVIew
2、返回数据响应
在返回数据响应时使用消息转化器完成
在springMVC配置文件中的
<!-- 注解驱动中默认配置了消息转化器 --><mvc:annotation-driven />
而消息转化器中默认的编码格式是”IOS-8859-1”所以不支持中文格式
解决乱码
<mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg index="0" value="UTF-8"/> </bean> </mvc:message-converters></mvc:annotation-driven>
2、扩展CallbackMappingJackson2HttpMessageConverter
package com.taotao.common.spring.exetend.converter.json;import java.io.IOException;import javax.servlet.http.HttpServletRequest;import org.apache.commons.io.IOUtils;import org.apache.commons.lang3.StringUtils;import org.springframework.http.HttpOutputMessage;import org.springframework.http.converter.HttpMessageNotWritableException;import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import com.fasterxml.jackson.core.JsonEncoding;import com.fasterxml.jackson.core.JsonProcessingException;public class CallbackMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter { // 做jsonp的支持的标识,在请求参数中加该参数 private String callbackName; @Override protected void writeInternal(Object object, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { // 从threadLocal中获取当前的Request对象 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); String callbackParam = request.getParameter(callbackName); if(StringUtils.isEmpty(callbackParam)){ // 没有找到callback参数,直接返回json数据 super.writeInternal(object, outputMessage); }else{ JsonEncoding encoding = getJsonEncoding(outputMessage.getHeaders().getContentType()); try { String result =callbackParam+"("+super.getObjectMapper().writeValueAsString(object)+");"; IOUtils.write(result, outputMessage.getBody(),encoding.getJavaName()); } catch (JsonProcessingException ex) { throw new HttpMessageNotWritableException("Could not write JSON: " + ex.getMessage(), ex); } } } public String getCallbackName() { return callbackName; } public void setCallbackName(String callbackName) { this.callbackName = callbackName; }}
重写之后再springMVC配置文件中配置
<!-- 配置注解驱动 --> <mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean class="com.taotao.common.spring.exetend.converter.json.CallbackMappingJackson2HttpMessageConverter"> <property name="callbackName" value="callback"></property> </bean> </mvc:message-converters> </mvc:annotation-driven>
0 0
- 解决springMVC在浏览器请求数据时产生的乱码问题
- SpringMVC 解决GET请求时中文乱码的问题
- SpringMVC解决GET请求时中文乱码的问题
- SpringMVC解决GET请求时中文乱码的问题
- SpringMVC 解决GET请求时中文乱码的问题
- SpringMVC解决GET请求时中文乱码的问题
- SpringMVC 解决GET请求时中文乱码的问题
- SpringMVC学习 解决GET请求时中文乱码的问题
- 解决SpringMvc限定请求方法POST推送数据出现的中文乱码问题
- 解决springMVC中Get请求乱码的问题
- Tomcat在处理GET和POST请求时产生的乱码问题
- Tomcat在处理GET和POST请求时产生的乱码问题
- Tomcat在处理GET和POST请求时产生的乱码问题
- Tomcat在处理GET和POST请求时产生的乱码问题
- Tomcat在处理GET和POST请求时产生的乱码问题
- Tomcat在处理GET和POST请求时产生的乱码问题
- Tomcat在处理GET和POST请求时产生的乱码问题
- Tomcat在处理GET和POST请求时产生的乱码问题
- String类的应用(作业)
- mysql(二)
- leetcode--Group Anagrams
- Java设计模式(1):单例模式
- 访问修饰符的作用范围
- 解决springMVC在浏览器请求数据时产生的乱码问题
- 移动端VIN码识别应用范围
- leetcode--ZigZag Conversion
- 面试常见二叉树问题
- 'conda' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- nginx实现http2.0实战cokys
- ssh禁止root用户登录修改端口登录n
- 理解oracle层次查询
- VMware虚拟机下安装CentOS7.0图文教程