1. 程式人生 > >EL| EL表示式總結

EL| EL表示式總結

EL理論: 理解:EL表示式是一種獨立語言,只要是支援該表示式的都可以用.
原理: ${javaBean.property} 是根據javabean的屬性名property來做方法反射後通過公有的get方法來獲取屬性的值. EL表示式不支援java程式碼.只能獲取放置在作用域通訊物件中的資料.(按鍵取值的方式.) 語法: EL的語法簡單,使用方便.所有的EL表示式都是以”${”開始,以”}”結束    ${ } EL表示式用於靜態文字時,其值在執行時被計算出來,被計算值替換.         先計算出值,再替換 EL表示式用於標籤和自定義屬性標籤:幫助顯示網頁上的動態內容.    配合標籤可是實現網頁的動態顯示


注意點:  1.JSP中的EL表示式取值是從4種作用域通訊物件(由小到大的取值,取到就返回,沒有值就不顯示,不是顯示為null)pageContext request session  application. 2.有些容器裡是預設的支援EL表示式,所以不需要任何其他的配置操作,直接用就行. 比如tomcat 容器2.0以上的容器. 3.果要在專案中用了el表示式一定要設定isELIgnored="false"  ,雖然預設的false,但是為了瀏覽器相容問題,還是應該手動設定該屬性.這是讓設定支援el表示式. 4.EL表示式不屬於java,不能訪問java程式碼
,但是el表示式可以直接訪問作用域通訊物件(pageContext request session  application),獲取值後就立即顯示可,無法做到用變數來接受.
①EL取值順序
注意:el表示式不屬於java,訪問不了java程式碼,但是el表示式可以直接訪問作用域通訊物件. 解決辦法:可以將變數壓在作用域通訊物件中.然後按鍵取值.(從作用域中從小作用域取到大) 4種作用域通訊物件(由小到大) pageContext request session  application. 如果要獲得指定的作用域中的值就要使用EL中的隱式物件: eg:${requestScope.objectName}      獲取requestScope中的objectName物件
例子1

             
           例子2:            
 JavaBean物件的屬性值獲取方式(2種)
             (注意不要引號,有引號會直接取到常量)

             ${bean名.屬性名}
            
${bean名["屬性名"]}  ③文字常量
文字常量被指定為規定不變的值. EL表示式支援以下文字常量: ${true}             布林型 ${1314}             整形 ${3.14}             浮點型 ${"yves"}           字串型 ${null}             null       (取出的值為null時,不會再頁面上顯示)
④EL表示式的運算子
     加減乘除正常用  限數字
     +  是double型為基礎的相加:${ "你好" +1 } 或報錯,${"1" + "2"}正確 ⑤EL中隱式物件:  6個   由於${objectName} 每次都是從最小的作用域通訊物件中獲取值,如果要指定獲取值的作用域通訊物件就要用到隱式物件. (作用域從小到大):  pageScope對應java中的pageContext,以此類推.pageContext是指當前頁面,跨頁面就取不到值了. EL:    pageScope  ,requestScopesessionScopeapplicationScope,   param,  paramValues Java:  pageContext,request,    session,  application 例子: ${requestScope.objectName}                 訪問一個request作用域中的物件
${requestScope.objectName.attributeName}  
 訪問一個request作用域中的物件的屬性。
其他隱式物件: param:           返回客戶端的請求引數的字串值          $(param.name)        相當於 request.getParameter (name)。  paramValues:           返回對映至客戶端的請求引數的一組值          ${paramvalues.name ) 相當於  request.getParamterValues(name)。  ⑥使用時注意點: 1.不管是引用型比較還是原始型的比較都是雙等,el表示式中沒有equals比較. 2.el中判斷某個物件是否為空: ${empty  物件名}      如果物件為空,則返回true ${ 物件名  == null}   效果與上面一致
3.el表示式中對空值的處理為不顯示. ${變數名}   當該變數為空,這獲取不到資料,但是不顯示. 4.禁用EL表示式: jsp中page標籤設定 isELIgnored="true" 讓el表示式變成普通文字. 5.運算子比較 用法和普通的比較用法一樣 運算子的比較: ${4 >= 2 }   true  6.錯誤的例子 ${new java.util.Date()}    不能有java程式碼 ${"hello" +8}              + 運算只能數字加數字,比如{"4"+"8"} ${2++ >= 3}                el中沒有++ -- ,可以理解成java程式碼 正確的例子: ${2+1 } ${"2"+"1"} ${"2" + 1 }