Spring MVC控制器用@ResponseBody声明返回json数据报406的问题

  本打算今天早点下班,结果下午测试调试程序发现一个问题纠结到晚上才解决,现在写一篇博客来总结下。

  是这样的,本人在Spring mvc控制层用到了@ResponseBody标注,以便返回的数据为json格式的数据,到前端JS中用。

  问题来了,当我用火狐调试发现请求总是报:406 Not Acceptable,message:description The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers ()错误。(说是指定的资源已经找到,但它的MIME类型和客户在Accpet头中所指定的不兼容)。

  于是楼主那个纠结,那个郁闷啊。BUG了又BUG,百度了又百度,又怀疑是引用的ext.js文件有问题,因为报ext.base和ext.all语法错误。最后发现是mime类型不匹配。由于我要返回的是json数据,而浏览器接受的是text/html;charset=UTF-8文本类型。不过发现问题还有好几个,一一解决之:

1.未在pom文件中引入json的转换包。需要引入如下2个包:

<!-- jackson start -->
  <dependency>
   <groupId>org.codehaus.jackson</groupId>
   <artifactId>jackson-core-asl</artifactId>
  </dependency>
  <dependency>
   <groupId>org.codehaus.jackson</groupId>
   <artifactId>jackson-mapper-lgpl</artifactId>
   <version>1.9.12</version>
  </dependency>
  <!-- jackson end -->

2.  spring-servlet.xml文件中需要配置转换的bean

<bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <util:list id="beanList">
                <ref bean="mappingJacksonHttpMessageConverter" />
            </util:list>
        </property>
    </bean>
    <bean id="mappingJacksonHttpMessageConverter"
        class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
            </list>
        </property>
    </bean>

3.  最后,别忘了还要声明util的schema文件和地址,在spring-servlet.xml文件的头部声明部分加入如下三行即可

xmlns:util="http://www.springframework.org/schema/util"
       http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util-3.0.xsd

OK,搞定,大功告成

转载: http://www.cnblogs.com/tanglc/p/3664795.html

时间: 2024-10-08 10:35:11

Spring MVC控制器用@ResponseBody声明返回json数据报406的问题的相关文章

Spring MVC 中 AJAX请求并返回JSON

一.以ModelAndView的方式返回 先看下JavaScript代码: 1 /** 2 * 保存-同步(版本控制库) 3 */ 4 function saveSynchronizedVcHorse(obj) { 5 var ss = $("#SynchronizedSelection div"); 6 var cacheSelectAry = new Array() 7 for(var i = 0; i < ss.length; i ++) { 8 //alert(ss.eq

spring mvc ajaxfileupload文件上传返回json下载问题

问题:使用spring mvc ajaxfileupload 文件上传在ie8下会提示json下载问题 解决方案如下: 服务器代码: @RequestMapping(value = "/addAnalysis", method = RequestMethod.POST) public void addAnalysisUI( HttpServletResponse response,HttpServletRequest request,HttpSession session, @Requ

spring mvc3的注解@ResponseBody 自动返回jason

第三种利用spring mvc3的注解@ResponseBody 例如: [java] view plain copy print? @ResponseBody @RequestMapping("/list") public List<String> list(ModelMap modelMap) { String hql = "select c from Clothing c "; Page<Clothing> page = new Pag

Spring MVC使用@ResponseBody返回JSON数据406问题解决方案

其实前面一篇关于zTree返回JSON数据的文章已经有一种解决方案了,但是当我今天在新公司搭建新环境的时候,发现决然又不行了,所以我觉得那应该不是最优的解决方案. 说起来,我以前接触到的一个项目,根本没有配置spring的文件,就直接用@ResponseBody可以返回JSON数据,不知道其中的秘诀在什么地方,搞不懂了. 今天主要提供另一个解决@ResponseBody返回JSON数据,页面抛出406错误的解决方案. 第一步,引入包: <dependency> <groupId>c

Spring 3.2.* MVC通过Ajax获取JSON数据报406错误

Spring 3.2.x通过@ResponseBody标签返回JSON数据的方法都报406错: Failed to load resource: the server responded with a status of 406 (Not Acceptable) 以及报错描述: The resource identified by this request is only capable of generating responses with characteristics not accep

MVC控制器中动作方法返回的结果

在MVC控制器中主要的返回方式有如下几种: 1.Content(): 返回文本类型的ContentResult,比如"这是我做的一个MVC". 2.File(): 返回文件类型的内容FileResult,比如PDF 3.HttpNotFound(): 返回包含404HTTP状态码的HttpNotFoundResult. 4.JavaScript(): 返回包含JavaScript内容的JavaScriptResult,比如"function hello(){alert(Hel

spring mvc 控制器方法传数组对象的一些经验

因为项目需要在一个表单里面提交多个对象,比较好的做法就是直接在控制器方法参数里传一个数组. 由于Spring mvc框架在反射生成控制方法的参数对象的时候会调用这个类的getDeclaredConstructor方法来获得构造函数, 但是一直报NoSuchMethodException的异常. 根据这个方法的jdk文档,这个类是一个数组对象时,这个方法会抛出java.lang.NoSuchMethodException,因为接口.数组类.void.基本类型没有构造函数. 同事后来给我支了两招,使

spring mvc 处理接收的map 转换为 json 格式

开发中会遇到传递的map 参数以json 格式处理 ,springMVC中配置如下代码即可实现 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <!-- JSON解析对象 --> <bean

Spring MVC Controller与jquery ajax请求处理json

在用 spring mvc 写应用的时候发现jquery传递的[json数组对象]参数后台接收不到,多订单的处理,ajax请求: var cmd = {orders:[{"storeId":"0a1", "address":"西斗门路2号", "goods":[{"goodsId":"1"}, {"goodsId":"2"},