本来因为ajax跨域http远程调用时有问题,在服务端响应时用以下方式解决了,但IE8及下有问题。

response.addHeader("Access-Control-Allow-Origin", "*");

response.addHeader("Access-Control-Allow-Methods", "POST,GET");

response.addHeader("Access-Control-Allow-Credentials", "true");

后来准备再包装一下,自己再提供http接口,在http接口中用httpclient去取数据,但发现springMVC的返回乱码问题搞了我好久,怎么搞都弄不好,网上的各种方法也都不行,最后在stackoverflow上面看到了一个解决方案可行,此为链接地址:http://stackoverflow.com/questions/3616359/who-sets-response-content-type-in-spring-mvc-responsebody

首先,这个问题在stackoverflow上是三年前提问的,所以有一些方法已经过期废弃了,所以上面可以用的解决方式只有一种,在RequestMapping上添加属性produces:

@RequestMapping(value = "/getAllCategory", method = { RequestMethod.GET,

RequestMethod.POST }, produces = "application/json;charset=UTF-8")

@ResponseBody

public String getAllCategory(HttpServletRequest request,

HttpServletResponse response) {

return GYHttpClient.post(GET_PRODUCT_CATEGORY_LIST_URL);

}

这是从我的项目中copy下来的,把参数什么的去掉,换成自己的即可。

但是上面的解决方案有点不好,要每一个方法都添加这么一句代码,虽然灵活性高,优雅,但是却麻烦。所以我试了其它的方法,但是不生效,后来看一下源码,才发现3.2后AnnotationMethodHandlerAdapter已经过期了,现在用的是RequestMappingHandlerAdapter,但是RequestMappingHandlerAdapter试了一下也不行(理论上这个也是可行,没研究出来 T ^ T)。所以研究了下发现可以声明注解驱动器(不知道是不是这么翻译)的时候的控制编码的转换,结果就这么解决了,太帅气了!

<mvc:annotation-driven>

<mvc:message-converters>

<!-- default StringHttpMessageConverter, solve encoding problem -->

<bean class="org.springframework.http.converter.StringHttpMessageConverter">

<constructor-arg value="UTF-8" />

<property name="writeAcceptCharset" value="false" />

</bean>

</mvc:message-converters>

</mvc:annotation-driven>

OK,完美解决。

关于跨域的问题可以参考:"Cross-domain Ajax with Cross-Origin Resource Sharing"

转自 http://hecks.iteye.com/blog/2165606

spring MVC 3.2中@ResponseBody(Post接口)返回乱码的完美解决方案的更多相关文章

  1. spring mvc在Controller中获取ApplicationContext

    spring mvc在Controller中获取ApplicationContext web.xml中进行正常的beans.xml和spring-mvc.xml的配置: 需要在beans.xml中进行 ...

  2. Spring MVC 使用tomcat中配置的数据源

    Spring MVC 使用tomcat中配置的数据源 配置tomcat数据源 打开tomcat目录下的conf目录,编辑sever.xml目录.在<GlobalNamingResources&g ...

  3. Spring MVC 了解WebApplicationContext中特殊的bean类型

    Spring MVC 了解WebApplicationContext中特殊的bean类型 Spring的DispatcherServlet使用了特殊的bean来处理请求.渲染视图等,这些特定的bean ...

  4. Spring MVC 搭建过程中web.xml配置引入文件的路径问题

    为啥要说一下这么low的问题,因为我是一个比较low的人,哈哈.本来我技术有限,没事干自己撘个环境找找乐趣,结果被各种基础问题,弄的一脸蒙蔽.算了不多说,直接说问题. 1.首先说一下java编译后的文 ...

  5. 在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?

    在测试目标只关注 Spring MVC 组件的情况下,WebMvcTest 注释用于单元测试 Spring MVC 应用程序.在上面显示的快照中,我们只想启动 ToTestController. 执行 ...

  6. Spring mvc web.xml中 urlpatten的配置问题

    在使用spring mvc 是我们会配置spring 的DispatcherServlet作为请求的转发器. <servlet> <servlet-name>spring< ...

  7. 为什么阿里巴巴Java开发手册中强制要求接口返回值不允许使用枚举?

    在阅读<阿里巴巴Java开发手册>时,发现有一条关于二方库依赖中接口返回值不允许使用枚举类型的规约,具体内容如下: 在谈论为什么之前先来科普下什么是二方库,二方库也称作二方包,一般指公司内 ...

  8. vue打包后,接口请求404的完美解决方案

    在开发环境中,和后台对接为了解决跨域问题,使用了代理,也就是vue的proxyTable,但是打包放到生产环境中去时,接口请求不到,404,原因是开发环境的代理并不能用到生产环境,但是直接在请求接口是 ...

  9. Spring MVC学习总结(9)——Spring MVC整合swagger自动生成api接口文档

    Swagger 号称:世界最流行的API框架,官网:http://swagger.io/,Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总 ...

随机推荐

  1. 解决首页中Better-scroll可滚动区域的问题

    在首页时候,使用BetterScroll插件的时候,滚动的时候经常会卡顿.Better-scroll在决定有多少区域可以滚动时,是根据ScrollerHeight属性决定的.ScrollerHeigh ...

  2. zigzag压缩算法

    前文 Base 128 Varints 编码(压缩算法) 介绍了Base 128 Varints这种对数字传输的编码,了解到了这种编码方式是为了最大程度压缩数字的.但是,在前文里,我们只谈论到了正数的 ...

  3. 基于http的netty demo

    1.引入netty的pom <dependency> <groupId>io.netty</groupId> <artifactId>netty-all ...

  4. 今天写了一个SSM小项目,运行之后,前端页面的CSS、js样式显示不出来,具体操作如下:

    因为SSM中我们设置了拦截器,拦截器会拦截CSS和JS,所有样式渲染不出来,在Web.xml中写上 1 <servlet-mapping> 2 <servlet-name>de ...

  5. JUC包-原子类(AtomicInteger为例)

    目录 JUC包-原子类 为什么需要JUC包中的原子类 原子类原理(AtomicInteger为例) volatile CAS CAS的缺点 ABA问题 什么是ABA问题 ABA问题的解决办法 JUC包 ...

  6. UML软件工程复习——用例图和类图

    ------------恢复内容开始------------ 软件产品开发流程是需求.分析.设计.实现. 面向对象三大特征:继承性,封装性.多态性 模型将软件生命周期划分为软件计划.需求分析和定义.软 ...

  7. 【递归】P2386放苹果

    题目相关 题目描述 把 m个同样的苹果放在 n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法.(5,1,1 和 1,1,5 是同一种方法) 输入格式 第一行是测试数据的数目 t,以下每行 ...

  8. Oracle数据库基础操作语法

    转载自:https://www.cnblogs.com/fallen-seraph/p/10685997.html 一.登录Oracle数据库 首先运行Oracle数据库: 默认的有两个账号: 管理员 ...

  9. 编译安装PHP - 7.3.16

    编译安装PHP - 7.3.16 1 ) 安装依赖包: yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg ...

  10. MBAir下安装httprunner2.5.7 har2case 出现zsh: command not found解决方案

    MBAir下python3.8安装httprunner2.5.7 出现zsh: command not found find / -name hrun查找到路径为: /Users/w550856/Li ...