我是学习JSP和Servlet的新手。我有一个调用存储过程的Java类,并返回一个数据库中的状态列表(这是我学习时的测试用例,其他更复杂的动作将在稍后发布)。状态列表应该返回给JSP以供在表单中显示/使用等。现在,我很高兴通过JSP页面获取数据打印,以便知道它在那里。
但是,当我从JSP调用Java代码时,看起来结果对象返回为空,因此没有数据可访问。我试图以ResultSet对象的形式返回数据,但结果是一样的。我知道存储过程在从SQL调用时可以工作。此外,我有Java代码作为servlet响应doPost请求,并且工作正常...
我可能会错过什么/未能理解?这可能吗?
package edu.XXXX.ais.userapp;
import java.sql.*;
import java.util.*;
public class DBQueries {
public static Vector getStatesList() {
Vector results = new Vector();
Connection con = null;
try {
// Example of executing a stored procedure
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection ("jdbc:mysql://hostname:3306/dbName","username","password");
CallableStatement cs = con.prepareCall("{call getStatesList()}");
ResultSet rs = cs.getResultSet();
while (rs.next()) {
results.add(rs.getString(1));
}
} catch (SQLException e) {
System.err.println("Servlet could not display records." + e);
} catch (ClassNotFoundException e) {
System.err.println("JDBC driver not found." + e);
} finally {
try {
if (con != null) {
con.close();
con = null;
}
} catch (SQLException e) {
System.err.println(e);
}
}
return results;
}
}调用上述Java代码的JSP页面(预计能够接收结果...)
FooList of states via a servlet call to the database
Vector rs = DBQueries.getStatesList();
if (rs != null)
for (int index = 0; index < rs.size(); index++) {
out.println("Name : " + (String) rs.get(index));
}
%>
产生的Tomcat错误如下所示:
org.apache.jasper.JasperException: An exception occurred processing JSP page /states.jsp at line 12
9:
10:
11:
12: Vector rs = DBQueries.getStatesList();
13: if (rs != null)
14: for (int index = 0; index < rs.size(); index++) {
15: out.println("Name : " + (String) rs.get(index));
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.lang.NullPointerException
edu.XXXX.ais.userapp.DBQueries.getStatesList(Unknown Source)
org.apache.jsp.states_jsp._jspService(states_jsp.java:75)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)