SpringMVC @ResponseBody返回json数据 浏览器406 error 解析
来源:互联网 发布:nginx 菜鸟教程 编辑:程序博客网 时间:2024/05/19 02:29
引起原因:
1.web.xml配置的SpringMVC <url-pattern>*.html</url-pattern>
2.jar包的引用问题
SpringMVC4中:引入faster json包:以下给出maven依赖:引入json三大包之后:mvc配置文件中不需要配置messagehandleradapt 添加json转换器;SpringMVC会自动加载json转换器,当存在json包时;
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.5.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.5.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.5.0</version></dependency>
情况一:
web.xml配置如下:
1.<url-pattern>*.html</url-pattern>拦截html后缀的请求
<servlet><servlet-name>spring-mvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath*:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>spring-mvc</servlet-name><url-pattern>*.html</url-pattern></servlet-mapping>
此时你的请求为html的后缀,返回浏览器的request的header为Content-Type:text/html;charset=utf-8
实际上数据此时是json格式,于是浏览器就会报出406错误:(HTTP 406错误是HTTP协议状态码的一种,表示无法使用请求的内容特性来响应请求的网页。一般是指客户端浏览器不接受所请求页面的 MIME 类型),浏览器使用html解析不了json数据,于是报错,也就是说此处如果是Content-Type:application/json;charset=UTF-8的类型,浏览器就不会报错了,如下截图:
此时浏览器不报错了!!
为此我们需要进行一个配置,我们要引入内容协商管理器,并将其加入<mvc:annotation-driven/>
代码:
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> <property name="favorPathExtension" value="false" /> <property name="favorParameter" value="false" /> <property name="ignoreAcceptHeader" value="false" /> <property name="mediaTypes" > <value> atom=application/atom+xml html=text/html json=application/json *=*/* </value> </property> </bean>
在管理器中mediaTypes变量配置了对应类型value的Content-Type,紧接着配置<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager"/>,加入mvc的引用中;此时浏览器访问正常;情况二:
<url-pattern></url-pattern>配置为拦截所有请求,请求无后缀情况下,引入json包,即可使用@ResponseBody 返回json数据,无需配置内容协商管理器;
0 0
- SpringMVC @ResponseBody返回json数据 浏览器406 error 解析
- springmvc @ResponseBody 返回json数据错误
- springmvc @ResponseBody 返回json数据错误
- springmvc配置responsebody返回json格式数据
- SpringMVC @ResponseBody注解 json转换 返回406
- springMVC使用@ResponseBody返回json
- SpringMVC@ResponseBody返回JSON乱码
- easyui ajax请求获取SpringMVC @ResponseBody返回Json数据
- Springmvc 4.x利用@ResponseBody返回Json数据
- Springmvc 4.x利用@ResponseBody返回Json数据
- SpringMVC返回json数据(@ResponseBody注解的使用)
- Springmvc 4.x利用@ResponseBody返回Json数据
- JSON解析类库之Gson(7) --- Gson与SpringMVC的整合,利用@ResponseBody返回Json数据
- spring4.1.5 @ResponseBody返回JSON数据406
- springmvc @ResponseBody返回json 报406 not acceptable
- springmvc使用@ResponseBody返回json乱码解决方法
- springmvc无法通过@ResponseBody返回json问题解决
- SpringMVC @ResponseBody 返回json date 转换
- Codeforces Round #392 (Div. 2) F. Geometrical Progression(数学)
- Zookeeper学习总结
- DNS开源服务器BIND最小配置详解
- 【WC2017四校联考5】B君的宴请 题解
- 唤醒系统详解
- SpringMVC @ResponseBody返回json数据 浏览器406 error 解析
- 分布式内存数据库---Redis的持久化
- 文件基本权限
- 第一次写博客~想发个代码水水~
- mudicom Ubuntu 安装
- 理解MySQL——索引与优化
- 查询缓存 打开、设置、查询参数、性能变量
- 【项目记录】-上门洗车-汽车服务
- 五、世界上最好的网站后端语言php