图像按钮单击转到 Servlet 不输入任何值

Posted

技术标签:

【中文标题】图像按钮单击转到 Servlet 不输入任何值【英文标题】:Image button is click go to Servlet Without input any value 【发布时间】:2014-01-08 04:00:49 【问题描述】:

我的目标是当点击图片按钮时,它会先通过servlet然后通过数据库对象从数据库中检索数据,结果将显示在下一个jsp页面中。

通常当我需要显示数据库中的数据时,我会要求用户先输入值并调用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>

【问题讨论】:

我看不出有什么问题。你的 second.jsp 是什么? @Loc 嗨,我粘贴了所有代码,包括 DAO 和 second.jsp。在 doGET 调用我的 dao 是否正确? 当然。你可以在 doGet 中做任何事情。 @Loc doPOST 怎么样? 是的。 doPost 一样。 【参考方案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()

【讨论】:

傻我!谢谢!我没有看到。但是,我仍然无法查看数据。我已经发布了我的桌子的快照。 无法查看数据?您遇到异常或看到空表? 真的很抱歉。我现在可以看到它了。谢谢你所做的一切! :) 我才意识到一些事情。首先在 second.jsp 中我放了 $item.getFbOrderId()。它可以显示所有数据,但是所有数据都是8。假设是1,2,3,4,5,6,7,8。 是表达式语言的标准语法。它不关心属性类型。重要的是您的 bean 必须有一个名为“getFbOrderId”的 GETTER。你需要学习EL。这在开发 JSP/Servlet 应用程序时非常重要。 docs.oracle.com/javaee/6/tutorial/doc/gjddd.html

以上是关于图像按钮单击转到 Servlet 不输入任何值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 javascript 和按钮更改图像的不透明度?

带有下一个/上一个按钮的 Jquery 图像库无法正常工作

数据未显示在标签中

图像按钮仅在单击图像而不是按钮内部区域时响应

通过单击按钮将文本放在图像上

React - 单击按钮转到视口顶部