【问题标题】:java.lang.NullPointerException in JSP codeJSP 代码中的 java.lang.NullPointerException
【发布时间】:2017-04-17 13:56:33
【问题描述】:

在我的智慧结束后,我在这里发布问题。 我在开发小型 JSP Web 应用程序时收到“java.lang.NullPointerException”错误。 请帮我修复它。

下面我提到我的代码:

<body>
    <%!
        public class Actor{
        String URL = "jdbc:mysql://localhost:3306/henry_books";
        String USERNAME = "root";
        String PASSWORD = "adminroot";

        Connection connection = null;
        PreparedStatement selectActors = null;
        ResultSet resultSet = null;
        public Actor(){
        try{
            connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
            selectActors = connection.prepareStatement("SELECT * FROM author");

            }catch(SQLException e){
                e.printStackTrace();
            }
        }
        public ResultSet getActors(){
            try{
                resultSet = selectActors.executeQuery();
            }catch(SQLException e){
                e.printStackTrace();
            }
            return resultSet;
         }
        }
    %>
    <%
        Actor actor = new Actor();
        ResultSet actors = actor.getActors();
        while(actors.next()){
            %>
            <span><%= actors.getInt("authorNum")%></span>  
        <% }
    %>
</body>

在 ResultSet actor = actor.getActors() 上出现错误;线 错误:

  org.apache.jasper.JasperException: 

在第 48 行处理 JSP 页面 /book_app/web/index.jsp 时发生异常

45:         %>
46:         <%
47:             Actor actor = new Actor();
48:             ResultSet actors = actor.getActors();
49:             while(actors.next()){
50:                 %>
51:                 <span><%= actors.getInt("authorNum")%></span>  


Stacktrace:    
root cause

java.lang.NullPointerException
org.apache.jsp.book_005fapp.web.index_jsp$Actor.getActors(index_jsp.java:39)
org.apache.jsp.book_005fapp.web.index_jsp._jspService(index_jsp.java:109)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)

【问题讨论】:

  • 您检查过您的日志吗?因为当connection = DriverManager.getConnection(URL, USERNAME, PASSWORD); 抛出异常是导致selectActors = connection.prepareStatement("SELECT * FROM author"); 不被执行的一个路径。
  • 其实我是 JSP 新手。好心你能指导我如何解决它吗?提前致谢。
  • 这不是 JSP 特有的,它是通用的 Java 代码逻辑。如果getConnection 抛出异常,它会被您的catch 捕获,并且prepareStatement 不会被执行,因此selectActors 仍然是nullgetActorsnull 实例上调用executeQuery,从而导致NullPointerException。调试你的应用程序,看看它为什么会抛出异常。不要捕获使您的类处于不再可用状态的异常。
  • javax.servlet.ServletException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
  • java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

标签: java jsp exception error-handling


【解决方案1】:

在建立连接之前添加 Driver 类,并确保您已在 lib 文件夹中添加了 mysql-connector.jar 文件。

public Actor(){
    try{
        Class.forName("com.mysql.jdbc.Driver");  //Add this line
        connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        selectActors = connection.prepareStatement("SELECT * FROM author");

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

Refer this for details

【讨论】:

    猜你喜欢
    • 2015-06-28
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 2010-12-27
    相关资源
    最近更新 更多