2013-12-19 46 views
0

我的目標是當圖片按鈕被點擊時,它會先通過servlet然後數據庫對象從數據庫中檢索數據,結果會顯示在下一個jsp頁面。圖片按鈕點擊進入Servlet沒有輸入任何值

通常,當我需要顯示數據庫中的數據時,我會要求用戶先輸入值,然後調用servlet從數據庫檢索數據,然後請求調度程序進入下一頁。

但是,現在我希望用戶單擊圖像而不是輸入任何值。它可以轉到second.jsp但不能顯示數據。

我的代碼是否有問題?或點擊無法訪問servlet時的圖片?

幫助將不勝感激。謝謝!

下面是我的代碼... :)

的web.xml

<servlet> 
<display-name>PendingOrderServlet</display-name> 
<servlet-name>PendingOrderServlet</servlet-name> 
<servlet-class>servlet.PendingOrderServlet</servlet-class> 
</servlet> 
    <servlet-mapping> 
    <servlet-name>PendingOrderServlet</servlet-name> 
    <url-pattern>/PendingOrderServlet</url-pattern> 
    </servlet-mapping> 

first.jsp

<SCRIPT type="text/javascript"> 
function doNextPage { 
location.href = "PendingOrderServlet";} 
</SCRIPT> 
<img src="images/image.png" onclick="doNextPage();"> 

PendingOrderServlet

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
     PendingOrderDAO pod = new PendingOrderDAO(); 
     request.setAttribute("order", pod.getPendingOrders()); 

     RequestDispatcher view = request 
       .getRequestDispatcher("second.jsp"); 
     view.forward(request, response); 
} 

PendingOrderDAO

public ArrayList getPendingOrders() { 
    ArrayList<OrderBean> listpendingorder = new ArrayList<OrderBean>(); 
    try { 
     currentCon = ConnectionManager.getConnection(); 
     Statement statement = currentCon.createStatement(); 

     ResultSet rs = statement 
       .executeQuery("SELECT fborders.fbOrderId, fbmenu.fbMenuName, fborders.quantity, fborders.date, fborders.time, customer.custNRIC FROM fborders INNER JOIN fbmenu ON fborders.fbMenuId=fbmenu.fbMenuId INNER JOIN customer ON customer.custId=fborders.custId WHERE fborders.status='pending'"); 
     OrderBean OrderBean = null; 
     while (rs.next()) { 
      OrderBean = new OrderBean(); 
      OrderBean.setFbOrderId(rs.getInt("fbOrderId")); 
      OrderBean.setFbMenuName(rs.getString("fbMenuName")); 
      OrderBean.setQuantity(rs.getString("quantity")); 
      OrderBean.setDate(rs.getString("date")); 
      OrderBean.setTime(rs.getString("time")); 
      OrderBean.setCustNRIC(rs.getString("custNRIC")); 
      listpendingorder.add(OrderBean); 
     } 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 

    return listpendingorder; 
} 

second.jsp

<table class="table tableshow"> 
        <thead> 
         <tr> 
          <th>ffOrder ID</th> 
          <th>Menu</th> 
          <th>Quantity</th> 
          <th>Date</th> 
          <th>Time</th> 
          <th>Customer NRIC</th> 
          <th>.....</th> 
         </tr> 
        </thead> 

        <tbody> 
          <c:forEach items="${pendingorder}" var="order"> 
        <tr> 
         <td>${pendingorder.getFbOrderId()}</td> 
         <td>${pendingorder.getFbMenuName()}</td> 
         <td>${pendingorder.getQuantity()}</td> 
         <td>${pendingorder.getDate()}</td> 
         <td>${pendingorder.getTime()}</td> 
         <td>${pendingorder.getCustNRIC()}</td> 

        </tr> 
       </c:forEach> 

        </tbody> 

       </table> 
+0

我不; t看到任何錯誤。你的second.jsp是什麼? – Loc

+0

@Loc嗨,我粘貼了我所有的代碼,包括DAO和second.jsp。在doGET上撥打我的dao是否正確? –

+0

當然。你可以在doGet中做任何事情。 – Loc

回答

1

在Servlet的。您傳遞了名爲'order'的屬性,但在JSP中使用了名爲'pendingorder'的屬性。

servlet代碼:

request.setAttribute("order", pod.getPendingOrders()); 

正確的JSP:

<c:forEach items="${order}" var="item"> 
    <tr> 
        <td>${item.getFbOrderId()}</td> 
        <td>${item.getFbMenuName()}</td> 
        <td>${item.getQuantity()}</td> 
        <td>${item.getDate()}</td> 
        <td>${item.getTime()}</td> 
        <td>${item.getCustNRIC()}</td> 

    </tr> 
</c:forEach> 

注意:您可以使用$ {} item.fbOrderId而不是$ {item.getFbOrderId()}

+0

傻我!謝謝!我沒有看到。但是,我仍然無法查看數據。我已經發布了我的表的快照。 –

+0

無法查看數據?你有異常,或者你看到空表? – Loc

+0

我真的很抱歉。我現在可以查看它了..謝謝你的一切! :) –