关于springmvc json交互产生的406错误

  产生错误的背景:springmvc使用<mvc:annotation-driven>进行配置,那么只要引入响应的json解析包就可以了。在pom中已经引入了如下:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.8.5</version>
</dependency>

  web.xml配置DispatcherServlet如下:

<servlet>
    <servlet-name>front</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>front</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

  上面的配置是正确的。但是当使用@ResponseBody注解要返回json数据的方法然后进行访问时,就出现了406错误。

  解决方法:错误在于url-pattern。当改为其他后缀时就能成功访问,例如.do、.action。这是因为如果后缀为.html、.htm、.xhtml时,springmvc会将content-type设置为text/html,正确的是application/json,此时返回json对象就出错了。

时间: 2024-10-12 15:29:35

关于springmvc json交互产生的406错误的相关文章

SpringMVC的AJAX请求报406错误

SpringMVC的AJAX请求报406错误原因有两种:1.jackson包没有引入 2.如果已经引入jackson包了还报406的错误,那么就有可能是请求的url路径是.html结尾,但是返回的数据是一个对象,这时浏览器就不知道怎么响应了,因为一般请求.html后缀的页面,返回的一般是个字符串或者页面内容,此时可以在web.xml中再配置一个拦截后缀,如*.action,web.xml可以有多个拦截后缀,请求.action的后缀,浏览器就没有这个限制了

springMVC 解决ajax请求的406错误

直入主题-- 页面表单异步提交:$.post('<%=request.getContextPath()%>/web/register.html', $(form).serialize(), function(data){...}); java后台springMVC的controller接受请求: @RequestMapping("register") @ResponseBody public Map<String, String> register(HttpSe

SpringMVC - Json交互

1. 请求json 输出json 要求请求的是json串 所以在前端页面需要将请求转成json 不太方便2. 请求key/value 输出json 此方法比较常用 1. 环境准备:SpringMVC默认使用MappingJcksonHttpMessageConverter 对json数据进行转换(@RequestBody @ResponseBody使用下面的包进行json转换), 需要加入jackson包 2. 配置json转换器在注解适配器中加入messageConverters

SpringMVC详解(六)------与json交互

Json(JavaScript Object Notation),它是一种轻量级数据交换格式,格式简单,易于读写,目前使用特别广泛.那么这篇博客我们主要谈谈在 SpringMVC 中,如何对 json 数据格式进行解析和转换? 本篇博客源码链接:http://pan.baidu.com/s/1kURnwDx 密码:b37t 1.两种交互模式 上图显示了客户端请求数据的两种格式,一种是 直接请求 json 数据,另一种是 key/value 数据.但是不管请求是哪种数据,为了在前端页面方便对结果进

SpringMVC注解@RequestMapping之produces属性导致的406错误

废话不多说,各位,直接看图说话,敢吗?这个问题网上解决的办法写的狠是粗糙,甚至说这次我干掉它完全是靠巧合,但是也不否认网上针对406错误给出的解决方式,可能是多种情况下出现的406吧?我这次的流程就是集成了MyBatis的分页插件,简单实现了一个分页功能,最后将数据返回给浏览器,就因为我的随手一粘贴,才引发了这场406,别忘了各位看图说话. 我首先说说我的惨痛经历吧,一直对spring框架的AOP原理狠是模糊,就在上周五自己想好好研究一下,但是很多美好的事情都不是那么一路绿灯,磕磕绊绊总算是差不

SpringMVC中出现&quot; 400 Bad Request &quot;错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法

最近angularjs post到后台 400一头雾水 没有任何错误. 最后发现好文,感谢作者 SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法 今天开发过程中,在SpringMVC中的Action中处理前台ajax请求传过来的json数据直接转成对应的实体类时出错:400 Bad Request,后台也不报错,400指的的是请求无效(请求有语法问题或者不能满足请求),调试了好长时间

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

springmvc遇见406错误的问题分析

如果springmvc遇到406错误: 90%没有加入Jackson的包 10%因为后缀为.html 10%的情况,解决方案为加多一个映射,使用.action 原文地址:https://www.cnblogs.com/xieyupeng/p/9424508.html

SpringMVC框架五:图片上传与JSON交互

在正式图片上传之前,先处理一个细节问题: 每一次发布项目,Tomcat都会重新解压war包,之前上传过的图片会丢失 为了解决这个问题:可以不在Tomcat下保存图片,而是另找一个目录. 上传图片: <form method="post" enctype="multipart/form-data"> <input type="file" name="pictureFile"> </form>