首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

動態生成列表頁與詳情頁的鏈接傳參實現:JSP include與請求轉發

     編輯:程式設計綜合問答

核心模式:列表頁傳 ID → 詳情頁接收查詢

1. 列表頁 生成帶參鏈接


<%@ page import="java.util.List" %>
<%@ page import="com.example.entity.News" %>
<%
    List list = (List) request.getAttribute("newsList");
%>
<table>
    <c:forEach items="${newsList}" var="news">
    <tr>
        <td>${news.title}</td>
        <td><a href="detail.jsp?id=${news.id}">查看詳情</a></td>
    </tr>
    </c:forEach>
</table>

2. 詳情頁 接收參數查詢數據庫


<%@ page import="com.example.dao.NewsDAO" %>
<%@ page import="com.example.entity.News" %>
<%
    String idStr = request.getParameter("id");
    if (idStr != null) {
        int id = Integer.parseInt(idStr);
        NewsDAO dao = new NewsDAO();
        News news = dao.findById(id); // 查詢數據庫
        if (news != null) {
            request.setAttribute("news", news); // 放入請求域
        }
    }
%>
<div class="detail">
    <h2>${news.title}</h2>
    <span>發布時間: ${news.createTime}</span>
    <div>${news.content}</div>
</div>

進階:使用 `` 復用頁頭頁尾


<!-- list.jsp -->
<jsp:include page="/common/header.jsp" />
<!-- 列表內容 -->
<jsp:include page="/common/footer.jsp" />

<!-- detail.jsp -->
<jsp:include page="/common/header.jsp" />
<!-- 詳情內容 -->
<jsp:include page="/common/footer.jsp" />

`` 是**動態包含** (請求時合併),修改公共部分無需重新編譯主頁面。

最佳實踐建議

  • **參數校驗**:`id` 必須驗證非空、數字、存在性,防止 SQL 注入 (使用 `PreparedStatement`)。
  • **異常處理**:查無數據時轉向 404 頁或友好提示。
  • **分頁/搜索**:列表頁保留 `page`、`keyword` 參數,詳情頁返回時攜帶回原列表狀態。
  • **MVC 分層**:邏輯移至 Servlet/Controller,JSP 僅負責渲染 (EL/JSTL)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved