首页 > 软件开发 > ECLIPSE >

开发问题快速定位之JSP_NullPointerException

来源:互联网 2023-03-17 00:10:08 版权归原作者所有,如有侵权,请联系我们

在开发的时候,使用MVC模式,用到jsp作为v层展示,在应用的时候发现了空指针异常Caused by: java.lang.NullPointerException,下面分析一下这个异常怎么快速处理S5b办公区 - 实用经验教程分享!

工具/原料

  • eclipse jee版本不限,只要是jee版本即可
  • jdk 1.8(本教程使用1.8,也可以使用其他版本)
  • tomcat 8.0(本教程使用8.0,也可以使用其他版本)

方法/步骤

  • 1

    先创建一个Dynamic Web Project名为jspnpe,其中npe为NullPointerException简称,可以知道这个项目是用来演示jsp的空指针异常的。S5b办公区 - 实用经验教程分享!

    注意:新建的时候,直接点Finish,使用默认配置即可,这里默认你已经配置好开发环境了,配置环境部署本文重点。S5b办公区 - 实用经验教程分享!

    开发问题快速定位之JSP_NullPointerExceptionS5b办公区 - 实用经验教程分享!

    开发问题快速定位之JSP_NullPointerExceptionS5b办公区 - 实用经验教程分享!

  • 2

    我们新建一个index.jsp,方法:右键WebContent->New->JSP File,S5b办公区 - 实用经验教程分享!

    名称改为index.jsp然后点Finish即可S5b办公区 - 实用经验教程分享!

    开发问题快速定位之JSP_NullPointerExceptionS5b办公区 - 实用经验教程分享!

    开发问题快速定位之JSP_NullPointerExceptionS5b办公区 - 实用经验教程分享!

  • 3

    我们写一句可以触发空指针异常的代码:S5b办公区 - 实用经验教程分享!

    %=session.getAttribute("userLogin").toString()%>S5b办公区 - 实用经验教程分享!

    开发问题快速定位之JSP_NullPointerExceptionS5b办公区 - 实用经验教程分享!

  • 4

    发布运行后,访问S5b办公区 - 实用经验教程分享!

    http://localhost:8080/jspnpeS5b办公区 - 实用经验教程分享!

    可以看到页面上已经有了空指针异常的提示了S5b办公区 - 实用经验教程分享!

    java.lang.NullPointerExceptionS5b办公区 - 实用经验教程分享!

    org.apache.jsp.index_jsp._jspService(index_jsp.java:118)S5b办公区 - 实用经验教程分享!

    开发问题快速定位之JSP_NullPointerExceptionS5b办公区 - 实用经验教程分享!

  • 5

    这里是非常简单的JSP页面,所以会有提示在哪一行报空指针异常:S5b办公区 - 实用经验教程分享!

    org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 10S5b办公区 - 实用经验教程分享!

    这里是精确提示你index.jsp在第10行报空指针异常,而且第10行代码也已给出:S5b办公区 - 实用经验教程分享!

    10: %=session.getAttribute("userLogin").toString()%>S5b办公区 - 实用经验教程分享!

    但是在实际项目中,比如我使用SSH开发的,并没有提示的那么精确,因此需要进行第二步的定位空指针,页面上给出了S5b办公区 - 实用经验教程分享!

    java.lang.NullPointerExceptionS5b办公区 - 实用经验教程分享!

    org.apache.jsp.index_jsp._jspService(index_jsp.java:118)S5b办公区 - 实用经验教程分享!

    就是这个118行,这个提示在使用框架的时候也会出现,不会被隐藏,S5b办公区 - 实用经验教程分享!

    重点就是找到这个index_jsp.java:118在哪里S5b办公区 - 实用经验教程分享!

    咋一看这个包org.apache.jsp.index_jsp._jspService,以为是apache的官方源码包,其实并不是,而是我们的代码被编译后,默认生成的,S5b办公区 - 实用经验教程分享!

    位置就在Tomcat的位置下:apache-tomcat-8.0.30workCatalinalocalhostjspnpeorgapachejspindex_jsp.java,只要打开这个文件,找118行,就能找出哪一个代码引发异常,然后就可以修改了S5b办公区 - 实用经验教程分享!

    开发问题快速定位之JSP_NullPointerExceptionS5b办公区 - 实用经验教程分享!

  • 6

    打开index_jsp.java看到118行的代码:S5b办公区 - 实用经验教程分享!

    out.print(session.getAttribute("userLogin").toString());S5b办公区 - 实用经验教程分享!

    正是符合了我们的预期,因为这段代码会导致空指针,S5b办公区 - 实用经验教程分享!

    修改也很简单,因为session变量里面并没有保存userLogin属性,S5b办公区 - 实用经验教程分享!

    因此session.getAttribute("userLogin")肯定是空的,S5b办公区 - 实用经验教程分享!

    然后调用toString()方法必然会引发空指针异常S5b办公区 - 实用经验教程分享!

    修复方法是在调用toString()方法前判断session.getAttribute("userLogin")不为空即可。S5b办公区 - 实用经验教程分享!

    S5b办公区 - 实用经验教程分享!

    S5b办公区 - 实用经验教程分享!

    本文完,谢谢阅读。S5b办公区 - 实用经验教程分享!

    开发问题快速定位之JSP_NullPointerExceptionS5b办公区 - 实用经验教程分享!

  • 6此文章非法爬取自百度经验
  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!S5b办公区 - 实用经验教程分享!


    标签: ECLIPSETOMCAT

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号