java406错误_Java项目部署遇到406错误[通俗易懂]

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

大家好,又见面了,我是你们的朋友全栈君。

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部署后,重新启动成功。

参考文章:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/126953.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 阿里云服务器使用freessl配置免费证书Nginx

    阿里云服务器使用freessl配置免费证书Nginx环境:阿里云服务器购买的域名服务器:linux+nginxSSL证书:FreeSSL申请的免费证书步骤1、申请ssl证书具体参考二哥的“五分钟搞定HTTPS配置,二哥手把手教”https://blog.csdn.net/qing_gee/article/details/90031376博客,这位大佬写的很详细了2、配置阿里云服务器2.1、上传证书登陆阿里云控制台,搜索“ssl证书应用安全”,上传原有证书,注意一定要将证书转换为pem格式2.2、开启服务器443.

  • Java实现一个简单的冒泡排序「建议收藏」

    Java实现一个简单的冒泡排序「建议收藏」代码思路创建一个bound,(0,bound)是待排序区间。遍历数组,如果前一个的值大于后一个,交换。直到将这个最大值挪到数组的最后。代码示例importjava.util.Arrays;publicclassSort{publicvoidBubbleSort(int[]arr){//遍历数组,如果前一个的值大于后一个,交换。直到将这个最大值…

  • 图片爬虫

    图片爬虫参考视频学习,堆糖网图片爬虫"""1.URL2.模拟浏览器请求资源3.解析网页4.保存数据到本地"""importrequests#第三方库importurllib.parseimportjsonimportjsonpathurl=’https://www.duitang.com/napi/blog/list/by_search/?kw={}&s…

  • RTX3060安装pytorch

    RTX3060安装pytorchRTX3060安装pytorch1安装anaconda2查看本机显卡支持的cuda最高版本(2)根据pytorch版本选择要安装的CUDA(3)下载安装CUDA(4)下载cudNN(5)下载安装刚刚选择的pytorch版本前不久刚刚入手了一台新电脑,显卡为RTX3060,在安装环境的时候,踩了不少坑,现在将经验总结如下:1安装anaconda这个可以看这个教程:https://blog.csdn.net/in546/article/details/117400839需要注意的是,要记得添加到环

  • AutoDL算力租用++Pycharm中SSH、SFTP连接远程服务器[通俗易懂]

    AutoDL算力租用++Pycharm中SSH、SFTP连接远程服务器[通俗易懂]本文主要涉及GPU租用以及Pycharm中SSH、SFTP连接远程服务器

  • stat函数讲解_strcat函数

    stat函数讲解_strcat函数stat函数讲解表头文件:   #include<sys/stat.h>            #include<unistd.h>定义函数:   intstat(constchar*file_name,structstat*buf);函数说明:  &nbs

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号