当前位置: 代码迷 >> 综合 >> 【Java】已经引入了 jackson 包,访问服务依然出现406问题
  详细解决方案

【Java】已经引入了 jackson 包,访问服务依然出现406问题

热度:109   发布时间:2023-09-21 00:51:21.0

目录

一、现象

二、检查流程

2.1 406 错误是什么?

2.2 检查是否引入了 jackson 包

2.3 后缀是否是html,若是html,不能返回json数据

三、解决方法


一、现象

访问接口,提示406

【Java】已经引入了 jackson 包,访问服务依然出现406问题

 

二、检查流程

2.1 406 错误是什么?

HTTP 406 错误指无法接受 (Not acceptable)错误。

即当浏览器检测到接收到的响应数据不是预期中客户端要收到的数据时,会反馈带有406错误的标头。

由此可知,我们应该检查服务器的响应格式是否正确

 

2.2 检查是否引入了 jackson 包

可以在依赖中看到,我的确引入了 jackson 的相关依赖

【Java】已经引入了 jackson 包,访问服务依然出现406问题

 

2.3 后缀是否是html,若是html,不能返回json数据

问题很明显了,由于浏览器认为访问html页面,应该返回的就是字符串,而不能是 json 格式数据。

【Java】已经引入了 jackson 包,访问服务依然出现406问题

 

三、解决方法

通过修改 web.xml 配置,增加一个针对 *.action 请求的匹配规则

<!-- springmvc的前端控制器 -->
<servlet><servlet-name>aa-portal</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- contextConfigLocation不是必须的, 如果不配置contextConfigLocation, springmvc的配置文件默认在:WEB-INF/servlet的name+"-servlet.xml" --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping><servlet-name>aa-portal</servlet-name><!--    伪静态化    --><url-pattern>*.html</url-pattern>
</servlet-mapping>
<!--    增加匹配规则    -->
<servlet-mapping><servlet-name>aa-portal</servlet-name><url-pattern>*.action</url-pattern>
</servlet-mapping>

 

  相关解决方案