下面主要是我在應(yīng)用EL表達(dá)式時的一些體會,特此寫出,供同志們溫習(xí)一下我們的EL表達(dá)式。
目的
和標(biāo)簽一樣,EL表達(dá)式出現(xiàn)的目的也是為了簡化JSP頁面,取代JSP中的JAVA代碼使JSP成為純標(biāo)記文檔,以增加JSP的易讀性,維護(hù)性。EL表達(dá)式能簡化JSP文件中數(shù)據(jù)訪問的代碼,可用來替代傳統(tǒng)的基于“<%= %>”形式的JAVA表達(dá)式,以及部分基于“<% %>”形式的JAVA程序片斷。
基礎(chǔ)
在EL表達(dá)式中能用哪些操作符?算術(shù),關(guān)系,邏輯,empty和條件操作符。在EL表達(dá)式中有多少隱含對象?11個隱含對象。網(wǎng)上均有資料,在此不再列舉具體的操作符和隱含對象。
命名變量
EL表達(dá)式中的變量稱為命名變量,它不是JSP文件中的局部變量或?qū)嵗兞俊6谴娣旁谔囟ǚ秶鷥?nèi)的屬性,也就是說EL表達(dá)式只能取得利用setAttribute(String name)方法存儲在某一范圍內(nèi)的值。找到之后直接返回,找不到返回NULL。
“.”和“[]”
它們雖然都能訪問對象的屬性,但還是有些區(qū)別的。假設(shè)在request范圍內(nèi)有一個變量user,而這個變量有一個屬性name。下面兩種寫法效果是一樣的。
${requestScope.user.name} ${requestScope.user[“name”]}
1.動態(tài)取值
<%String date = “name”;%>
那么前面的
${requestScope.user[“name”]}
就可以變成
${requestScope.user[date]}
而${requestScope.user.date}
就不行,它只會去找user對象內(nèi)的date屬性,如果有會取出date屬性值并輸出,而不是name屬性值,如果沒有就會返回NULL,但并不輸出任何字符。
2.通過索引取得數(shù)組中的值。
自動轉(zhuǎn)換類型
JAVA有5種操作符,它們分別是算術(shù),比較,邏輯,賦值,位操作符,幾乎所有的操作符只能用來操作“基本類型”。唯一例外的是“=”,“!=”和“==”,它們可操作所有的對象,除此之外,String類支持“+”和“+=”。上述是對JAVA操作符的總體描述,但上句在EL表達(dá)式中并不適用或者說部分缺失。在上面我們介紹過EL表達(dá)式有5種操作符,它們分別是算術(shù),關(guān)系,邏輯,empty和條件操作符。與JAVA語法不同的是EL表達(dá)式中的String類型并不支持“+”和“+=”。如${“