web開發:EL表達式是什麼?編程時怎麼和jsp頁面交互?用在哪裡?

EL表達式可以嵌入在jsp頁面內部,減少jsp腳本(Java代碼)的編寫,EL 出現的目的是要替代jsp頁面中腳本的編寫。

EL表達式用於獲取數據,在jsp頁面中可以使用${標識符}的形式通知jsp引擎調用page.findAttribute()方法,以標識符為關鍵字從各個領域對象中獲取,依次從pageContext域,request域,session域,application域中獲取,如果所有域中不存在標識符所對應的對象,則返回" "。

假如我們向域中存儲一個字符串String str="222",request.setAttribute("str",str);,那麼我們用el取出,${str},那麼取出的str為222,我們通過ei獲取的數據都是不帶任何引號的,所以要是有些地方需要用帶有引號的需要引起來,而且ei語言可以在jsp頁面用在任何地方我們使用,使用它的時候就把他當成一個數字就OK了,還有getParameter獲取參數返回類型都是String

使用方法舉例

web開發:EL表達式是什麼?編程時怎麼和jsp頁面交互?用在哪裡?

${data};獲取鍵為data的值

web開發:EL表達式是什麼?編程時怎麼和jsp頁面交互?用在哪裡?

${p.name};獲取鍵為p的name屬性,不用getname,省略get

web開發:EL表達式是什麼?編程時怎麼和jsp頁面交互?用在哪裡?

這個是person的成員變量為Address屬性,Address也是類,他的屬性為city

${p1.address.city}獲取p1對象的address屬性的city屬性

web開發:EL表達式是什麼?編程時怎麼和jsp頁面交互?用在哪裡?

${list[1].name}獲取list集合中的第一個對象的name

web開發:EL表達式是什麼?編程時怎麼和jsp頁面交互?用在哪裡?

${map.aaa.name}獲取map集合的對象的鍵為aaa的person的name屬性${map['111'].name }當鍵為數字的時候就不可以${map.111.name},應該用[]

總之就是el表達式在取數據的時候通常用.號,如果.號取不出來,用【】

${標識符}依次從pageContext域,request域,session域,application域中獲取標識符相對的數據

那麼可以指定從哪個域獲取嗎?可以在獲取數據之前指定從哪個域獲取

EL獲得pageContext域中的值:$(pageContextScope.key);EL獲得request域中的值:$(requestScope.key);EL獲得session域中的值:$(sessionScope.key);EL獲得application域中的值:$(applicationScope.key);

注意requestSocpe是el的內置對象,和jsp的內置對象request並不是一個東西,request寫入的數據會寫入request域,在使用$(requestScope.key)可以專門獲取到request域的數據

EL內置對象

web開發:EL表達式是什麼?編程時怎麼和jsp頁面交互?用在哪裡?

獲取當前web應用的名稱$(pageContext.request.contextPath) 結果式/web應用名稱用處 pageContext在jsp中為默認的上下文對象,可以獲取到八大對象,然後通過它獲取到request,然後獲取web應用的路徑

jsp中有內置對象,el中也有內置對象,也有就是我們獲取數據有兩種實現形式,一個是寫在標籤中通過jsp的內置對象來操作(在這裡寫的時候就按照正常Java來寫就ok),還有一種形式是通過el對象來操作,舉例:

web開發:EL表達式是什麼?編程時怎麼和jsp頁面交互?用在哪裡?

一個是通過jsp內置對象request獲取username的數據,還有一個是直接通過param參數對象獲取數據,這兩種方式均可以,而el的出現就是為了減少jsp中java代碼的量

${header["user-Agent"]}(獲取請求頭,因為user-Agent有個-所以不用.連接而是通過【】括起來)

${initparam.aaa}獲取全局參數aaa(配置文件中)

${cookie.name1.value}cookie。name為獲取name1的cookie對象再。cookie就是name=name1的cookie的值了

el執行表達式

web開發:EL表達式是什麼?編程時怎麼和jsp頁面交互?用在哪裡?

結果2,true,false

empty為判斷list對象是否為空


分享到:


相關文章: