首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JSTL c:forEach 與 Struts logic:iterate 遍歷集合完整對比教學

     編輯:Java 相關知識

在 Struts 1.x + JSP 架構中,<c:forEach>(JSTL)與 <logic:iterate>(Struts 標簽庫)是兩種主流集合遍歷方式。本文通過完整 Action、JSP 示例,對比兩者語法差異、EL 表達式與 Bean 標簽配合細節,並列出 Struts 1.3 標簽庫引入正確 URI。

後台 Action 準備數據

public ActionForward selectStudent(...) {
    List<Student> list = studentService.selectStudent(conn);
    request.setAttribute("list", list); // 放入 request 域
    return mapping.findForward("show");
}

JSP 頁面完整示例

<%@ taglib uri="https://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="https://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="https://jakarta.apache.org/struts/tags-logic" prefix="logic" %>

<table>
  <tr><th>ID</th><th>姓名</th><th>操作</th></tr>

  <!-- JSTL 方式:配合 EL 表達式 -->
  <c:forEach items="${list}" var="student">
    <tr>
      <td>${student.id}</td>
      <td>${student.name}</td>
    </tr>
  </c:forEach>

  <!-- Struts logic:iterate 方式:需配合 bean:write -->
  <logic:iterate id="li" name="list" type="vo.Student">
    <tr>
      <td><bean:write name="li" property="id"/></td>
      <td><bean:write name="li" property="name"/></td>
      <td><a href="student.do?method=deleteStudent&id=<bean:write name='li' property='id'/>">刪除</a></td>
    </tr>
  </logic:iterate>
</table>

核心差異對比表

特性JSTL c:forEachStruts logic:iterate
表達式語言EL (${...})OGNL / Bean 標簽
變量作用域var="student" 頁面級id="li" 頁面級
類型轉換自動需指定 type="完整類名"
嵌套屬性訪問${student.addr.city}<bean:write name="li" property="addr.city"/>
性能較輕量標簽處理器開銷稍大
推薦場景現代項目、純 JSTL 頁面舊 Struts 項目、需緊密集成 Struts 表單/驗證

Struts 1.3 標簽庫引入正確寫法

<%@ taglib uri="https://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="https://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="https://jakarta.apache.org/struts/tags-logic" prefix="logic" %>

舊版 /WEB-INF/struts-logic.tld 路徑方式已不推薦,統一使用官方 URI 避免部署路徑依賴。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved