java406错误_Java项目部署遇到406错误

1、406错误

发生406错误的原因是服务器传递回来的值客户端无法解析。通过在谷歌浏览器的开发浏览器查看代码,发现RequestHeader的Accept格式为application/json格式,而服务器传回的报文中ResponseHeader的格式却为text/html,导致js解析不了数据,报406错误。因此,我们需要将服务器的数据先转换成json,再将其以application/json的Content-type传回给客户端,需要导入jackson的jar包。

com.fasterxml.jackson.core

jackson-core

2.9.10

com.fasterxml.jackson.core

jackson-annotations

2.9.10

com.fasterxml.jackson.core

jackson-databind

2.9.10

jackson包的可选对象有很多,包括 com.fasterxml.jackson、org.codehaus.jackson、com.alibaba.fastjson,那么为什么要选fasterxml呢?选它的依据在哪呀?之后会提到。

显然,只导包是没有用的,我们得有工具去转换对象,这里jackson包已经给我们提供了工具类。

在讲工具类前,我们先要了解一点知识,那就是@ResponseBody这个注解:

对于没有添加@ResponseBody注解的Controller方法,其返回值应该是一个View,即一个具体的视图交给DispatcherServlet,然后由配置好的ViewResolver去解析这个View。SpringMVC框架提供了好几种视图解析器,我主要讲一个:internalResourceViewResolver,它将视图解析为Web的内部资源,通常为JSP。若方法返回的是ModelAndView,则视图解析器根据View的name来定位资源,若方法返回的是字符串,则将该字符串当作View的name,用它来定位资源。

而对于添加了@ResponseBody注解的Controller方法(等价于@RestController),其返回值不作为视图资源定位的依据,而是通过一个转换器将返回对象转换成json格式传递给调用方。org.springframework.http.converter.json.MappingJackson2HttpMessageConverter  就是这样的一个转换器,他由Spring框架提供,能将对象转换成json格式再进行回传。

通过查看这个对象,发现它有  com.fasterxml.jackson  包对象的引用,故如果想使用它,必须导入fasterxml的jar包。

配置转换器的方式有两种:注解和非注解方式

application/json;charset=UTF-8

text/html;charset=UTF-8

注意:注解注入的转换器优先级要高于普通注入的json转换器。SpringMVC 默认只知其5个tag,分别是 mvc:annotation-driven,mvc:interceptors,mvc:view-controller,mvc:resources 和 mvc:default-servlet-handler。若要支持 mvc:message-converters 标签,需要在 classpath 下有对应 jar 包,然后配置文件配置正确:对于 spring-mvc.xml 中的 schema ,若配置为 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd,则该标签无法正常使用,而若配置为这样 http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd (3.1及以上),则该标签可以正常使用。

2、在pom.xml文件中添加jackson包依赖后,仍然报错java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException的原因

通过查看导出文件夹中的lib文件,发现没有fasterxml包,这是为什么呢?

检查project structure,在artifact中发现war部署文件中没有添加新添加的fasterxml包,将其依赖添加进war部署后,重新启动成功。

参考文章:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值