【问题标题】:Whats wrong with this JSP code这个 JSP 代码有什么问题
【发布时间】:2016-12-16 13:31:20
【问题描述】:

我的 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)

【问题讨论】:

  • 您实际上应该打印e.getLocalizedMessage(),这样您就可以看到问题所在了。
  • 查看 AddCustomer.insertData 方法的实现。可能您有一些未初始化的字段。
  • 你看到你正在调用一个名为 insrtData 的方法并执行一个选择吗??

标签: java jsp nullpointerexception


【解决方案1】:

如上所述,请尽量避免使用 scriptlet。还有一点是您是否在任何地方加载了驱动程序? 如果还没有,请尝试使用

Class.forName("com.mysql.jdbc.Driver");

希望有帮助

【讨论】:

  • 太棒了...这真是一个愚蠢的错误...我没有注意到,因为Java代码运行良好...但是为什么会发生这种情况...Java代码应该出错了,对吗?
  • 谢谢朋友...:)
【解决方案2】:

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

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

【讨论】:

  • 嘿 Lance,感谢您的建议,我将在学习过程中使用所有这些建议...我是新手,从基础开始...卡在这里太久了。 ..
【解决方案3】:

除了 Lance Java:

你检查过 openConn() 是否成功创建了一个连接吗?当您捕获异常并且对其没有太大作用时。您应该记录/打印它并抛出另一个异常,因为没有连接就无法继续。

【讨论】:

  • 嘿...正如我所说,我确实在 Java 本身中检查了相同的内容...并且它工作正常...我不确定是否以错误的方式调用该方法...
猜你喜欢
  • 2012-08-07
  • 2014-08-29
  • 2013-06-05
  • 2014-06-04
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多