springMVC 解决ajax请求的406错误

直入主题--

页面表单异步提交:$.post(‘<%=request.getContextPath()%>/web/register.html‘, $(form).serialize(), function(data){...});

java后台springMVC的controller接受请求:

@RequestMapping("register")
@ResponseBody
public Map<String, String> register(HttpServletRequest request, HttpServletResponse response, User user) {
  Map<String, String> resMap = loginService.insertUser(user);
  return resMap;
}

错误描述,springMVC的controller中接收到页面发送的ajax请求,java后台处理时报错:

[DEBUG] [2016-02-14 20:08:09] org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(133) | Resolving exception from handler [[email protected]]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
[DEBUG] [2016-02-14 20:08:09] org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(133) | Resolving exception from handler [[email protected]]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
[DEBUG] [2016-02-14 20:08:09] org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(133) | Resolving exception from handler [[email protected]]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
[DEBUG] [2016-02-14 20:08:09] org.springframework.web.servlet.DispatcherServlet.processDispatchResult(1034) | Null ModelAndView returned to DispatcherServlet with name ‘rest‘: assuming HandlerAdapter completed request handling
[DEBUG] [2016-02-14 20:08:09] org.springframework.web.servlet.FrameworkServlet.processRequest(999) | Successfully completed request
[DEBUG] [2016-02-14 20:08:09] org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(251) | Returning cached instance of singleton bean ‘sqlSessionFactory‘

此时对应的页面报错为:

POST http://127.0.0.1:8080/maven-web-demo/web/register.html 406 (Not Acceptable)

原因:缺少spring-mvc的json配置

解决方法:

1.添加spring-mvc的json依赖jar包:jackson-core和jackson-databind

2.在spring-mvc.xml中添加:

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

OK,问题解决!

时间: 2024-10-10 07:06:17

springMVC 解决ajax请求的406错误的相关文章

SpringMVC的AJAX请求报406错误

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

http请求出现406错误解决方案

当http请求出现406错误时,会报如下错误: 此时一般需考虑两个问题: 1.查看Jackson包是否存在(springMVC默认依赖Jackson包 ).  2.如果后缀是html是不能响应json数据的,需要修改后缀名. 在做伪静态化过程中,常以以.html结尾的后缀,当做post请求时,不能响应json格式,这是spring官方做出的处理:可以加一个后缀改为.action.如: 这时访问方式变为: 做完以上变更后就可以如期解决406错误啦! 原文地址:https://www.cnblogs

SpringMVC经典系列-13使用SpringMVC处理Ajax请求---【LinusZhu】

注意:此文章是个人原创,希望有转载需要的朋友们标明文章出处,如果各位朋友们觉得写的还好,就给个赞哈,你的鼓励是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系[email protected],敬请朋友们斧正,谢谢. 这一部分主要讲解SpringMVC如何处理Ajax请求,是首先要讲解一下jackson类库,可以帮助我们在java对象和json.xml数据之间的互相转换.他可以将控制器返回的对象直接转换成json数据,供客户端使用,客户端也可以传送json数据到服务

ajax请求出现400错误

ajax请求出现400错误,如题.百度了只有两种情况,一个参数错误,二是所谓的参数过长. 因为我传递的base64的图片参数,很长.刚开始以为是这个原因.后来发现不是,原因是参数错误.freemaker模板的long类型参数没有进行转换,以至于前端取值时,中间有逗号. 所以,遇到此问题时首要是看你 的参数. 原文地址:https://www.cnblogs.com/zeussbook/p/9828765.html

SpringMVC使用Ajax请求返回中文乱码

前言: 最近在写一个JavaWeb后台时采用了spring+MyBatis+MySQL的方式.记录下遇到的关键问题 接口返回数据相关 使用@ResponseBody后返回NUll 说明:刚把后台运行起来,兴高采烈的测试接口数据,结果无论如何都是返回null, 最终通过各种百度,发现原来是没有引入关键的Jar包. 解决办法: 需要引入jackson的jar包(jackson core和jackson mapper),引入后 图: 使用@RequestMapping返回中文乱码 原因分析:(网上基本

关于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>

解决ajax请求cors跨域问题

”已阻止跨源请求:同源策略禁止读取位于 ***** 的远程资源.(原因:CORS 头缺少 'Access-Control-Allow-Origin').“ ”已阻止跨源请求:同源策略禁止读取位于 ******的远程资源.(原因:CORS 请求失败).“ 在项目中或者练习中经常遇到ajax请求跨域的问题,除了可以用jsonp的请求模式,并且在后台支持回调的方式以外,还可以通过简单的配置webconfig文件或者IIS,解决该问题. 一.通过修改配置文件解决CORS跨域问题 在配置文件中的webse

ajax请求报语法错误

今天改代码修正完一个ajax请求后,调试发现出错进error方法,查看错误信息报语法错误,具体是调用parseJSON方法时出错,因为我是用json方式传递的参数,所以第一时间查看data参数是否正确,怎么看也没看出来data参数有问题,但是报的这个错误是客户端错误呀,这怎么搞?查别人遇到这种情况看到说最后还是服务器端的问题于是就试着调试一下服务器端代码,结果还真是..........因为一个地方验证了数据格式,如果不符合格式的我直接用Response.End(); 代码返回了,应该是ajax请

SpringMVC进行Ajax请求页面显示乱码

最近在项目的使用过程中发现在springmvc的项目中,使用返回页面的请求方式,数据都能正常显示,但是对于ajax的请求,始终显示乱码. 首先第一种是因为我们在web.xml中配置了spring的字符编码过滤器,那么使用ajax请求为什么就不行了呢? 下面简单的分析一下,仅供参考. 先列出简单的请求代码: //Java代码 @Controller @RequestMapping("Goods") public class GoodsController { @RequestMappin