Servlet 執行:request.setAttribute("list", userList); // List<User>
JSP 頁面需獲取:
<!-- 獲取第 2 個元素的 name -->
${list[1].name}
<!-- 或點語法 (需屬性名合法標識符) -->
${list[1]['name']}
注意:EL 索引從 0 開始,`list[1]` 即第 2 個。若列表可能為空/長度不足,EL 會輸出空字符串而不拋異常。
<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<c:forEach var="user" items="${list}" varStatus="status">
<div>${status.index + 1}. ${user.name}</div>
<c:if test="${status.index == 1}">
<span class="highlight">(第二個)</span>
</c:if>
</c:forEach>
`varStatus` 提供 `index`、`count`、`first`、`last` 等狀態,支持條件渲染、樣式控制。
<%@ taglib prefix="fn" uri="https://java.sun.com/jsp/jstl/functions" %>
<c:if test="${fn:length(list) > 0}">
第二個用戶:${list[1].name}
</c:if>
| 需求 | 推薦 | 理由 |
|---|---|---|
| 單一固定位置取值 | EL 直接索引 `${list[1].name}` | 零標籤、極簡 |
| 遍歷/條件/索引/統計 | JSTL ` | 功能完整、可讀性強 |
| 複雜邏輯/格式化 | JSTL + EL 函數 (`fn:substring`, `fn:replace`) | 避免 Scriptlet 污染 JSP |
「單值用 EL 索引,遍歷用 JSTL」,JSP 表達層即刻清爽專業。