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

Java EL 表達式語言完整指南:語法、隱含對象、運算子、JSTL 整合與 Spring MVC 應用

     編輯:Java 程式設計入門

一、EL 簡介與基本語法

Expression Language (EL) 是 JSP 2.0 引入的簡易表達式語言,主要用於取代 JSP 頁面中的 Java Scriptlet,讓頁面更乾淨、易維護。

  • 語法:${expression}
  • 兩種存取運算子:.(屬性存取)與 [](動態/特殊字元鍵值存取)

運算子選擇規則

情境建議用法範例
屬性名為合法識別碼.${user.name}
屬性名含特殊字元(-, ., 空白等)[]${user["my-name"]}
鍵值為變數(動態存取)[]${sessionScope.user[data]}

二、變數搜尋範圍與隱含對象

1. 範圍尋順序

未指定範圍時,EL 依序搜尋:pageScope → requestScope → sessionScope → applicationScope,找到即回傳,否則回傳 null(不拋異常)。

2. 範圍相關隱含對象

  • pageScope、requestScope、sessionScope、applicationScope
  • 用法:${requestScope.username} 等同 request.getAttribute("username")

3. 請求參數隱含對象

  • param:單一值 ${param.id} ≡ request.getParameter("id")
  • paramValues:多值 ${paramValues.ids} ≡ request.getParameterValues("ids")

4. 其他常用隱含對象

對象用途範例
cookie取得 Cookie 值${cookie.userCountry}
header / headerValuesHTTP 標頭${header["User-Agent"]}
initParamContext 參數${initParam.adminEmail}
pageContext請求/會話/應用上下文資訊${pageContext.request.remoteAddr}

三、EL 運算子完整表

類別符號文字別名範例
算術+-${price + 10}
--${total - discount}
*-${qty * unitPrice}
/ 或 divdiv${sum / count}
% 或 modmod${index mod 2}
關係==eq${status eq 'ok'}
!=ne${role ne 'admin'}
<lt${age lt 18}
>gt${score gt 60}
<=le${qty le 100}
>=ge${level ge 5}
邏輯&&and${isLogin and hasRole}
||or${isVip or isStaff}
!not${not empty list}
其他empty-${empty param.name}
?:-${flag ? 'Y' : 'N'}
()-${(a + b) * c}

四、JSTL 核心標籤與 EL 結合實戰

1. 迴圈 <c:forEach>

<%@ taglib prefix="c" uri="https://java.sun.com/jstl/core_rt" %>
<c:forEach items="${messages}" var="item" begin="0" end="9" step="1" varStatus="vs">
    ${vs.index} : ${item.title} <br/>
</c:forEach>

2. 輸出 <c:out>

<c:out value="${logininfo.username}" />
<!-- 等同 ${logininfo.username},但會自動跳脫 HTML 特殊字元 -->

3. 條件判斷 <c:if> / <c:choose>

<c:if test="${var.index % 2 == 0}">偶數行</c:if>

<c:choose>
    <c:when test="${var.index % 2 == 0}">*</c:when>
    <c:otherwise>!</c:otherwise>
</c:choose>

五、Spring MVC 中的 EL 範圍陷阱

Spring MVC 預將 Model 資料放入 requestScope,因此:

  • ✅ 推薦:${logininfo.username}(自動搜尋 requestScope)
  • ✅ 明確:${requestScope.logininfo.username}
  • ❌ 避免:${sessionScope.logininfo.username}(除非確定存放在 Session)

六、啟用/停用 EL

<%@ page isELIgnored="false" %> <!-- 預設 true,JSP 2.0+ 容器預設啟用 -->

七、總結

EL + JSTL 讓 JSP 回歸「視圖」本職,業務邏輯移至 Controller/Service。掌握範圍搜尋順序、隱含對象、運算子與 JSTL 標籤,即可撰寫乾淨、可維護的前端頁面。

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