在jsp

时间:2018-11-22 17:35:05

标签: java mysql sql jsp servlets

我很难弄清楚为什么我的代码出错了。下面是我的JSP文件(问题出在第二种形式上):

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Book Drivers</title>
</head>
<body>
    <h1>Book Demands</h1>
    <form method="POST" action="BookDriver.do">
        <br>View a table </br>
        <input type="radio" name="tbl" value="ListTodaysDemands">List Todays Demands<br />
        <input type="radio" name="tbl" value="ListAllDemands">List All Demands<br />
        <input type=submit value="Go!"> <br />
    </form>
</body>
<body>
    <h2>Demands</h2>
    <%=(String)(request.getAttribute("query"))%>
</body>
<body>
    <h2>Journeys</h2>
    <%=(String)(request.getAttribute("query1"))%>
</body>
<body>
    <h2>Drivers</h2>
    <%=(String)(request.getAttribute("query2"))%>
</body>
<body>
    <h2>Book taxi</h2>
    <form method="POST" action="BookDriver.do">     
        <table>
            <tr>
                <th></th>
                <th>Please provide your following details</th>
            </tr>
            <tr>
                <td>Name:</td>
                <td><input type="text" name="name"/></td>
            </tr>
            <tr>
                <td>Address:</td>
                <td><input type="text" name="address"/></td>
            </tr>
            <tr>
                <td>Destination:</td>
                <td><input type="text" name="destination"/></td>
            </tr>
            <tr>
                <td>Date:</td>
                <td><input type="text" name="date"/></td>
            </tr>
            <tr>
                <td>Time:</td>
                <td><input type="text" name="time"/></td>
            </tr>
            <tr> 
                <td> <input type="submit" value="Book"/></td>
            </tr>
        </table>
    </form>
</body>

下面是我的控制器:

public class BookDriver extends HttpServlet {


protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    response.setContentType("text/html;charset=UTF-8");
    LocalDate date = LocalDate.now();
    String qry1 = "select * from CUSTOMER";
    String qry2 = "select * from DRIVERS";
    String qry3 = "select * from DEMANDS where date = '"+date+"'"; 
    String qry4 = "select * from DEMANDS";
    String qry5 = "select * from JOURNEY";
    //String qry4 = "SELECT Drivers.Name, Drivers.Registration FROM Drivers LEFT JOIN Journey ON Journey.Registration = Drivers.Registration LEFT JOIN Demands ON Demands.Time = Journey.Time WHERE Demands.id IS NULL";
    //String qry4 = "SELECT Drivers.Name, Drivers.Registration FROM Drivers LEFT JOIN Journey ON Journey.Registration = Drivers.Registration LEFT JOIN Demands ON Demands.Date = Journey.Date LEFT JOIN Demands ON Demands.Time = Journey.Time WHERE Demands.id IS NULL"; 

    response.setContentType("text/html;charset=UTF-8");
    HttpSession session = request.getSession(false);

    Jdbc dbBean = new Jdbc();
    dbBean.connect((Connection)request.getServletContext().getAttribute("connection"));
    session.setAttribute("dbbean", dbBean);

    if((Connection)request.getServletContext().getAttribute("connection")==null)
        request.getRequestDispatcher("/WEB-INF/conErr.jsp").forward(request, response);

    else if (request.getParameter("tbl").equals("ListTodaysDemands")){
        String msg="No current demands";
        String msg2="No current journeys";
        String msg3="No current journeys";
        try {
            msg = dbBean.retrieve(qry3);
            msg2 = dbBean.retrieve(qry5);
            msg3 = dbBean.retrieve(qry2);
        } catch (SQLException ex) {
            Logger.getLogger(BookDriver.class.getName()).log(Level.SEVERE, null, ex);
        }
        request.setAttribute("query", msg);
        request.setAttribute("query1", msg2);
        request.setAttribute("query2", msg3);
        request.getRequestDispatcher("/WEB-INF/bookDemands.jsp").forward(request, response);
    }
    else if (request.getParameter("tbl").equals("ListAllDemands")){
        String msg="No current demands";
        String msg2="No current journeys";
        String msg3="No current drivers";
        try {
            msg = dbBean.retrieve(qry4);
            msg2 = dbBean.retrieve(qry5);
            msg3 = dbBean.retrieve(qry2);
        } catch (SQLException ex) {
            Logger.getLogger(BookDriver.class.getName()).log(Level.SEVERE, null, ex);
        }
        request.setAttribute("query", msg);
        request.setAttribute("query1", msg2);
        request.setAttribute("query2", msg3);
        request.getRequestDispatcher("/WEB-INF/bookDemands.jsp").forward(request, response);
    }
///////////THIS PART NOT WORKING//////////////////////////      
    String [] query = new String[5];
    query[0] = (String)request.getParameter("name");
    query[1] = (String)request.getParameter("address");
    query[2] = (String)request.getParameter("destination");
    query[3] = (String)request.getParameter("date");
    query[4] = (String)request.getParameter("time");

    Jdbc jdbc = (Jdbc)session.getAttribute("dbbean"); 

    if (jdbc == null)
       request.getRequestDispatcher("/WEB-INF/conErr.jsp").forward(request, response);

    if(query[0].equals("") ) {
        request.setAttribute("msg", "Username cannot be NULL");
    } 
    request.getRequestDispatcher("/WEB-INF/bookDemands.jsp").forward(request, response);   
}

JSP中的第一种形式绝对可以正常工作,第二种形式存在问题。每当我使用按钮“ Book”时,我都会得到一个空指针异常,并且我无法弄清楚为什么以及如果我将所有代码都注释为servlet中的第一种形式,那么它不再抛出该异常,并且可以正常工作。

真的很感谢您的帮助,因为我已经花了数小时在网上寻找解决方案,而且我仍然在努力解决问题上。

干杯

1 个答案:

答案 0 :(得分:0)

  

使用request.getParameterValues(“ name”)..,其他也一样,也许当前值是