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

参考文章:

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

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

(0)
上一篇 2022年4月8日 下午8:20
下一篇 2022年4月8日 下午8:40


相关推荐

  • J-Link JTAG/SWD接口

    J-Link JTAG/SWD接口仿真器端口连接目标板备注1.VCCMCU电源VCCVCC2.VCCMCU电源VCCVCC3.TRSTTRSTTestReSeT/pin4.GNDGND或悬空 5.TDITDITestDataInpin

    2022年4月25日
    58
  • efcore MySQL json_EF Core查询jsonb

    efcore MySQL json_EF Core查询jsonb简介 JSON JavaScriptOb 在 web 开发和跨应用领域有着绝对的优势 甚至 Monodb Redis 数据库完全采用 json 存储 PostgreSQL 很早就已经全支持 JSON 类型的存储和查询 为了更大的提高 JSON 查询效率 PostgreSQL 提供了 jsonb 类型用来存储 JSON 目前 jsonb 的结构化 sql 查询已经十分强大 但是对于许多 web 开发者来说写 sql 已经

    2026年3月16日
    3
  • eclipse的maven插件(eclipse更新maven仓库)

    打开eclipse的help菜单,选择installnewsoftware项。2、在弹出的窗口中选择whatisalreadyinstalled,就会弹出所有安装的插件,选择maven,点击uninstall,卸载后重启eclipse即可。我的是卸载圈中的这两个…

    2022年4月17日
    147
  • module ‘tensorflow’ has no attribute ‘placeholder’

    module ‘tensorflow’ has no attribute ‘placeholder’tensorflow2.0提示错误:module’tensorflow’hasnoattribute’placeholder’解决办法:不要使用:importtensorflowastf替换为:importtensorflow.compat.v1astftf.disable_v2_behavior()tensorflow的新变化,后续查到具体的文档,再补…

    2022年7月13日
    106
  • Python生成exe文件的方法及步骤

    Python生成exe文件的方法及步骤为什么要生成可执行文件不需要安装对应的编程环境 可以将你的应用闭源 用户可以方便、快捷的直接使用打包工具pyinstaller安装pyinstaller如果你的网络稳定,通常直接使用下面的命令安装即可:pipinstallpyinstaller检查pyinstaller安装成功与否:只需要执行如下命令其中一个即可:pyinstaller-vpyi…

    2022年6月9日
    56
  • 同时安装两个Tomcat配置教程(Win10)

    同时安装两个Tomcat配置教程(Win10)转载注明出处前言在日常开发中,有时候一个Tomcat容器不能满足我们的需求,那么能不能在一台机器上配置多个Tomcat呢?答案是可以的!本文将演示如何在WIN10下配置双Tomcat(Tomcat8.5.x和Tomcat9.0.x)。话不多说,开始吧!Linux下的请参考我的另一篇博客:(后续更新)准备下载ZIP配置多Tomcat推荐都使用ZIP版本,才能修改配置来避免冲突;不准备…

    2022年6月21日
    81

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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