jsp的EL表達式¥{}

搜索變量,搜索範圍是page、request、session、application。html

EL 是從 JavaScript 腳本語言獲得啓發的一種表達式語言,它借鑑了 JavaScript 多類型轉換無關性的特色。在使用 EL 從 scope 中獲得參數時能夠自動轉換類型,所以對於類型的限制更加寬鬆。 Web 服務器對於 request 請求參數一般會以 String 類型來發送,在獲得時使用的 Java 語言腳本就應該是 request.getParameter(「XXX」) ,這樣的話,對於實際應用還必須進行強制類型轉換。而 EL 就將用戶從這種類型轉換的繁瑣工做脫離出來,容許用戶直接使用 EL 表達式取得的值,而不用關心它是什麼類型。 

下面的示例就是一個 EL 表達式,見例 1 。 

例 1 :簡單 EL 表達式 

 java

<%@ page contentType="text/html; charset=UTF-8"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <body> 
    ${sampleValue + 1} <br> 
 </body> 
</html>


這個示例將在 JSP 頁面顯示爲「 1 」, EL 表達式必須以「 ${XXX} 」來表示,其中「 XXX 」部分就是具體表達式內容,「 ${} 」將這個表達式內容包含在其中做爲 EL 表達式的定義。本示例能夠在知足 JSP2.0 規範的任何 Web 應用服務器中使用。 

二 EL表達式的默認變量 
一個 EL 表達式包含變量和操做符兩個內容。任何存在於 JSP 做用範圍的 JavaBean 均可以被轉化成 EL 表達式來使用,它所包含的默認變量以下: 

1 .默認變量 pageScope 、 requestScope 、 sessionScope 、 applicationScope 

這 4 個默認變量包含 Scope 做用範圍的參數集合,至關於被保存在 java.util.Map 中的某個參數。下面看簡單的示例 2 : 

例 2 :使用 sessionScope 變量的 EL 表達式 

 數組

<%request.getSession().setAttribute("sampleValue", new Integer(10));%> 
${sessionScope.sampleValue}

取得保存在 Session 中參數的 sessionScope 變量的 EL 表達式,「 . 」是 property 訪問操做符,在這裏表示從 Session 中取得「鍵」爲「 sampleValue 」的參數,並顯示出來。顯示結果爲「 10 」。 

2 .默認變量 param 、 paramValues 

這兩個默認變量包含請求參數的集合, param 代表請求包含的參數爲單一控件, paramValues 代表請求包含的參數爲控件數組。下面看一個簡單示例 3 : 

例 3 :提交請求的頁面和接受的頁面 


 服務器

<%@ page contentType="text/html; charset=UTF-8"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <body> 
      <form action="SampleJsp.jsp"> 
    <input type="text" name="sampleValue" value="10"> 
    <input type="text" name="sampleValue" value="11"> 
    <input type="text" name="sampleValue" value="12"> 
    <input type="text" name="sampleSingleValue" value="SingleValue"> 
    <input type="submit" value="Submit"> 
    </form> 
 </body> 
</html>


在這個頁面中定義了兩組控件,控件名爲「 sampleValue 」的是一套控件數組,控件名爲「 sampleSingleValue 」的是單一控件,經過遞交將請求參數傳送到 SampleJsp.jsp 。 cookie

<%@ page contentType="text/html; charset=UTF-8"%> 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <body> 
    ${paramValues.sampleValue[2]} <br> 
    ${param.sampleSingleValue} <br> 
 </body> 
</html>


這是請求轉發到的頁面,經過 EL 表達式的 paramValues 變量獲得控件數組中最後一個控件的遞交參數,經過 EL 表達式的 param 變量獲得單一控件的遞交參數。控件數組參數的 EL 表達式使用「 [] 」來指定數組下標。本示例將顯示控件數組中最後一個控件的值「 12 」和單一控件的值「 SingleValue 」。 

3 .默認變量 header 、 headerValues 

這兩個默認變量包含請求參數頭部信息的集合, header 變量表示單一頭部信息, headerValues 則表示數組型的頭部信息。 

4 .默認變量 cookie 

包含全部請求的 cookie 集合,集合中的每一個對象對應 javax.servlet.http.Cookie 。 

5 .默認變量 initParam 

包含全部應用程序初始化參數的集合。 

6 .默認變量 pageContext 

等價於 page 環境類 javax.servlet.jsp.PageContext 的實例,用來提供訪問不一樣的請求參數。 

11 個默認變量幾乎包含了 Web 應用的全部基本操做,若一個表達式不使用這些變量而直接使用參數名,那麼就採用就近原則。該表達式將使用最近取得的參數值。

三.EL表達式的操做符
EL表達式中還有許多操做符能夠幫助完成各類所需的操做,以前的示例中「.」、「[]」就是其中的兩個,下面將用表9.1來展現全部操做符及它們各自的功能。

表 9.1 EL 表達式的操做符 

操做符 
 功能和做用 

 訪問一個 bean 屬性或者 Map entry 

[] 
 訪問一個數組或者鏈表元素 
 
() 
 對子表達式分組,用來改變賦值順序 
 
? : 
 條件語句,好比:條件 ?ifTrue:ifFalse 

若是條件爲真,表達式值爲前者,反之爲後者 
 

 數學運算符,加操做 
 

 數學運算符,減操做或者對一個值取反 
 

 數學運算符,乘操做 
 
/ 或 div 
 數學運算符,除操做 
 
% 或 mod 
 數學運算符,模操做 ( 取餘 ) 
 
== 或 eq 
 邏輯運算符,判斷符號左右兩端是否相等,若是相等返回 true ,不然返回 false 
 
!= 或 ne 
 邏輯運算符,判斷符號左右兩端是否不相等,若是不相等返回 true ,不然返回 false 
 
< 或 lt 
 邏輯運算符,判斷符號左邊是否小於右邊,若是小於返回 true ,不然返回 false 
 
> 或 gt 
 邏輯運算符,判斷符號左邊是否大於右邊,若是大於返回 true ,不然返回 false 
 
<= 或 le 
 邏輯運算符,判斷符號左邊是否小於或者等於右邊,若是小於或者等於返回 true ,不然返回 false 
 
>= 或 ge 
 邏輯運算符,判斷符號左邊是否大於或者等於右邊,若是大於或者等於返回 true ,不然返回 false 
 
&& 或 and 
 邏輯運算符,與操做賦。若是左右兩邊同爲 true 返回 true ,不然返回 false 
 
|| 或 or 
 邏輯運算符,或操做賦。若是左右兩邊有任何一邊爲 true 返回 true ,不然返回 false 
 
! 或 not 
 邏輯運算符,非操做賦。若是對 true 取運算返回 false ,不然返回 true 
 
empty 
 用來對一個空變量值進行判斷 : null 、一個空 String 、空數組、 空 Map 、沒有條目的 Collection 集合 
 
func(args) 
 調用方法 , func 是方法名, args 是參數,能夠沒有,或者有一個、多個參數 . 參數間用逗號隔開 


這些操做符都是極其有用的,下面經過幾個示例來演示它們的使用方法: 

例 4 :幾組操做符的示例 


${pageScope.sampleValue + 12} <br>           // 顯示 12 

${(pageScope.sampleValue + 12)/3} <br>     // 顯示 4.0 

${(pageScope.sampleValue + 12) /3==4} <br>         // 顯示 true 

${(pageScope.sampleValue + 12) /3>=5} <br>         // 顯示 false 

<input type="text" name="sample1" value="${pageScope.sampleValue + 10}"> // 顯示值爲 10 的 Text 控件
session

相關文章
相關標籤/搜索