程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> EL表達式詳細解析

EL表達式詳細解析

編輯:關於JSP

<%@ page isELIgnored="true"%> 表示是否禁用EL語言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默認的啟用EL語言.

JSTL 標簽 庫由標簽庫和 EL 表達式語言兩個部分組成。 EL 在 JSTL 1.0 規范中被引入,當時用來作為 Java 表達式來工作,而該表達式必須配合 JSTL 的標簽庫才能得到需要的結果。 說明:在 JSTL 1.1 規范中, JSP2.0 容器已經能夠獨立的理解任何 EL 表達式。 EL 可以獨立出現在 JSP 頁面的任何角落。

EL 全名為Expression Language

EL 語法很簡單,它最大的特點就是使用上很方便。接下來介紹EL主要的語法結構:

${sessionScope.user.sex}

所有EL都是以${為起始、以}為結尾的。上述EL范例的意思是:從Session的范圍中,取得用戶的性別。

假若依照之前JSP Scriptlet(寫在<% %>之間的程序片)的寫法如下:

User user = (User)session.getAttribute("user");

String sex = user.getSex();

兩者相比較之下,可以發現EL 的語法比傳統JSP Scriptlet 更為方便、簡潔。

.與[]運算符

EL 提供 . 和 [ ] 兩種運算符來導航數據。下列兩者所代表的意思是一樣的:

${sessionScope.user.sex}等於${sessionScope.user["sex"]}

. 和 [ ] 也可以同時混合使用,如下:

${sessionScope.shoppingCart[0].price} 結果為shoppingCart中第一項物品的價格。

不過,以下兩種情況,兩者會有差異:

(1) 當要存取的屬性名稱中包含一些特殊字符,如. 或 – 等並非字母或數字的符號,就一定要使用 [ ],例如:${user.My-Name }

上述是不正確的方式,應當改為:${user["My-Name"] }

(2) 我們來考慮下列情況:

${sessionScope.user[data]}

此時,data 是一個變量,假若data的值為"sex"時,那上述的例子等於${sessionScope.user.sex};

假若data 的值為"name"時,它就等於${sessionScope.user.name}。因此,如果要動態取值時,就可以用上述的方法來做,但. 無法做到動態取值。

EL 變量

EL 存取變量數據的方法很簡單,例如:${username}。它的意思是取出某一范圍中名稱為username的變量。因為我們並沒有指定哪一個范圍的username,所以它的默認值會先從Page 范圍找,假如找不到,再依序到Request、Session、Application范圍。假如途中找到username,就直接回傳,不再繼續找下去,但是假如全部的范圍都沒有找到時,就回傳null,當然EL表達式還會做出優化,頁面上顯示空白,而不是打印輸出NULL。

屬性范圍(jstl名稱):EL中的名稱

Page:PageScope

Request :RequestScope

Session :SessionScope

Application :ApplicationScope

我們也可以指定要取出哪一個范圍的變量:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved