1. 程式人生 > >軟體開發實訓(720)3.0

軟體開發實訓(720)3.0

內容關鍵詞:表示式語言

授課老師:720張森鵬

知識筆記:JSP 2.0 最重要的特性之一就是表示式語言(EL),JSP 使用者可以用它來訪問應用程式資料。
由於受到 ECMAScript 和 XPath 表示式語言的啟發,EL 也設計成可以輕鬆地編寫免指令碼的 JSP

頁面。也就是說,頁面不使用任何 JSP 宣告、表示式或者 scriptlet。JSP 2.0 最初是將 EL 應用在 JSP 標準標籤庫(JSTL)1.0 規範中。JSP 1.2 程式設計師將標準庫匯入到他們的應用程式中,就可以使用 EL。

表示式語言用法:兩個表示式可以連線在一起。對於一系列的表示式,它們的取值將是從左到右進行,計
算結果的型別為 String,並且連線在一起。假如 a+b 等於 8,c+d 等於 10,那麼這兩個表示式
的計算結果將是 810:
${a+b}${c+d}
表示式${a+b}and${c+d}的取值結果則是 8and10。
如果在定製標籤的屬性值中使用 EL 表示式,那麼該表示式的取值結果字串將會強制
變成該屬性需要的型別:
<my:tag someAttribute="${expression}"/>
像${這樣的字元順序就表示是一個 EL 表示式的開頭。如果需要的只是文字${,則需要在

它前面加一個轉義符,如\${。

EL 表示式可以返回任意型別的值。如果 EL 表示式的結果是一個帶有屬性的物件,則可以利
用[ ]或者.運算子來訪問該屬性。[ ]和.運算子類似;[ ]是比較規範的形式,.運算子則比較快捷。
為了訪問物件的屬性,可以使用以下任意一種形式:
${object["propertyName"]}
${object.propertyName}
但是,如果 propertyName 不是有效的 Java 變數名,只能使用[ ]運算子。例如,下面這兩
個 EL 表示式就可以用來訪問隱式物件標題中的 HTTP 標題 host:
${header["host"]}
${header.host}
但是,要想訪問 accept-language 標題,只能使用[ ]運算子,因為 accept-language 不是一

個合法的 Java 變數名。如果用. 運算子訪問它,將會導致異常。

EL 表示式的取值是從左到右進行的。對於 expr-a[expr-b]形式的表示式,其 EL 表示式的取值方法如下:
(1)先計算 expr-a 得到 value-a。
(2)如果 value-a 為 null,則返回 null。
(3)然後計算 expr-b 得到 value-b。
(4)如果 value-b 為 null,則返回 null。
(5)如果 value-a 為 java.util.Map,則會檢視 value-b 是否為 Map 中的一個 key。若是,則
返回 value-a.get(value-b),若不是,則返回 null。
(6)如果 value-a 為 java.util.List,或者假如它是一個 array,則要進行以下處理:
a.強制 value-b 為 int,如果強制失敗,則丟擲異常。
b.如果 value-a.get(value-b)丟擲 IndexOutOfBoundsException,或者假如 Array.get
(value-a, value-b)丟擲 ArrayIndexOutOfBoundsException,則返回 null。
c.否則,若 value-a 是個 List,則返回 value-a.get(value-b);若 value-a 是個 array,
則返回 Array.get(value-a, value-b)。