Java 使用servlet从mysql检索数据时出现空指针异常

Java 使用servlet从mysql检索数据时出现空指针异常,java,mysql,jsp,servlets,Java,Mysql,Jsp,Servlets,我试图从名为id的数据库中检索数据,它有两列uname和pass。我相信我的beans类是student类,完全可以,正如您所看到的,pol类用于与db交互,而类dispach将数据发送到jsp,我的问题是,当我在服务器上运行dispach时,我得到的是NullPointerException 公共类油料{ 公共列表getstudent引发异常{ 列表学生=新数组列表; 字符串connectionURL=jdbc:mysql://localhost:3306/pooya; 连接=空; 语句s=

我试图从名为id的数据库中检索数据,它有两列uname和pass。我相信我的beans类是student类,完全可以,正如您所看到的,pol类用于与db交互,而类dispach将数据发送到jsp,我的问题是,当我在服务器上运行dispach时,我得到的是NullPointerException

公共类油料{ 公共列表getstudent引发异常{ 列表学生=新数组列表; 字符串connectionURL=jdbc:mysql://localhost:3306/pooya; 连接=空; 语句s=null; 结果集rs=null; 试一试{ Class.forNamecom.mysql.jdbc.Driver; connection=DriverManager.getConnectionconnectionURL,根; 字符串sql=从id中选择*; s=connection.createStatement; s、 executeQuerysql; rs=s.getResultSet; 而rs.next{ 字符串uname=rs.getStringuname; 字符串过程=rs.getStringpass; student tempstudent=新学生取消姓名,通过; students.addtempstudent; } 留学生; }最后{ //关闭JDBC对象 紧密连接,s,rs; } } 私有void closeConnection连接、语句s、结果集rs{ 试一试{ 如果rs!=null{ rs.close; } 如果s!=null{ s、 接近; } 如果连接!=null{ connection.close;//并没有真正关闭它…只是将其放回连接池中 } }捕获异常exc{ exc.printStackTrace; } } } 您正在此行列表中使用pol成员变量student=pol.getstudent;在dispatchlistteacher方法中,但尚未初始化。您必须首先在构造函数中初始化它,或者以其他方式调用它的方法,否则您将确实得到一个NullPointerException


也考虑命名你的班级KEBAB,例如派遣而不是派遣。这就是Java类命名约定。

在请求有关异常的帮助时,请包括堆栈跟踪。特别是,指出它与粘贴中的哪一行相匹配。此外,异常有4个有用的信息位:类型、消息、跟踪和原因。如果使用“e.printStackTrace”,您将丢弃4件有用的东西中的3件,因此停止这样做,这是错误代码的迹象,并且使查找问题原因变得非常困难。如果您不知道如何处理一个异常,那么回退的方法是“抛出新的RuntimeExceptionOne”,而不是“e.printStackTrace”。感谢您的评论,我按照您所说的更改了代码,现在我得到的是“SEVERE:Servlet.service for Servlet[response.dispach],在上下文中,路径为[/table]抛出异常”。在类dispach第44行中,它抛出异常如果您停止在任何地方编写e.printStackTrace,您将获得关于出错原因和发生位置的实际信息。这里有一条很好的经验法则:在编写java编程2年或更长时间之前,不允许写字母“printStackTrace”。曾经没有借口。我理解你的观点,但我不知道应该从哪里开始调试它?你能告诉他们如何初始化它吗?你可以这样做。pol=new pol;在dispatch类中的init方法中,就像处理java成员变量一样。它可以工作!我显示了我的表的值,但是我的数据应该转到我的jsp文件NewFile.jsp。当我运行dispach类时,url仍然在servlet上,而不是jsp上。你能告诉我怎么了吗?对不起,这可能是因为很多事情。您使用servlet是否有特定的原因?如果没有,我建议学习SpringMVC或SpringBoot之类的框架。使用SpringBoot,设置一个基本的模型视图控制器示例非常简单,它几乎是开箱即用的。有关更多信息,请参阅。如果出于任何原因您必须使用servlet,那么我建议您提出一个新问题,并提供示例代码等。我正在使用servlet进行一个学生项目,但我会尽快转向spring。您认为深入学习servlet对于启动spring框架有重要意义吗?