下面主要是我在應用EL表達式時的一些體會,特此寫出,供同志們溫習一下我們的EL表達式。
目的
和標簽一樣,EL表達式出現的目的也是為了簡化JSP頁面,取代JSP中的JAVA代碼使JSP成為純標記文檔,以增加JSP的易讀性,維護性。EL表達式能簡化JSP文件中數據訪問的代碼,可用來替代傳統的基于“<%= %>”形式的JAVA表達式,以及部分基于“<% %>”形式的JAVA程序片斷。
基礎
在EL表達式中能用哪些操作符?算術,關系,邏輯,empty和條件操作符。在EL表達式中有多少隱含對象?11個隱含對象。網上均有資料,在此不再列舉具體的操作符和隱含對象。
命名變量
EL表達式中的變量稱為命名變量,它不是JSP文件中的局部變量或實例變量。而是存放在特定范圍內的屬性,也就是說EL表達式只能取得利用setAttribute(String name)方法存儲在某一范圍內的值。找到之后直接返回,找不到返回NULL。
“.”和“[]”
它們雖然都能訪問對象的屬性,但還是有些區別的。假設在request范圍內有一個變量user,而這個變量有一個屬性name。下面兩種寫法效果是一樣的。
${requestScope.user.name} ${requestScope.user[“name”]}
1.動態取值
<%String date = “name”;%>
那么前面的
${requestScope.user[“name”]}
就可以變成
${requestScope.user[date]}
而${requestScope.user.date}
就不行,它只會去找user對象內的date屬性,如果有會取出date屬性值并輸出,而不是name屬性值,如果沒有就會返回NULL,但并不輸出任何字符。
2.通過索引取得數組中的值。
自動轉換類型
JAVA有5種操作符,它們分別是算術,比較,邏輯,賦值,位操作符,幾乎所有的操作符只能用來操作“基本類型”。唯一例外的是“=”,“!=”和“==”,它們可操作所有的對象,除此之外,String類支持“+”和“+=”。上述是對JAVA操作符的總體描述,但上句在EL表達式中并不適用或者說部分缺失。在上面我們介紹過EL表達式有5種操作符,它們分別是算術,關系,邏輯,empty和條件操作符。與JAVA語法不同的是EL表達式中的String類型并不支持“+”和“+=”。如${“1”+”2”}得到的結果則是3,因為這里出現的“+”就是算術操作符,“1”和“2”會先轉換成數值型再相加。由此可見EL表達式的自動轉換類型與操作符有關,EL表達式會根據操作符自動轉換類型,有點像腳本語言中的弱類型。在這里還有一點要注意${‘a’+2}這樣的寫法是錯誤的,因為這里的’a’會被看作String類型。