EL| EL表示式總結
阿新 • • 發佈:2019-01-24
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取值順序
例子2:
②JavaBean物件的屬性值獲取方式(2種)
(注意不要引號,有引號會直接取到常量)
${bean名.屬性名}
${bean名["屬性名"]} ③文字常量
加減乘除正常用 限數字
+ 是double型為基礎的相加:${ "你好" +1 } 或報錯,${"1" + "2"}正確 ⑤EL中隱式物件: 6個 由於${objectName} 每次都是從最小的作用域通訊物件中獲取值,如果要指定獲取值的作用域通訊物件就要用到隱式物件. (作用域從小到大): pageScope對應java中的pageContext,以此類推.pageContext是指當前頁面,跨頁面就取不到值了. EL: pageScope ,requestScope,sessionScope,applicationScope, 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 }
原理: ${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取值順序
注意: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 ,requestScope,sessionScope,applicationScope, 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 }