Javaweb中的最常见错误及其解决方法

1、200:表示成功处理业务。

2、400 请求出错: 由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就 无法重复此请求。

  • 解决办法:,遇到400问题,最大几率是出现了数据类型不一致的问题,简单来说是Controller层不用正确读取你发送请求附带的参数。该例是我前端传送JSON格式,使用postmen接收。

    一.发现400错误的,第一步确认postmen中发送的数据类型是json。比如Headers中Content-Type类型是application/json;或是前端代码Ajax中添加:contentType: 'application/json;charset=UTF-8'(如图);

    二.第一步确认postmen中发送的数据格式是否正确。postmen中经常有人有漏写一对“{}“或是缺少逗号,引号,冒号的小问,好在postmen会自动报错提示; 而在前端中你必须重新包装传入参数为JSON型。使用JSON.stringify(params)将params参数重新包装;

    三.正常解决以上两个问题,多数人错误也该解决了。如果还没有,我们就要在Controller接收处查找问题。

    顺带一说:前端用json传入,后端如果用对象接收,及时传入变量名与该对象的属性名对应上,也不会自动封装进去,当然也不会直接报错。如果想json型自动转换成对象,需要在对象前面添加@RequestBody注解。它会将JSON进行转换成为你指定的对象。

    ​ 但是我个人更喜欢用JSONObeject或Strng去接受,在用手动将它转化为我需要的对象,因为我传入的对象可能是嵌套好的,其中有一个对象,还有其他对象的List。在头部自动转化就会出现一些问题。

    言归正传,第三个可能出现400的问题就在这。使用RequestBody转化成String时,意外报错,类型不匹配。这一点也是我万万没想到的。因为之前一个项目基本都是用String在接收前端的JSON对象。这次却卡在400处。解决的方案很简单,使用JSONObject原原本本的接收JSON对象!直接使用!

3、404:服务器处理的路径存在问题,找不到相关请求资源;

4、405:容器找不到Servlet组件的service方法

  • 出现原因:

    继承自HttpServlet的Servlet没有重写对于请求和响应的处理方法:doGet或doPost等方法;默认调用父类的doGet或doPost等方法;

    父类HttpServlet的doGet或doPost等方法覆盖了你重写的doGet或doPost等方法;

    不管是1或2,父类HttpServlet的doGet或doPost等方法的默认实现是返回状态代码为405的HTTP错误,表示对于指定资源的请求方法不被允许。

    解决方法:

    ​ 重写doGet,doPost方法

5、500:容器找不到Servlet组件

  • 出现原因:(1)没有继承HttpServlet或实现Servlet接口 (2)写的不对 (3)service里的逻辑出现了问题

6、空指针错误 java.lang.NullPointerException

  • 使用基本的JAVA数据类型,变量的值要么已经是默认值,如果没有对其正常赋值,程序便不能通过编译,因此使用基本的JAVA数据类型 (double,float,boolean,char,int,long)一般不会引起空指针异常。由此可见,空指针异常主要跟与对象的操作相关。

7、格式化数字错误 java.lang.NumberFormatException

  • 如果用户输入正确的数字如:1082,不会有什么问题。然而,如果用户输入T1082时,由于T1082不是合法的数字格式,JAVA无法将其转化为合适的数字,导致抛出java.lang.NumberFormatException数字格式化异常。

8、字符串越界错误 java.lang.StringIndexOutOfBoundsException

  • 一般情况下,程序不会有问题,如果由于某种原因,s_all_power长度变短,程序就会抛出字符串错误。

9、类定义未找到错误 java.lang.NoClassDefFoundError

  • 原因:

      由于该程序调用到的JAVA类文件没有正确上传;

      解决方案:

      将JAVA类文件重新上传。

      JAVA类文件已经上传,但应用服务器并未检测到,建议将JSP页面重新更新。

      解决方案:

      将JSP页面更新并上传;或将应用程序服务器进行重新启动。

10、JAVA错误 java.lang.Error

  • 原因:

      1.对系统所访问外部资源,未执行关闭操作,导致外部资源大量浪费,最终可能导致系统无法正常运行;

      2.对系统所访问的外部资源关闭次数太多,外部系统无法正常处理;

      3.系统访问的外部资源出现异常情况。

      解决方案:

      1.访问外部资源前,首先检查该资源(如数据库)是否可正常连接或操作。

      2.访问外部资源时,如果进行了连接,一定进行关闭操作,并仅进行一次关闭操作。

      3.尽量在同一操作中共享外部资源,以减少该操作对资源的消费,提高程序的执行效率。

