iT邦幫忙

0

在同一個jsp頁面顯示從database撈到的資料

  • 分享至 

  • xImage

想請問各位,我想在mvc架構下,
controller使用servlet,model使用JDBC,畫面使用jsp,
功能如圖,左上角是個搜尋框,可以輸入想要搜尋的名稱,
右上角按鈕把名稱往controller傳,並去database裡找資料,
目前我已經能從database裡拿到我想要的資料了,
可是我對於怎麼在jsp同一個頁面裡新增資料感到疑惑,
我可以把資料直接做成另一個網頁,
但在搜尋框、按鈕還存在的情況下,
直接在同頁面下面顯示不定比數的資料,
這我想不出來怎麼做的,
可以請各位大大給點方向嗎?
謝謝!?
https://ithelp.ithome.com.tw/upload/images/20230115/201569998uGl8YrNGU.png
=========更新=========
找到一個方法,
把多筆數據放在ArrayList裡,
再把list放到attribute裡,
最後jsp再從attribute裡拿出來,
但不知道為甚麼數據會顯示在搜尋框上方= ="
搜尋前
https://ithelp.ithome.com.tw/upload/images/20230115/20156999pJyCoJI3XI.png
搜尋後
https://ithelp.ithome.com.tw/upload/images/20230115/20156999swTHfbpJ2z.png
jsp
https://ithelp.ithome.com.tw/upload/images/20230115/20156999SOpWONeHkv.png

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
JamesDoge
iT邦高手 1 級 ‧ 2023-01-26 01:32:01

從您提供的程式碼來看,我發現您在jsp頁面上是使用java程式碼來顯示資料,而不是使用JSTL標籤。

productList.jsp頁面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
    ArrayList<Product> productList = (ArrayList<Product>) request.getAttribute("productList");
%>
<html>
<head>
    <title>Product List</title>
</head>
<body>
    <form action="http://localhost:8080/getProductByName" method="get">
        <label>商品名稱:</label>
        <input type="text" name="productName">
        <input type="submit" value="搜尋">
    </form>
    <br/>
    <table>
        <tr>
            <th>商品名稱</th>
            <th>商品價格</th>
            <th>商品描述</th>
        </tr>
        <c:forEach items="${productList}" var="product">
            <tr>
                <td>${product.name}</td>
                <td>${product.price}</td>
                <td>${product.description}</td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

controller 程式碼範例

import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name = "GetProductByName", urlPatterns = {"/getProductByName"})
public class GetProductByName extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String productName = request.getParameter("productName");

        // 透過JDBC查詢資料庫,並把結果存入productList中
        ArrayList<Product> productList = ProductDAO.getProductByName(productName);

        request.setAttribute("productList", productList);
        request.getRequestDispatcher("productList.jsp").forward(request, response);
    }
}

僅供參考

我要發表回答

立即登入回答