空指针异常Java Web应用程序

时间:2013-07-03 01:12:20

标签: jsp javabeans

所以,我有一个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())
        {...

似乎连接变量永远不会被初始化或者什么!但我的用户名,密码和网址是正确的。求救!

1 个答案:

答案 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不应该获取数据库连接 - 至少不是这样。连接池是要走的路。

您似乎没有清理任何资源。此应用程序将在短时间内崩溃,因为您将耗尽数据库中的连接和游标。