java基礎(chǔ)學(xué)習(xí):JavaWeb之EL表達(dá)式

其他更多java基礎(chǔ)文章:
java基礎(chǔ)學(xué)習(xí)(目錄)


一鲤拿、EL表達(dá)式

EL 全名為Expression Language假褪。JSP中可以使用EL表達(dá)式,EL表達(dá)式是用"${}"括起來的腳本近顷,用來更方便地讀取對(duì)象生音,EL表達(dá)式寫在JSP的HTML代碼中宁否,而不能寫在"<%%>"引起的JSP腳本中

EL表達(dá)式的功能:

  1. 獲取數(shù)據(jù):EL表達(dá)式主要用于替換JSP頁(yè)面中的腳本表達(dá)式,以從各種類型的web域 中檢索java對(duì)象缀遍、獲取數(shù)據(jù)慕匠。(某個(gè)web域 中的對(duì)象,訪問javabean的屬性域醇、訪問list集合台谊、訪問map集合、訪問數(shù)組)
  2. 執(zhí)行運(yùn)算:利用EL表達(dá)式可以在JSP頁(yè)面中執(zhí)行一些基本的關(guān)系運(yùn)算譬挚、邏輯運(yùn)算和算術(shù)運(yùn)算锅铅,以在JSP頁(yè)面中完成一些簡(jiǎn)單的邏輯運(yùn)算。${user==null}
  3. 獲取web開發(fā)常用對(duì)象:EL 表達(dá)式定義了一些隱式對(duì)象减宣,利用這些隱式對(duì)象狠角,web開發(fā)人員可以很輕松獲得對(duì)web常用對(duì)象的引用,從而獲得這些對(duì)象中的數(shù)據(jù)蚪腋。
  4. 調(diào)用Java方法:EL表達(dá)式允許用戶開發(fā)自定義EL函數(shù)丰歌,以在JSP頁(yè)面中通過EL表達(dá)式調(diào)用Java類的方法。

1.1屉凯、獲取數(shù)據(jù)

使用EL表達(dá)式獲取數(shù)據(jù)語(yǔ)法:"${標(biāo)識(shí)符}"

  1. EL表達(dá)式語(yǔ)句在執(zhí)行時(shí)立帖,會(huì)調(diào)用pageContext.findAttribute方法,用標(biāo)識(shí)符為關(guān)鍵字悠砚,分別從page晓勇、request、session灌旧、application四個(gè)域中查找相應(yīng)的對(duì)象绑咱,找到則返回相應(yīng)對(duì)象,找不到則返回”” (注意枢泰,不是null描融,而是空字符串)。
    ${abc}
  2. EL表達(dá)式可以很輕松獲取JavaBean的屬性衡蚂,或獲取數(shù)組窿克、Collection、Map類型集合的數(shù)據(jù)毛甲。${requestScope.emp.address.street}

1.2年叮、執(zhí)行運(yùn)算

語(yǔ)法:${運(yùn)算表達(dá)式},EL表達(dá)式支持如下運(yùn)算符:
1)關(guān)系運(yùn)算發(fā)


2)邏輯運(yùn)算符


3)empty運(yùn)算符:檢查對(duì)象是否為null(空)玻募,${!empty(list)}

4)二元表達(dá)式:${user!=null?user.name :""}

5)[ ] 和 . 號(hào)運(yùn)算符

1.3只损、獲得web開發(fā)常用對(duì)象

EL表達(dá)式語(yǔ)言中定義了11個(gè)隱含對(duì)象,使用這些隱含對(duì)象可以很方便地獲取web開發(fā)中的一些常見對(duì)象七咧,并讀取這些對(duì)象的數(shù)據(jù)跃惫。

分析:    
pageScope啸蜜、requestScope、sessionScope辈挂、applicationScope代表四個(gè)作用域?qū)ο螅ㄓ糜诒4鎸傩缘腗ap對(duì)象)
pageContext:表示的是JSP中內(nèi)置對(duì)象pageContext,能獲取request等其他JSP八大內(nèi)置對(duì)象  
param:表示一個(gè)請(qǐng)求參數(shù), ${param.username}等效 request.getParameter("username");(表示一個(gè)保存了所有請(qǐng)求參數(shù)的Map對(duì)象)
paramValues:表示一組請(qǐng)求參數(shù)裹粤,${paramValues.abc}等效request.getParameterValues("abc");這種多選框(表示一個(gè)保存了所有請(qǐng)求參數(shù)的Map對(duì)象终蒂,它對(duì)于某個(gè)請(qǐng)求參數(shù),返回的是一個(gè)string[])
header:表示一個(gè)請(qǐng)求頭遥诉,${header.referer}等效request.getHeader("referer");
headerValues:表示一組請(qǐng)求頭拇泣,${header.cookie}等效 request.getHeaders("cookie");獲取的請(qǐng)求頭參數(shù)中的內(nèi)容是一組內(nèi)容,比如cookie就有可以是多個(gè)cookie一起傳過來
cookie:獲得cookie對(duì)象(表示一個(gè)保存了所有cookie的Map對(duì)象)
initPatam:web項(xiàng)目初始化參數(shù)矮锈,servletContext.getInitParameter("xxx");(表示一個(gè)保存了所有web應(yīng)用初始化參數(shù)的map對(duì)象)

