开发问题快速定位之JSP_NullPointerException
1、先创建一个Dynamic Web Project名为jspnpe,其中npe为NullPointerException简称,可以知道这个项目是用来演示jsp的空指针异常的。注意:新建的时候,直接点Finish,使用默认配置即可,这里默认你已经配置好开发环境了,配置环境部署本文重点。
2、我们新建一个index.jsp,方法:右键WebContent->New->JSP File,名称改为index.jsp然后点Finish即可
3、我们写一句可以触发空指针异常的代码:<%=session.getAttribute("userLogin").toString()%>
4、发布运行后,访问http://localhost:8080/jspnpe可以看到页面上已经有了空指针异常的提示了java.lang.NullPointerException org.apache.jsp.index_jsp._jspService(index_jsp.java:118)
5、这里是非常简单的JSP页面,所以会有提示在哪一行报空指针异常:org.apache.jasper.JasperException: An exception oc艘早祓胂curred processing JSP page /index.jsp at line 10这里是精确提示你index.jsp在第10行报空指针异常,而且第10行代码也已给出:10: <%=session.getAttribute("userLogin").toString()%>但是在实际项目中,比如我使用SSH开发的,并没有提示的那么精确,因此需要进行第二步的定位空指针,页面上给出了java.lang.NullPointerException org.apache.jsp.index_jsp._jspService(index_jsp.java:118)就是这个118行,这个提示在使用框架的时候也会出现,不会被隐藏,重点就是找到这个index_jsp.java:118在哪里咋一看这个包org.apache.jsp.index_jsp._jspService,以为是apache的官方源码包,其实并不是,而是我们的代码被编译后,默认生成的,位置就在Tomcat的位置下:apache-tomcat-8.0.30\work\Catalina\localhost\jspnpe\org\apache\jsp\index_jsp.java,只要打开这个文件,找118行,就能找出哪一个代码引发异常,然后就可以修改了
6、打开index_jsp.java看到11呖分甾胗8行的代码:out.print(session.getAttribute(媪青怍牙"userLogin").toString());正是符合了我们的预期,因为这段代码会导致空指针,修改也很简单,因为session变量里面并没有保存userLogin属性,因此session.getAttribute("userLogin")肯定是空的,然后调用toString()方法必然会引发空指针异常修复方法是在调用toString()方法前判断session.getAttribute("userLogin")不为空即可。本文完,谢谢阅读。