所以,我有一个jsp文件(ShowProducCatalog.jsp)试图通过javabean(ProductDataBean.java)从mysql数据库中检索数据。我正在使用netbeans IDE。我通过从netbeans id创建表并在mysql工作台中查看相同的表来确保服务器正在运行。但每次我启动我的应用程序时都会收到此错误
org.apache.jasper.JasperException: An exception occurred processing JSP page /ShowProductCatalog.jsp at line 9
6:
7: <html>
8: <body>
9: <% List productList = data.getProductList();
10: Iterator prodListIterator = productList.iterator();
11: %>
12:
根本原因来自我的豆子 根本原因
java.lang.NullPointerException
cart.ProductDataBean.getProductList(ProductDataBean.java:36)
org.apache.jsp.ShowProductCatalog_jsp._jspService(ShowProductCatalog_jsp.java:81)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
这是我的ProductDataBean部分,其中包含错误:
public class ProductDataBean implements Serializable
{
private static Connection connection;
public ProductDataBean()
{
try
{
String userName = "root";
String password = "root";
String url = "jdbc:mysql://localhost:/eshopdb";
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = DriverManager.getConnection(url,userName,password);
System.out.println("Database connection established");
}catch(Exception e){e.printStackTrace();}
}
public static Connection getConnection()
{
return connection;
}
public ArrayList getProductList() throws SQLException
{
ArrayList productList = new ArrayList();
Statement statement = connection.createStatement();//ERROR HERE
ResultSet results = statement.executeQuery("SELECT * FROM product");
while (results.next())
{...
似乎连接变量永远不会被初始化或者什么!但我的用户名,密码和网址是正确的。求救!
答案 0 :(得分:0)
不,不是。
String url = "jdbc:mysql://localhost/eshopdb";
请参阅http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html
这假设您使用的是默认端口3306。
你不应该走这条路。 JSP中的Scriptlet代码是1998年的老式东西 - 很长时间没有信誉。
您的ProductDataBean
不应该获取数据库连接 - 至少不是这样。连接池是要走的路。
您似乎没有清理任何资源。此应用程序将在短时间内崩溃,因为您将耗尽数据库中的连接和游标。