注意1:還有一種特殊的用法霉翔,直接獲取對(duì)象變量${user.username},user為User的一個(gè)實(shí)例對(duì)象苞笨,并且存放在page作用域中债朵,上面這句代碼的意思是,依次從page瀑凝、request序芦、session、application作用域查找user對(duì)象粤咪,直到找到為止谚中,底層使用的是pageContext.findAttribute(); 是一樣的效果。

注意2:測(cè)試header和headerValues或者有些參數(shù)時(shí)寥枝,如果頭里面有“-” 宪塔,例Accept-Encoding,則要header["Accept-Encoding"]囊拜、headerValues["Accept-Encoding"]
測(cè)試cookie時(shí)某筐,例${cookie.key}取的是cookie對(duì)象,如訪問cookie的名稱和值冠跷,須${cookie.key.name}或${cookie.key.value}

二来吩、總結(jié)

EL表達(dá)式比較簡(jiǎn)單,使用它的目的是為了減少JSP腳本蔽莱,盡量不要在HTML中嵌入Java代碼弟疆,顯的很混亂,而在HTML中使用EL表達(dá)式盗冷,就比較好來獲取JSP中各種對(duì)象怠苔,獲取四大作用域中的值,

  1. 如果要獲取四大作用域中的數(shù)據(jù)仪糖,則可以使用{}柑司、{pageScope.xxx}
  2. 如果想要獲取請(qǐng)求參數(shù)迫肖,則使用param或paramValues
  3. 如果想要獲取請(qǐng)求頭中的一些信息,獲取想要獲取Servlet的一些對(duì)象攒驰,比如request蟆湖、session等,可以使用pageContext來獲取request對(duì)象玻粪,然后在獲取所需要的信息隅津,或者直接使用header對(duì)象來獲取頭信息
  4. 如果想獲取web初始化參數(shù),則使用initPatam劲室。

最主要的是要記得EL中有哪11個(gè)內(nèi)置對(duì)象伦仍,知道了他們就知道了EL可以獲取哪些信息。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末很洋,一起剝皮案震驚了整個(gè)濱河市充蓝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌喉磁,老刑警劉巖谓苟,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異协怒,居然都是意外死亡娜谊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門斤讥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纱皆,“玉大人,你說我怎么就攤上這事芭商∨刹荩” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵铛楣,是天一觀的道長(zhǎng)近迁。 經(jīng)常有香客問我,道長(zhǎng)簸州,這世上最難降的妖魔是什么鉴竭? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任代芜,我火速辦了婚禮驹饺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘的妖。我一直安慰自己矢洲,他們只是感情好璧眠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般责静。 火紅的嫁衣襯著肌膚如雪袁滥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天灾螃,我揣著相機(jī)與錄音题翻,去河邊找鬼。 笑死腰鬼,一個(gè)胖子當(dāng)著我的面吹牛嵌赠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播垃喊,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼袜炕!你這毒婦竟也來了本谜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤偎窘,失蹤者是張志新(化名)和其女友劉穎乌助,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陌知,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡他托,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仆葡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赏参。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖沿盅,靈堂內(nèi)的尸體忽然破棺而出把篓,到底是詐尸還是另有隱情,我是刑警寧澤腰涧,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布韧掩,位于F島的核電站,受9級(jí)特大地震影響窖铡,放射性物質(zhì)發(fā)生泄漏疗锐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一费彼、第九天 我趴在偏房一處隱蔽的房頂上張望滑臊。 院中可真熱鬧,春花似錦箍铲、人聲如沸简珠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)聋庵。三九已至膘融,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間祭玉,已是汗流浹背氧映。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脱货,地道東北人岛都。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像振峻,于是被迫代替她去往敵國(guó)和親臼疫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348