现在的位置: 首页 > 综合 > 正文

避免java.lang.NullPointerException错误(jsp调试过程中烦人而无奈的java异常)

2018年05月15日 ⁄ 综合 ⁄ 共 1258字 ⁄ 字号 评论关闭

无论你用的是websphere、tomcat还是resin平台,只要你选择的是jsp开发语言,肯定碰到过下面的错误,挺烦人的,主要是无相关详细的提示信息。

有没有好的解决办法?回答是:有

java.lang.NullPointerException
org.apache.jsp.do_005fupdate_jsp._jspService(do_005fupdate_jsp.java:84)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

出现上述错误或异常的绝大部分原因是你的sql语句出了问题!也就是说你的oracle、DB2、sqlserver或者mysql无法处理通过jsp传递过来的sql语句。

书写jsp代码时,先用out.print打印出jsp返回的sql语句,然后在你的数据库查询分析器中(oracle、DB2、sqlserver或者mysql)执行一次,确保没有任何错误主要原因是这个sql语句一般是带有计算或者传递过来的参数(变量经常是经过计算的,类型和结果可能事先没有估计充分到),有时候可能会忘记单引号或者多加了空格等,这个过程最容易出错!

比如 "select xm,sfzh,csrq from JZG_JBXX where convert(substring(csrq,6,5)) = '"+M_D+"'"

上面的语句是典型的sql语句,这个语句的语法容易出错,一旦其中某处出错(使用函数错误;变量类型错误;单引号错误等等等等),就肯定会导致java.lang.NullPointerException的错误提示。

所以简单的办法是:用out.print的语句先在你的数据库查询分析器中(oracle、DB2、sqlserver或者mysql)执行一次,确保没有任何错误。

看见正确的返回结果就可以放心大胆去写接下来的while(rs.next())等语句了。

 

经验总结:jsp中sql语句非常重要,程序大师们应该把所有可能的结果全想到,我确实见过刚开始jsp语句没有问题但是在特定条件下会出错,比如特定的时间导致sql语句得到一个意想不到的参数。菩萨保佑你!

抱歉!评论已关闭.