JSP 表達式語言
JSP表達式語言(EL)讓存取儲存在JavaBean中的資料變得非常簡單。 JSP EL既可以用來建立算術表達式也可以用來建立邏輯表達式。在JSP EL表達式內可以使用整數數,浮點數,字串,常數true、false,還有null。
一個簡單的語法
典型的,當您需要在JSP標籤中指定一個屬性值時,只需要簡單地使用字串即可:
<jsp:setProperty name="box" property="perimeter" value="100"/>
JSP EL允許您指定一個表達式來表示屬性值。一個簡單的表達式語法如下:
${expr}
其中,expr指的是表達式。在JSP EL中通用的操作符是"."和"[]"。這兩個操作符可讓您透過內嵌的JSP物件存取各種各樣的JavaBean屬性。
舉例來說,上面的<jsp:setProperty>標籤可以用表達式語言改寫成如下形式:
<jsp:setProperty name="box" property="perimeter" value="${2*box.width+2*box.height}"/>
當JSP編譯器在屬性中見到"${}"格式後,它會產生程式碼來計算這個表達式,並且產生一個替代品來取代表達式的值。
您也可以在標籤的範本文字中使用表達式語言。例如<jsp:text>標籤簡單地將其主體中的文字插入JSP輸出:
<jsp:text> <h1>Hello JSP!</h1> </jsp:text>
現在,在<jsp:text>標籤主體中使用表達式,就像這樣:
<jsp:text> Box Perimeter is: ${2*box.width + 2*box.height} </jsp:text>
在EL表達式中可以使用圓括號來組織子表達式。例如${(1 + 2) * 3}等於9,但${1 + (2 * 3)} 等於7。
想要停用對EL表達式的評估的話,需要使用page指令將isELIgnored屬性值設為true:
<%@ page isELIgnored ="true|false" %>
這樣,EL表達式就會被忽略。若設為false,容器將會計算EL表達式。
EL中的基礎運算子
EL表達式支援大部分Java所提供的算術和邏輯運算子:
運算子 | 描述 |
---|---|
. | 存取一個Bean屬性或一個映射條目 |
[] | 存取一個陣列或鍊錶的元素 |
( ) | 組織一個子運算式以改變優先權 |
+ | 加上 |
- | 減或負 |
* | 乘 |
/ or div | 除 |
% or mod | 取模 |
== or eq | 測驗是否相等 |
!= or ne | 測驗是否不等 |
< or lt | 測驗是否小於 |
> 或 gt | 測驗是否大於 |
<= or le | 測驗是否小於等於 |
>= or ge | 測試是否大於等於 |
&& or and | 測驗邏輯與 |
|| or or | 測驗邏輯或 |
! or not | 測試取反 |
empty | 測試是否空值 |
JSP EL中的函數
JSP EL可讓您在表達式中使用函數。這些函數必須被定義在自訂標籤庫中。函數的使用語法如下:
${ns:func(param1, param2, ...)}
ns指的是命名空間(namespace),func指的是函數的名稱,param1指的是第一個參數,param2指的是第二個參數,以此類推。例如,有函數fn:length,在JSTL庫中定義,可以像下面這樣來取得一個字串的長度:
${fn:length("Get my length")}
要使用任何標籤庫中的函數,您需要將這些庫安裝在伺服器中,然後使用<taglib>標籤在JSP檔案中包含這些函式庫。
JSP EL隱含物件
JSP EL支援下表列出的隱含物件:
隱含物件 | 說明 |
---|---|
page 作用域 | |
request 作用域 | |
session 作用域 | |
application 作用域 | |
Request 物件的參數,字串 | |
Request物件的參數,字串集合 | |
HTTP 訊息頭,字串 | |
HTTP 訊息頭,字串集合 | |
情境初始化參數 | |
Cookie值 | |
目前頁面的pageContext |