这个JSP代码有什么问题

时间:2016-12-16 13:31:21

标签: java jsp nullpointerexception

我的JSP代码在这里有什么问题... java文件成功运行但是当我通过JSP调用该方法时,它无法在调用obj.insertData()方法时抛出错误。

<%@ page import="lvsdummy.AddCustomer, java.sql.*"%>
<html>
<head>
<title>Welcome page</title>
</head>
<body>
    <%
        AddCustomer obj = new AddCustomer();
        obj.openConn();
        obj.insertData();
    %>

</body>
</html>

这是Java文件 -

package lvsdummy;

import java.sql.*;

public class AddCustomer {
    String url = "jdbc:mysql://localhost:3306/lvs_db";
    String user_name = "root";
    String password = "root";

    Connection conn;
    PreparedStatement st;
    ResultSet rs;

    public void openConn() {
        try {
            conn = DriverManager.getConnection(url, user_name, password);

        } catch (SQLException e) {
            e.getLocalizedMessage();
        }
    }

    public String insertData() {
            String value = "";
            try {
                st = conn.prepareStatement("SELECT * FROM customer");
                //st.setString(1, firstname);
                //st.setLong(2, mobile1);
                rs = st.executeQuery();

                if (rs.next()) {
                    value = "Success";
                } else {
                    value = "Failed";
                }

            } catch (SQLException e) {
                e.getLocalizedMessage();
            }

            return value;
        }

    public static void main(String[] args) {
        AddCustomer obj = new AddCustomer();
        obj.openConn();
        System.out.println(obj.insertData());
    }
}

这是错误 -

org.apache.jasper.JasperException: An exception occurred processing JSP page /addCustomer.jsp at line 10

7:  <%
8:      AddCustomer obj = new AddCustomer();
9:      obj.openConn();
10:         obj.insertData();
11:     %>
12: 
13: </body>

root cause
java.lang.NullPointerException
    lvsdummy.AddCustomer.insertData(AddCustomer.java:26)

3 个答案:

答案 0 :(得分:0)

那是你在那里写的一些非常讨厌的代码

  1. 您在JSP中使用scriptlet,总是一个坏主意。您应该考虑使用MVC框架
  2. 您永远不会关闭数据库连接。应始终在finally子句
  3. 中关闭连接
  4. 将url / username / password作为AddCustomer上的属性是完全错误的。您应该考虑使用依赖注入框架

答案 1 :(得分:0)

除了Lance Java:

您是否检查openConn()是否成功创建了连接?当你发现异常时并没有做太多的事情。您应该记录/打印它并抛出另一个例外,因为您可以在没有连接的情况下继续。

答案 2 :(得分:0)

如上所述,请尽量避免使用scriptlet。还有一点是你在哪里装载了驱动程序? 请尝试使用,如果还没有

&#13;
&#13;
Class.forName("com.mysql.jdbc.Driver");
&#13;
&#13;
&#13;

希望有所帮助