【问题标题】:Cannot Access MySQL database无法访问 MySQL 数据库
【发布时间】:2020-06-12 07:04:30
【问题描述】:

我刚刚在 tomcat 上部署了我的第一个“战争”文件。我能够使用我自己计算机上的网络 IP 地址从我的浏览器中打开 JSP 表单。但是,当我尝试提交表单时,我看到以下错误消息:

'''HTTP Status 500 – Internal Server Error
Type Exception Report

Message java.lang.NullPointerException

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.apache.jasper.JasperException: java.lang.NullPointerException
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:605)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:515)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause

java.lang.NullPointerException
    org.apache.jsp.response_jsp$BondPay.display(response_jsp.java:44)
    org.apache.jsp.response_jsp._jspService(response_jsp.java:178)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Note The full stack trace of the root cause is available in the server logs.'''

这是我的 response.jsp 页面代码。如您所见,这是一个简单的测试页面,其中实现了类。

 <%@page import="java.sql.*" %>
    <%Class.forName("com.mysql.jdbc.Driver") ; %>
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF- 
    8">
            <title>JSP Page</title>
            <link href="My Resources/font-awesome/css/fontawesome.css" 
    rel="stylesheet" type="text/css"/>
            <link href="My Resources/bootstrap/css/bootstrap.min.css" 
   rel="stylesheet" type="text/css"/>
            <script src="My Resources/jquery/jquery-3.4.1.min.js" 
   type="text/javascript"></script>
        </head>
        <body>
             <%!
            public class BondPay {

    String URL ="jdbc:mysql://localhost:3306/bondrepayments";
    String USERNAME="root";
    String PASSWORD="root";

    Connection connection=null;
    PreparedStatement selectActors=null;
    ResultSet resultSet=null;

    public BondPay(){

    try{

    connection=DriverManager.getConnection(URL,USERNAME,PASSWORD);
    selectBond=connection.prepareStatement("SELECT * FROM repayments WHERE 
    bond_value= ? AND bond_Serial= ? AND currency=?");
    }catch(SQLException e){
    e.printStackTrace();
    }
    }

    public ResultSet display(String amount, String serial,String currency){
    try{
    selectBond.setString(1, amount);
    selectBond.setString(2, serial);
    sselectBond.setString(3, currency);
    resultSet=selectBond.executeQuery();

    }catch(SQLException e){
    e.printStackTrace();
    }
    return resultSet;
    }
    }
      %>
      <%String currency=request.getParameter("currency");
                String serial=request.getParameter("serial");
                String amount=request.getParameter("amount");

       BondPay bondPaid=new BondPay();
            ResultSet res=bondPaid.display(amount,serial,currency);

      %>       

            <div class="table-responsive">
            <table class="table table-striped table-bordered">
                <thead>
                    <tr>
                        <th><h3>Result</h3></th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td><h4>Place of Issue</h4></td>
                        <td><h4>Bond Serial</h4></td>
                        <td><h4>Bond Holder Name</h4></td>
                        <td><h4>Bond Value</h4></td>
                        <td><h4>Currency</h4></td>
                        <td><h4>Days</h4></td>
                        <td><h4>Interest</h4></td>
                        <td><h4>Principal</h4></td>
                        <td><h4>Total</h4></td>
                        <td><h4>Letter Reference</h4></td>
                    </tr>
                <div class="alert alert-danger" > 
                <strong> <% 
                        if(!res.isBeforeFirst()){
                        out.println("No records found !");}
              else {%></strong></div><%
                        while(res.next()){%>
                    <tr>
                        <td><%= res.getString("location")%></td>
                        <td><%= res.getString("bond_serial")%></td>
                        <td><%= res.getString("bond_holder_name")%></td>
                        <td><%= res.getString("bond_value")%></td>
                        <td><%= res.getString("currency")%></td>
                        <td><%= res.getString("days")%></td>
                        <td><%= res.getString("interest")%></td>
                        <td><%= res.getString("principal")%></td>
                        <td><%= res.getString("total")%></td>
                        <td><%= res.getString("reference")%></td>
                    </tr>
                    <%}}%>
                </tbody>
            </table>
            </div>

【问题讨论】:

  • 也发布您的代码。
  • @Swati,我刚刚在上一个下面添加了我的代码,你能再检查一下吗?
  • currency ,amount and serial 有要求的值吗?尝试打印和检查。

标签: mysql jsp tomcat


【解决方案1】:
}catch(SQLException e){
    e.printStackTrace();
    }

这部分代码基本上隐藏了您在连接数据库或查询时可能遇到的任何错误。从跟踪中可以清楚地看出resultSet=selectBond.executeQuery(); 语句面临NPE,因为selectBondnull。您的数据库连接因某些错误而失败,之前可能已打印过该错误。最好使用适当的日志记录或异常引发来了解究竟出了什么问题。

请尝试将日志添加到异常中并检查您的数据库连接中究竟出了什么问题。我知道这不是一个完美的答案,但我不能在评论中添加这些:-)

【讨论】:

    猜你喜欢
    • 2010-12-10
    • 2013-04-14
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多