springMVC返回json时报406错误的bug

本文探讨了在SpringMVC框架下,当请求URL以.html结尾时,返回JSON数据出现406错误的问题及解决方案。通过调整web.xml配置,使特定路径能正确返回JSON。

    最近在项目遇到一个非常奇怪的问题,就是提交请求一个 http://www.wanan.com/user/doRegister.html   要求返回一个json数据。

    执行都正常,数据获取也正常,返回也正常。但是前台页面一直报406错误(406 Not Acceptable),一直百思不得其解。最后经过 多番查找,终于发现了问题所在;

    问题就在于请求以.html结尾。springMVC的bug,当以.html结尾请求时,就不能正常返回json。他会把返回当做一个HTML来处理。就不会返回json视图。

    问题原因:跟踪源码发现,它在返回json时有个判断,如果是html,他返回的是html,而不是json,那么这个问题如何解决呢?

    一种是直接去掉.html后缀名,但是如果拦截器拦截的.html后缀的请求,就无法进入springMVC框架,这样的话改动的地方就太多了。

    另一种就是在web.xml中再加一个规则,也就是两个规则进入springMVC框架。

                      <servlet-mapping>

                               <servlet-name>springmvc-web</servlet-name>

                               <url-pattern>/service/*<url-pattern>

                       </servlet-mapping>

     也就是访问也service开头的也都能进入springMVC框架,以避开html为结尾的请求。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值