1. 程式人生 > >JSP表達式語言(EL)

JSP表達式語言(EL)

cat 表達式 測試 獲取 highlight 存儲 替代 字符串 般的

  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對象則返回一個字符串數組。

JSP表達式語言(EL)