版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第5章
表達(dá)式語言
此文檔下載自官網(wǎng),除本頁,其余未修改,可直接刪除本頁本章內(nèi)容5.1理解表達(dá)式語言5.2使用EL運(yùn)算符5.3使用EL訪問數(shù)據(jù)5.1理解表達(dá)式語言EL并不是一種通用的編程語言,它僅僅是一種數(shù)據(jù)訪問語言。網(wǎng)頁作者通過它可以很方便地在JSP頁面中訪問應(yīng)用程序數(shù)據(jù),無需使用小腳本(<%和%>)或JSP請求時表達(dá)式(<%=和%>),甚至不用學(xué)習(xí)Java語言就可以使用表達(dá)式語言。作為一種數(shù)據(jù)訪問語言,EL具有自己的運(yùn)算符、語法和保存字。作為JSP開發(fā)員,我們的工作是創(chuàng)立EL表達(dá)式并將其添加到JSP的響應(yīng)中。5.1.1表達(dá)式語言的調(diào)用在JSP2.0的頁面中,表達(dá)式語言的使用形式如下。
${expression}表達(dá)式語言是以$開頭,后面是一對大括號,括號里面是合法的EL表達(dá)式。該結(jié)構(gòu)可以出現(xiàn)在JSP頁面的模板文本中,也可以出現(xiàn)在JSP標(biāo)簽的屬性值中,只要屬性允許常規(guī)的JSP表達(dá)式即可。下面是在JSP模板文本中使用EL表達(dá)式。
<ul><li>客戶名:${customer.custName}<li>Email地址:${customer.email}</ul>下面是在JSP標(biāo)準(zhǔn)動作的屬性中使用EL表達(dá)式。
<jsp:includepage="${expression1}"/><c:outvalue="${expression2}"/>5.1.1表達(dá)式語言的調(diào)用表達(dá)式語言的主要功能包括:〔1〕提供了一組簡單的運(yùn)算符?!?〕對作用域變量的方便訪問?!?〕對JavaBeans對象訪問的簡單表示?!?〕對集合元素的簡單訪問?!?〕對請求參數(shù)、Cookie和其他請求數(shù)據(jù)的簡單訪問?!?〕提供了在EL中使用Java函數(shù)的功能。5.1.2表達(dá)式語言的功能JSP表達(dá)式的使用格式為:
<%=expression%>
這里的expression為合法的Java表達(dá)式,它屬于腳本語言的代碼。在expression中可以使用由腳本聲明的變量。5.1.3表達(dá)式語言與JSP表達(dá)式的區(qū)別EL表達(dá)式的格式為:${expression}這里的expression是符合EL標(biāo)準(zhǔn)的表達(dá)式,并且不需要包含在標(biāo)簽內(nèi)。在EL表達(dá)式中不能使用腳本中聲明的變量。5.1.3表達(dá)式語言與JSP表達(dá)式的區(qū)別5.2使用EL運(yùn)算符EL作為一種簡單的數(shù)據(jù)訪問語言,提供了一套運(yùn)算符。EL的運(yùn)算符包括:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符、empty運(yùn)算符以及屬性與集合訪問運(yùn)算符。這些運(yùn)算符與Java語言中使用的運(yùn)算符類似,但在某些細(xì)節(jié)上仍有不同。5.2使用EL運(yùn)算符5.2.1算術(shù)運(yùn)算符5.2.2關(guān)系與邏輯運(yùn)算符5.2.3條件運(yùn)算符5.2.4empty運(yùn)算符5.2.5屬性與集合元素訪問運(yùn)算符5.2.1算術(shù)運(yùn)算符表5-1給出了在這些類型上的算術(shù)運(yùn)算符。5.2.2關(guān)系與邏輯運(yùn)算符EL的關(guān)系運(yùn)算符與一般的Java代碼的關(guān)系運(yùn)算符類似,如表5-2所示。5.2.2關(guān)系與邏輯運(yùn)算符關(guān)系表達(dá)式產(chǎn)生的boolean型值可以與EL的邏輯運(yùn)算符結(jié)合運(yùn)算,這些運(yùn)算符如表5-3所示。
5.2.3條件運(yùn)算符EL的條件運(yùn)算符的語法是:expression?expression1:expression2表達(dá)式的值是基于expression的值,它是一個boolean表達(dá)式。如果expression的值為true,那么返回expression1結(jié)果;如果expression的值為false,那么返回expression2的結(jié)果。5.2.3條件運(yùn)算符${(5*5)==25?1:0}
的結(jié)果為1;${(3gt2)&&!(12gt6)?"Right":"Wrong"}
的結(jié)果為Wrong;${("14"eq14.0)&&(14le16)?"Yes":"No"}
的結(jié)果為Yes;${(4.0ne4)||(100<=10)?1:0}
的結(jié)果為0。5.2.4empty運(yùn)算符empty運(yùn)算符的使用格式為:${emptyexpression}它判斷expression的值是否為null、空字符串、空數(shù)組、空Map或空集合,假設(shè)是那么返回true,否那么返回false。5.2.5屬性與集合訪問運(yùn)算符屬性訪問運(yùn)算符用來訪問對象的成員,集合訪問運(yùn)算符用來檢索Map、List或數(shù)組對象的元素。這些運(yùn)算符在處理隱含變量時特別有用。在EL中,這類運(yùn)算符有下面兩個。?點(diǎn)號〔.〕運(yùn)算符。?方括號〔[]〕運(yùn)算符。1.點(diǎn)號〔.〕運(yùn)算符點(diǎn)號運(yùn)算符用來訪問Map對象一個鍵的值或bean對象的屬性值,例如:param是EL的一個隱含對象,它是一個Map對象,下面代碼返回param對象username請求參數(shù)的值:${param.username}再比方,假設(shè)customer是Customer類的一個實例,下面代碼訪問該實例的custName屬性值:${customer.custName}2.方括號〔[]〕運(yùn)算符方括號運(yùn)算符除了可以訪問Map對象鍵值和bean的屬性值外,還可以訪問List對象和數(shù)組對象的元素。例如:${param["username"]}或${param['username']}${customer["custName"]}下面程序使用表格的形式輸出了使用各種運(yùn)算符的EL表達(dá)式的值。2.方括號〔[]〕運(yùn)算符程序5.1eloperator.jsp為了在JSP頁面中輸出文本${2+5},需要在“$”符號前使用轉(zhuǎn)義字符“\”,否那么將輸出EL表達(dá)式的值。5.3使用EL訪問數(shù)據(jù)5.3.1訪問作用域變量5.3.2訪問JavaBeans屬性5.3.3訪問集合元素5.3.4訪問EL的隱含變量5.3.1訪問作用域變量在JSP頁面中,可以使用JSP表達(dá)式訪問作用域變量。一般做法是:在Servlet中使用setAttribute()將一個變量存儲到某個作用域?qū)ο笊希鏗ttpServletRequest、HttpSession及ServletContext等。然后使用RequestDispatcher對象的forward()將請求轉(zhuǎn)發(fā)到JSP頁面,在JSP頁面中調(diào)用隱含變量的getAttribute()返回作用域變量的值。5.3.1訪問作用域變量使用EL就可以更方便地訪問這些作用域變量。要輸出作用域變量的值,只需在EL中使用變量名即可,例如:${variable_name}對該表達(dá)式,容器將依次在頁面作用域、請求作用域、會話作用域和應(yīng)用作用域中查找名為variable_name的屬性。如果找到該屬性,那么調(diào)用它的toString()并返回屬性值。如果沒有找到,那么返回空字符串〔不是null〕。5.3.1訪問作用域變量下面通過一個例子說明如何訪問作用域變量。程序5.2VariableServlet.java程序5.3variables.jsp5.3.2訪問JavaBeans屬性如果知道JavaBeans的完整名稱和它的作用域,也可以使用下面JSP標(biāo)準(zhǔn)動作訪問JavaBeans的屬性:"scope="session"/><jsp:setPropertyname="employee"property="empName"value="Hacker"/><jsp:getPropertyname="employee"property="empName"/>5.3.2訪問JavaBeans屬性如果使用表達(dá)式語言,就可以通過點(diǎn)號表示法很方便地訪問JavaBeans的屬性,如下所示:
${employee.empName}使用表達(dá)式語言,如果沒有找到指定的屬性不會拋出異常,而是返回空字符串。5.3.2訪問JavaBeans屬性使用表達(dá)式語言還允許訪問嵌套屬性。例如,如果Employee有一個address屬性,它的類型為Address,而Address又有zipCode屬性,那么可以使用下面簡單形式訪問zipCode屬性。}上面的方法不能使用<jsp:useBean>和<jsp:getProperty>實現(xiàn)。5.3.2訪問JavaBeans屬性下面通過一個例如來說明對JavaBeans屬性的訪問。該例中有兩個JavaBeans,分別為Address,它有三個字符串類型的屬性,city、street和zipCode;Employee是在前面的類的根底上增加了一個Address類型的屬性address表示地址。5.3.2訪問JavaBeans屬性在EmployeeServlet.java程序中創(chuàng)立了一個Employee對象并將其設(shè)置為請求作用域的一個屬性,然后將請求轉(zhuǎn)發(fā)到JSP頁面,在JSP頁面中使用下面的EL訪問客戶地址的三個屬性。<li>城市}<li>街道}<li>}5.3.2訪問JavaBeans屬性程序5.4Address.java程序5.5Employee.java程序5.6EmployeeServlet.java程序5.7beanDemo.jsp5.3.3訪問集合元素在EL中可以訪問各種集合對象的元素,集合可以是數(shù)組、List對象或Map對象。這需要使用數(shù)組記法的運(yùn)算符([])。例如,假設(shè)有一個上述類型的對象attributeName,可以使用下面形式訪問其元素。
${attributeName[entryName]}5.3.3訪問集合元素〔1〕如果attributeName對象是數(shù)組,那么entryName為下標(biāo)。上述表達(dá)式返回指定下標(biāo)的元素值。下面代碼演示了訪問數(shù)組元素。<%String[]fruit={"apple","orange","banana"};request.setAttribute("myFruit",fruit);%>Myfavoritefruitis:${myFruit[2]}上面一行還可以寫成:Myfavoritefruitis:${myFruit["2"]}5.3.3訪問集合元素〔2〕如果attributeName對象是實現(xiàn)了List接口的對象,那么entryName為索引。下面代碼演示了訪問List元素。<%@pageimport="java.util.ArrayList"%><%ArrayList<String>fruit=newArrayList<String>();fruit.add("apple");fruit.add("orange");fruit.add("banana");request.setAttribute("myFruit",fruit);%>Myfavoritefruitis:${myFruit[2]}5.3.3訪問集合元素〔3〕如果attributeName對象是實現(xiàn)了Map接口的對象,那么entryName為鍵,相應(yīng)的值通過Map對象的get(key)獲得的,例如:Map<String,String>capital=newHashMap<String,String>();capital.put("England","倫敦");capital.put("China","北京");capital.put("Russia","莫斯科");request.setAttribute("capital",capital);ThecapitalofChinais:${capital["China"]}<br>ThecapitalofRussiais:${capital.Russia}5.3.3訪問集合元素程序5.8CollectServlet.java程序5.9collections.jsp5.3.4訪問EL隱含變量在JSP頁面的腳本中可以訪問JSP隱含變量,如request、session、application等。EL表達(dá)式中也定義了一套自己的隱含變量。使用EL可以直接訪問這些隱含變量。表5-4給出了EL中可以使用的11個隱含變量及其說明。1.pageContext變量pageContext是PageContext類型的變量。PageContext類依次擁有request、response、session、out和servletContext屬性,使用pageContext變量可以訪問這些屬性的屬性。下面是一些例子。
}2.param和paramValues變量param和paramValues變量用來從ServletRequest中檢索請求參數(shù)值。param變量是調(diào)用給定參數(shù)名的getParameter(Stringname)的結(jié)果,使用EL表示如下。
${}類似地,paramValues是使用getParameterValues(Stringname)返回給定名稱的參數(shù)值的數(shù)組。要訪問參數(shù)值數(shù)組的第一個元素,可使用下面代碼。
${paramV[0]}3.header和headerValues變量header和headerValues變量是從HTTP請求頭中檢索值,它們的運(yùn)行機(jī)制與param和paramValues類似。下面代碼使用EL顯示了請求頭host的值。${header.host}或${header["host"]}類似地,headerValues.host是一個數(shù)組,它的第一個元素可使用以下表達(dá)式之一顯示。${headerValues.host[0]}${headerValues.host["0"]}${headerValues.host['0']}4.cookie變量使用EL的cookie隱含變量得到客戶向效勞器發(fā)回的Cookie數(shù)組,即調(diào)用request對象的getCookies()的返回結(jié)果。如果要訪問cookie的值,那么需要使用Cookie類的屬性value〔即getValue方法〕。因此,下面一行可以輸知名為userName的Cookie的值。如果沒有找到這個cookie對象,那么輸出空字符串。}使用cookie變量還可以訪問會話Cookie的ID值,例如:}5.initParam變量initParam變量存儲了Servlet上下文的參數(shù)名和參數(shù)值。例
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國汽車服務(wù)行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實施研究報告
- 2025-2030年中國車載視頻監(jiān)控行業(yè)全國市場開拓戰(zhàn)略制定與實施研究報告
- 2025-2030年中國團(tuán)餐行業(yè)開拓第二增長曲線戰(zhàn)略制定與實施研究報告
- 新形勢下新型煙草行業(yè)高速增長戰(zhàn)略制定與實施研究報告
- 世衛(wèi)組織(WHO)結(jié)核病綜合指南解讀課件
- 速凍食品包裝調(diào)研問卷
- 紅外線爐項目可行性研究報告建議書
- 三年級數(shù)學(xué)計算題專項練習(xí)及答案
- 倉庫作業(yè)知識培訓(xùn)課件
- 春節(jié)農(nóng)業(yè)變革創(chuàng)新
- 2025年國務(wù)院發(fā)展研究中心信息中心招聘應(yīng)屆畢業(yè)生1人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年公安機(jī)關(guān)理論考試題庫500道及參考答案
- 特殊情況施工的技術(shù)措施
- 大學(xué)物理(二)知到智慧樹章節(jié)測試課后答案2024年秋湖南大學(xué)
- 銀行運(yùn)營集中規(guī)劃
- 《數(shù)據(jù)分析你懂的》課件
- 液相色譜質(zhì)譜質(zhì)譜儀LCMSMSSYSTEM
- 派克與永華互換表
- 宣傳廣告彩頁制作合同
- 【語法】小學(xué)英語語法大全
- 除濕機(jī)說明書
評論
0/150
提交評論