javaweb开发中的常见错误的更多相关文章

  1. Android jni开发中的常见错误

    错误1:java.lang.UnsatisfiedLinkError: Native method not found: 本地方法没有找到 1.本地函数名写错 2.忘记加载.so文件 没有调用Syst ...

  2. MVC开发中的常见错误-04-“System.NullReferenceException”类型的异常在 BBFJ.OA.WebApp.dll 中发生,但未在用户代码中进行处理

    未将对象引用设置到对象实例,又名空指针异常,伴随程序员开发的一生. 查看详细信息得知: SetUserRoleInfo() 首先想到的是  IBLL.IRoleInfoService RoleInfo ...

  3. JavaWeb开发中遇到的错误:org.apache.catalina.core.StandardWrapperValve invoke

    org.apache.catalina.core.StandardWrapperValve invoke 今天写代码,竟然接连遇到这个异常好几次.debug几个小时才弄明白,晕. 上网找了些拼凑下做个 ...

  4. jni开发中的常见错误

    * java.lang.UnsatisfiedLinkError: Native method not found: 本地方法没有找到 * 本地函数名写错 * 忘记加载.so文件 没有调用System ...

  5. MVC开发中的常见错误-02-在应用程序配置文件中找不到名为“OAEntities”的连接字符串。

    在应用程序配置文件中找不到名为“OAEntities”的连接字符串. 分析原因:由于Model类是数据库实体模型,通过从数据库中引用的方式添加实体,所以会自动产生一个数据库连接字符串,而程序运行到此, ...

  6. MVC开发中的常见错误-01未能加载文件或程序集“EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”或它的某一个依赖项。

    错误信息:未能加载文件或程序集“EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”或 ...

  7. MVC开发中的常见错误-07-“System.IO.DirectoryNotFoundException”类型的未经处理的异常在 mscorlib.dll 中发生

    “System.IO.DirectoryNotFoundException”类型的未经处理的异常在 mscorlib.dll 中发生 其他信息: 未能找到路径“F:\Users\home\Docume ...

  8. MVC开发中的常见错误-06-"无法在发送 HTTP 标头之后进行重定向。"

    通过监视可以看到: 原来是跳转到登录页面后,登录页面中又发送了一个GeMneuItems的请求,用于加载页面图片

  9. MVC开发中的常见错误-05-无法将类型“System.Data.Entity.Infrastructure.DbQuery<BBFJ.OA.Model.RoleInfo>”转换为“System.Collections.Generic.List<BBFJ.OA.Model.RoleInfo>”

    List<RoleInfo> roleInfoList = (List<RoleInfo>)ViewBag.AllRoles; 错误原因很明确了 ViewBag.AllRole ...

随机推荐

  1. CentOS7升级系统内核至4.4.xx版本

    CentOS7.x系统自带的3.10.x内核存在一些Bugs,导致运行的Docker.kubernetes不稳定,建议升级内核,容器使用的坑会少很多 下载内核源 rpm -Uvh http://www ...

  2. C++数的表示

    二进制B 八进制O 十进制D 十六进制H / 0x十六进制 十进制数转换成R进制数:整数部分除基取余,上右下左:小数部分乘基取整,上左下右.   浮点数的阶用一种称为移码的编码表示方法,方便对阶.阶的 ...

  3. Eligibility Traces and Plasticity on Behavioral Time Scales: Experimental Support of neoHebbian Three-Factor Learning Rules

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Abstract 大多数基本行为,如移动手臂抓住物体或走进隔壁房间探索博物馆,都是在几秒钟的时间尺度上进化的:相反,神经元动作电位则是在几 ...

  4. pandas 数据子集的获取

    有时数据读入后并不是对整体数据进行分析,而是数据中的部分子集,例如,对于地铁乘客量可能只关心某些时间段的流量,对于商品的交易可能只需要分析某些颜色的价格变动,对于医疗诊断数据可能只对某个年龄段的人群感 ...

  5. Git的详细使用

    关于Git的详细使用,下面博主的博客写的非常的详细! 可以参考一下. https://blog.csdn.net/qq_19835247/article/details/104620042 人生需要准 ...

  6. JS学习阶段性总结-1

    各种函数的声明 /** * 函数的声明 */ // 声明一个方法,任意调用 function aaa(args){...} // 声明一个函数并以变量的形式展示出去,因此无法再声明前调用 var fn ...

  7. 【小白学AI】GBDT梯度提升详解

    文章来自微信公众号:[机器学习炼丹术] 文章目录: 目录 0 前言 1 基本概念 2 梯度 or 残差 ? 3 残差过于敏感 4 两个基模型的问题 0 前言 先缕一缕几个关系: GBDT是gradie ...

  8. 前端测试框架Jest——语法篇

    使用匹配器 使用不同匹配器可以测试输入输出的值是否符合预期.下面介绍一些常见的匹配器.普通匹配器最简单的测试值的方法就是看是否精确匹配.首先是toBe() test('two plus two is ...

  9. 树(Tree)解题总结

    定义 树是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合.它是由 n(n>0) 个有限节点组成一个具有层次关系的集合.. 二叉搜索树(Binar ...

  10. ZOJ-2972-Hurdles of 110m(记忆化搜索)

    In the year 2008, the 29th Olympic Games will be held in Beijing. This will signify the prosperity o ...