JSP表示式語言(EL)

忘塵天外天發表於2017-08-30

  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="permeter"  value="${box.width*2+box.height*2}"  />

   當JSP編譯器在屬性中見到"${}"格式後,它湖產生程式碼來計算這個表示式,並且產生一個替代品來代替表示式的值。

    <jsp:text>
    Box  Perimeter  is:${box.width*2+box.height*}
    </jsp:text>

   在EL表示式中可以使用圓括號來組織表示式,想要停用對EL表示式的評估,需要使用page指令的isELIgnored的屬性值設定為true :

    <%@  page  isELIgnored="true|false" %>   //預設是false,即EL表示式有效

  將isELIgnored屬性值設定為true,這樣在這個JSP頁面EL表示式就會失效。

EL中的基礎操作符

  EL表示式支援大部分Java所提供的算術和邏輯操作符:

操作符 描述
. 訪問物件的一個屬性或者一個對映條目
[] 訪問物件的一個屬性或者一個陣列、連結串列的元素
() 組織一個子表示式以改變優先順序
+
-
*
/  or  div
%   or  mod 取餘
==  or  eq 測試是否相等
!=  or  ne 測試是否不等
<  or  lt 測試是否小於(less  than)
>  or  gt 測試是否大於(greater  than)
<=   or  le 測試是否小於等於
>=  or  ge 測試是否大於等於
&&  or  and 測試邏輯與
||   or  or 測試邏輯或
!   or   not 測試邏輯非
empty 測試是否空值

JSP  EL中的函式

  JSP  EL允許在表示式中使用函式。這些函式必須被定義在自定義標籤庫中。

    ${fn:length("Get  my  length")}

   fn:length函式在JSTL庫中定義,上面的語法可以獲取一個字串的長度,要使用任何標籤庫的函式,都需要將這些庫安裝在伺服器中,然後使用<taglib>標籤在JSP 檔案中引用這些庫。

JSP EL隱含物件

  JSP EL支援下表中的隱含物件:

隱含物件 描述
pageScope page作用域
requestScope request作用域
sessionScope session作用域
applicationScope application作用域
param request物件的引數,字串
paramValues request物件的引數,字串集合
header HTTP資訊頭,字串
headerValues HTTP資訊頭,字串集合
initParam 上下文初始化引數
cookie Cookie值
pageContext 當前頁面的pageContext

pageContext物件

  pageContext物件是JSP中pageContext物件的引用。通過pageContext物件可以訪問request物件。例如,訪問request物件傳入的查詢字串:

        ${pageContext.request.queryString}    

 scope物件

  pageScope,requestScope,sessionScope,applicationScope變數用來訪問儲存在各個作用域層次的變數。如需要訪問session範圍域內的test變數,可以這樣用${sessionScope.tset}。

param和paramValues物件

  param和paramValues物件用來訪問引數值,用來替換request.getParameter方法和request.getParameterValues方法。例如,訪問一個名為order的引數,可以用EL表示式:${param.order},或者${param[order]}。param物件返回單一的字串,而paramValues物件則返回一個字串陣列。 

 

相關文章