el及${對象}

JSTL 的發佈包有兩個版本: Standard-1.0 Taglib 、 Standard-1.1 Taglib ,它們在使用時是不同的。

Sun 發佈的標準JSTL1.1 標籤庫有以下幾個標籤:

       核心標籤庫:包含 Web 應用的常見工作,比如:循環、表達式賦值、基本輸入輸出等。

       國際化標籤庫:用來格式化顯示數據的工作,比如:對不同區域的日期格式化等。

       數據庫標籤庫:可以做訪問數據庫的工作。

       XML 標籤庫:用來訪問 XML 文件的工作,這是 JSTL 標籤庫的一個特點。

       函數標籤庫:用來讀取已經定義的某個函數。

此外, JSTL 還提供了 EL 表達式語言( Expression Language )來進行輔助的工作。


一、EL表達式

1、表達式與java無關,表達式都是以 ${ 開始,以 } 結束。

2、EL訪問java變量不能直接訪問,因爲得不到數據,要訪問數據,需要將其放到作用域中。例如訪問String str=”abc”,我們不能通過${str}直接訪問,因爲獲取不到,我們可以這樣訪問:pageContext.setAttribute(“a”,str);獲取方式${a},與java表達式不同的是,當str=null時,該獲取方式獲取不到null,而是什麼東西都不顯示。
3、實例代碼:
request.setAttribute("aaa","wuxin");  ${requestScope.aaa }
訪問javaBean:${隱式對象.id號.屬性名字 } 例如${sessionScope.user.userName }
4、在EL表達式中定義的變量我們不能使用。
5、要直接從表單中獲取值,使用${param.控件名字}
6、獲取值的幾種方式: ${“23”+3}得到的結果爲26,${“23s”+3}報錯
7、打開或者禁用EL表達式:使用isELIgnored=”true(禁用)/false(支持)”
8、${這個裏面不能使用java代碼,否則會報出服務器的500異常}

9、若要在頁面顯示El表達式,在EL表達式的前面加上一個反斜槓,例如:\${1.2+4.5}

二、${對象}

       EL表達式獲取對象屬性的原理是這樣的:以表達式${user.name}爲例,EL表達式會根據name去User類裏尋找這個name的get方法,此時會自動把name首字母大寫並加上get前綴,一旦找到與之匹配的方法,El表達式就會認爲這就是要訪問的屬性,並返回屬性的值。所以,想要通過EL表達式獲取對象屬性的值,那麼這個屬性就必須有與之對應的get方法。

       其實你要了解EL表達式的運行原理,它其實後臺也對應的java代碼,它會先將你EL表達式中的對象屬性的首字符大寫,拼成getXX()方法,然後利用反射將對象構建出來,然後再執行getXX()方法,所以這中間不關私有屬性的事,調用的是私有屬性的get/set方法。如果你不寫get/set方法,那EL表達式就拿不到值了。set方法是給你後臺設置值用的。


參考文獻:

1、http://www.cnblogs.com/HD/p/3630091.html

2、http://www.blogjava.net/supercrsky/articles/179363.html

3、http://blog.csdn.net/wodet_t/article/details/47042435

 

 


--------------------- 
作者:ldcaws 
來源:CSDN 
原文:https://blog.csdn.net/leijie0322/article/details/51982903 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章