JSP数据连接空指针错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP数据连接空指针错误相关的知识,希望对你有一定的参考价值。

MyEclipse控制台报错信息:
org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.query_jsp._jspService(query_jsp.java:92)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)

正在做单词查询系统,遇到这么一种情况:
现在做了1个备用的查询页面,该页面是query1.jsp,(主页面是query.jsp)备用页面是在jsp页面直接写数据库驱动,没用javaBean,
然后我先使用有Bean的query.jsp,使用Bean加载数据库驱动,查询某个单词以后提示
上述错误,然后我就先把地址栏中的query.jsp改成query1.jsp,发现可以查了,在工作目录下,我也发现多了一个ldb文件(与数据库同名),我再转回去,将地址栏上的query1.jsp改成query.jsp,结果发现query.jsp也可以查了

不知道这是什么原因

如果说是空指针错误,那么第一次没取到值可以理解,但是在我先成功链接到query1.jsp后却又可以正常运行query.jsp,这又该如何解释?

报错这一行是while(rs.next()) 说明rs值为null

JSP中相关代码
<jsp:useBean id="myQuery" scope="session" class="Bean.dbConn"/>
<%
String str=request.getParameter("query");//通过表单提交的关键词查询
if (str==null)str="";

ResultSet rs=myQuery.executeQuery("SELECT * FROM words WHERE words LIKE'%"+str+"%'");
while(rs.next())
%>
<table width="829" border='1'>
<tr><td width="100"><%=rs.getString("words")%></td>
<td width="199"><%=rs.getString("meaning")%></td>
<td width="345"><%=rs.getString("lx")%></td>
<td width="157"></td></tr>
</table>
<%

%>

应该是你的javaBean没有实例化,你把连接数据库驱动放在session范围内,为什么第一次不行,第二次行,就是因为第一次在session范围内没有实例化myQuery,而在第二次的时候你已经实例化好了放在session范围中了,要理解session的意义,简单的说吧,就是会话,当你关闭浏览器就是会话的结束,只要没有关闭,session里面的属性一直存在 参考技术A 应该是你的bean的原因

(。??)ノ~java常见错误

空指针错误

刚开始接触数组的时候,最容易出现的错误就是空指针错误。所谓空指针错误就是,一个引用指向了一个空的地址,而空的地址,没有地址,更没有数据,这时候用这引用去和别的数据对比,显然要出错。为了避免这种错误,首先,我们要知道,这种出错一般都是数组,所以,一旦程序用到了数组,就要优先考虑当前这个引用是不是指向的空地址?在循环判断的时候,为了避免空指针,我们可以将循环内的内容装进一个保护膜里面:

for (int i ; i < a.length ; i++) {

  if (a[i] != null) {

  循环执行内容;

  }

}

如上,在循环里面加一个判断,只有当该引用不是空指针才执行里面的循环内容,这样就能保护我们的程序不受空指针的影响

数据类型错误

 程序为了提高安全性和准确性,对数据是分了类的 ,当你定义了一个变量的数据类型,存在这个变量指向地址内的数据的类型必须与该变量定义时的数据类型一样。不然就会报错!有时候因为程序的要求,我们为了让数据在不同的数据类型变量之间传递,我们就要用到强制转换,但是这样会让数据有一定的损失。所以,尽量不使用。

逻辑错误

这是最麻烦,还好出现几率不大。当程序员思考对象之间的互动时,如果某个地方进了死胡同,这时候再继续思考下去,就会出现逻辑错误,程序编写完成,编译器也没有报错,但是程序运行出来的结果不是预期的样子。这时候就比较麻烦,只有挨着去找错误,这时候我们就可以用到DBUG,也可以用

System.out.println("1"); 这个语句来找出错误的地方,不过随着以后程序的不断扩张,这个方法就不好用了,毕竟程序模块太多。所以,我们要学习好DBUG的运用,来帮我们找出错误的地方。长时间找不出错误,就不要再憋,放松一下,换个思路再来想,一味地强迫只会让自己陷入错误的思路出不来,再怎么思考也没有办法。所以,在这里推荐大家找到适合自己的放松自己的方法,听说最近中国过劳死的人数在增加(?-?*),我们喜欢编程,但不要为了编程太玩命。留得青山在,不怕没材烧!

以上是关于JSP数据连接空指针错误的主要内容,如果未能解决你的问题,请参考以下文章

求助高手帮我解决java中连接数据库时配置文件的问题,总是抛出空指针的异常

关于数据库事务的问题

在ssm中修改后台正常数据库也改变了为啥报空指针

JAVA导出JAR文件后不能连接数据库了 Class.forName(driver).newInstance();空指针异常

空指针错误 java.lang.NullPointerException

第十三周学习进度