版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JavaWeb開(kāi)發(fā)技術(shù)
第6章簡(jiǎn)單的表達(dá)式2/4/20231第六章簡(jiǎn)單的表達(dá)式6.1表達(dá)式語(yǔ)言簡(jiǎn)介6.2表達(dá)式語(yǔ)言語(yǔ)法6.3EL中的隱含對(duì)象6.4小結(jié)2/4/20232JavaWeb開(kāi)發(fā)技術(shù)6.1表達(dá)式語(yǔ)言簡(jiǎn)介6.1.1EL用于靜態(tài)文本6.1.2EL用于動(dòng)態(tài)文本2/4/20233JavaWeb開(kāi)發(fā)技術(shù)6.1表達(dá)式語(yǔ)言簡(jiǎn)介表達(dá)式語(yǔ)言(EL)是由Java社區(qū)組織(JCP,JavaCommunityProcess)的JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù)專(zhuān)家組和JSP2.0專(zhuān)家組共同開(kāi)發(fā)??梢杂糜贘SP頁(yè)面中的HTML標(biāo)記,也可以用于JSP的特有標(biāo)記。只要是支持Servlet2.4/JSP2.0的Web容器,都可以在JSP網(wǎng)頁(yè)中直接使用EL。2/4/20234JavaWeb開(kāi)發(fā)技術(shù)6.1表達(dá)式語(yǔ)言簡(jiǎn)介EL語(yǔ)法結(jié)構(gòu):
${ELexpression}所有EL都是以${為起始、以}為結(jié)尾,ELexpression為指定表達(dá)式。如:${sessionScope.user.sex},意思是:從Session范圍中取得用戶(hù)性別。EL的語(yǔ)法比傳統(tǒng)JSP腳本更為方便、簡(jiǎn)潔。2/4/20235JavaWeb開(kāi)發(fā)技術(shù)6.1.1EL用于靜態(tài)文本在課本例exa6_1.jsp中靜態(tài)文本<H2>中包含一個(gè)EL表達(dá)式${12.5e4},exa6_1.jsp:<html><body><h2>商品價(jià)格是${12.5E4}.</h2>Thevalueof2plus5is:<h1>${2+5}</h1></body><html>例exa6_1.jsp運(yùn)行結(jié)果見(jiàn)課本圖6-2所示2/4/20236JavaWeb開(kāi)發(fā)技術(shù)6.1.1EL用于靜態(tài)文本(續(xù))例exa6_2.jsp演示在<table>標(biāo)記中使用EL表達(dá)式,運(yùn)行結(jié)果見(jiàn)圖6-3所示。例exa6_2.jsp中注意兩點(diǎn):
<%@pageisELIgnored=“false”%>,如果該屬性設(shè)為“true”,JSP容器將忽略表達(dá)式的計(jì)算,這與Tomcat版本有關(guān)。2/4/20237JavaWeb開(kāi)發(fā)技術(shù)2.${'${'}},如果在EL表達(dá)式中出現(xiàn)${'${'},則EL表達(dá)式輸出“${”,并把“}”后面的表達(dá)式看成字符串輸出。6.1.1EL用于靜態(tài)文本(續(xù))2/4/20238JavaWeb開(kāi)發(fā)技術(shù)6.1.1EL用于靜態(tài)文本(續(xù))禁用EL表達(dá)式的問(wèn)題:“${”和“}”成為EL表達(dá)式專(zhuān)用符號(hào)。但有時(shí)可能不需要它們作為EL表達(dá)式專(zhuān)用符號(hào),而是作為一般符號(hào)。這時(shí)需要使用<%@pageisELIgnored=“true”%>禁用EL表達(dá)式。2/4/20239JavaWeb開(kāi)發(fā)技術(shù)6.1.1EL用于靜態(tài)文本(續(xù))isELIgnored屬性的默認(rèn)值隨著Web服務(wù)器的不同版本而不同,本書(shū)用的Tomcat5.0.28默認(rèn)為“false”。課本例exa6_3.jsp中isELIgnored屬性為“false”或設(shè)為默認(rèn)值的運(yùn)行結(jié)果見(jiàn)課本圖6-5所示,禁用的運(yùn)行結(jié)果見(jiàn)課本圖6-6所示。2/4/202310JavaWeb開(kāi)發(fā)技術(shù)6.1.1EL用于靜態(tài)文本(續(xù))exa6_3.jsp關(guān)鍵代碼: <%@pageisELIgnored="false"%><h1>啟用/禁用表達(dá)式語(yǔ)言</h1><formmethod="post"action="expressionexample.jsp"><b>${'名字:'}<inputtype="text"value="${'請(qǐng)輸入您的名字'}"/></b><br/><b>${'姓氏:'}<inputtype="text"value="${'請(qǐng)輸入您的姓氏'}"/></b><br/><inputtype="submit"name="Submit"value="${'提交表單'}"><inputtype="reset"value="${'重置表單'}">
</form>2/4/202311JavaWeb開(kāi)發(fā)技術(shù)6.1.2EL用于動(dòng)態(tài)文本動(dòng)態(tài)文本簡(jiǎn)介:EL表達(dá)式可以用作標(biāo)準(zhǔn)標(biāo)記和用戶(hù)自定義標(biāo)記的屬性值,幫助顯示頁(yè)面上的動(dòng)態(tài)內(nèi)容,也可以和一些標(biāo)記,如<jsp:useBean>、<jsp:include>、<jsp:forward>等結(jié)合使用2/4/202312JavaWeb開(kāi)發(fā)技術(shù)6.1.2EL用于動(dòng)態(tài)文本(續(xù))課本例exa6_4.jsp中使用<jsp:useBean>標(biāo)準(zhǔn)動(dòng)作創(chuàng)建一個(gè)JavaBean,然后使用EL表達(dá)式讀出Bean的屬性值。運(yùn)行結(jié)果見(jiàn)課本圖6-7所示。2/4/202313JavaWeb開(kāi)發(fā)技術(shù)6.2表達(dá)式語(yǔ)言語(yǔ)法6.2.1.與[]運(yùn)算符6.2.2EL中的變量6.2.3EL中的符號(hào)常量6.2.4EL中的保留字6.2.5EL中的運(yùn)算符6.2.6EL中的函數(shù)2/4/202314JavaWeb開(kāi)發(fā)技術(shù)6.2.1.與[]運(yùn)算符
EL提供
.和[]兩種運(yùn)算符來(lái)存取數(shù)據(jù)。以下兩種情況兩者會(huì)有差異:(1)當(dāng)要存取的屬性名稱(chēng)中包含一些特殊字符,如.或—等,就一定要使用[]。(2)需要?jiǎng)討B(tài)取值時(shí),要用[],因?yàn)?無(wú)法做到動(dòng)態(tài)取值。2/4/202315JavaWeb開(kāi)發(fā)技術(shù)6.2.1.與[]運(yùn)算符(續(xù))[]運(yùn)算符的意義:假設(shè)有一個(gè)EL:${A[B]}(1)當(dāng)A的值為null時(shí),它會(huì)回傳null。(2)當(dāng)B的值為null時(shí),它會(huì)回傳null。(3)當(dāng)A的值為Map類(lèi)型時(shí),若!A.containsKey(B)為真,則回傳null;否則回傳A.get(B)。2/4/202316JavaWeb開(kāi)發(fā)技術(shù)6.2.1.與[]運(yùn)算符(續(xù))(4)當(dāng)A的值為L(zhǎng)ist或Array類(lèi)型時(shí),將B的值強(qiáng)制轉(zhuǎn)型為int類(lèi)型,假若不能轉(zhuǎn)換則會(huì)產(chǎn)生error;假若能轉(zhuǎn)為int類(lèi)型,但出現(xiàn)ArrayIndexOutOfBoundsException或IndexOutOfBoundsException時(shí),則回傳null;(5)當(dāng)A的值為JavaBean對(duì)象時(shí),將B的值強(qiáng)制轉(zhuǎn)型為String類(lèi)型,若沒(méi)有異常產(chǎn)生,則回傳A.getB()的結(jié)果。2/4/202317JavaWeb開(kāi)發(fā)技術(shù)6.2.2EL中的變量EL存取變量數(shù)據(jù)的方法:沒(méi)有指定范圍的JSP容器會(huì)先從page范圍找。假如找不到,再依序到request、session、application范圍。直接指定要取出哪一個(gè)范圍的變量.
從不同范圍取變量值舉例見(jiàn)課本表6-1
。2/4/202318JavaWeb開(kāi)發(fā)技術(shù)6.2.3EL中的符號(hào)常量表達(dá)式語(yǔ)言中可以使用符號(hào)常量,它類(lèi)似于Java中final說(shuō)明的常量。使用符號(hào)常量的目的就是減少代碼維護(hù)代價(jià)。
EL表達(dá)式定義的符號(hào)常量見(jiàn)表6-2所示。2/4/202319JavaWeb開(kāi)發(fā)技術(shù)6.2.3EL中的符號(hào)常量(續(xù))在課本例exa6_5.jsp中color、size、textclr、foregr為符號(hào)常量,并被賦值。使用JSP的pageContext隱含對(duì)象將它們存為頁(yè)面的屬性,并使用EL表達(dá)式的隱含對(duì)象pageScope將它們傳給標(biāo)記的屬性,運(yùn)行結(jié)果見(jiàn)圖6-8所示。2/4/202320JavaWeb開(kāi)發(fā)技術(shù)6.2.4EL中的保留字與其它編程語(yǔ)言一樣,EL也有保留字。不得使用保留字作為標(biāo)識(shí)符編寫(xiě)EL表達(dá)式,以免程序編譯時(shí)發(fā)生錯(cuò)誤。EL表達(dá)式的保留字如下表所示。2/4/202321JavaWeb開(kāi)發(fā)技術(shù)6.2.4EL中的保留字(續(xù))保留字說(shuō)明保留字說(shuō)明保留字說(shuō)明保留字說(shuō)明保留字說(shuō)明and與gt大于eq等于TRUE真empty空or或ne不等le小于等于FALSE假div除法not非lt小于ge大于等于null空值mod取模2/4/202322JavaWeb開(kāi)發(fā)技術(shù)6.2.5EL中的運(yùn)算符運(yùn)算符用于執(zhí)行各種運(yùn)算,如算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算等。EL表達(dá)式支持多種運(yùn)算符,表達(dá)式是按照運(yùn)算符的優(yōu)先級(jí)來(lái)完成。下頁(yè)表中按照優(yōu)先級(jí)從高到低的順序從上到下、從左到右列出了EL中各種運(yùn)算符。運(yùn)算符示例見(jiàn)書(shū)中表6-5。課本例exa6_6.jsp演示了各種運(yùn)算符,結(jié)果見(jiàn)圖6-9所示。2/4/202323JavaWeb開(kāi)發(fā)技術(shù)6.2.5EL中的運(yùn)算符(續(xù))運(yùn)算符說(shuō)明
運(yùn)算符說(shuō)明
運(yùn)算符說(shuō)明!或not布爾取反+,-加法,減法==或eq等于empty檢查空值<或lt小于!=或ne不等*乘法>或gt大于&&或and邏輯與/或div除法<=或le小于等于||或or邏輯或%或mod取模>=或ge大于等于num1?num2:num3條件運(yùn)算2/4/202324JavaWeb開(kāi)發(fā)技術(shù)6.2.6EL中的函數(shù)
EL表達(dá)式允許定義和使用函數(shù)。定義和使用函數(shù)方法同用戶(hù)自定義標(biāo)記,主要經(jīng)過(guò)以下步驟:(1)編寫(xiě)一個(gè)類(lèi),其中的方法必須為靜態(tài)(2)類(lèi)中所有方法應(yīng)該在標(biāo)記庫(kù)描述文件中說(shuō)明(3)將標(biāo)記庫(kù)描述文件在web.xml中加以說(shuō)明(4)在頁(yè)面中加以使用2/4/202325JavaWeb開(kāi)發(fā)技術(shù)6.2.6EL中的函數(shù)(續(xù))舉例說(shuō)明:寫(xiě)一個(gè)類(lèi)Function.java,它的方法必須是靜態(tài)的,代碼見(jiàn)課本exa6_7。其中定義的兩個(gè)靜態(tài)方法需要在functions.tld中加以說(shuō)明。需要在web.xml中描述functions.tld。在JSP頁(yè)面function.jsp中使用這兩個(gè)函數(shù)
。2/4/202326JavaWeb開(kāi)發(fā)技術(shù)6.3EL中的隱含對(duì)象6.3.1與范圍有關(guān)的隱含對(duì)象6.3.2與輸入有關(guān)的隱含對(duì)象6.3.3其他隱含對(duì)象2/4/202327JavaWeb開(kāi)發(fā)技術(shù)6.3EL中的隱含對(duì)象(續(xù))EL隱含對(duì)象總共有11個(gè),在JSP腳本和EL表達(dá)式中可用,這11個(gè)隱含對(duì)象分成三類(lèi):1.與范圍有關(guān)的隱含對(duì)象:applicationScope、sessionScope、requestScope、pageScope2.與輸入有關(guān)的隱含對(duì)象:paramparamValues3.其他隱含對(duì)象:cookie、header、headerValues、initParam、pageContext2/4/202328JavaWeb開(kāi)發(fā)技術(shù)6.3EL中的隱含對(duì)象(續(xù))隱含對(duì)象類(lèi)型說(shuō)明PageContextjavax.servlet.ServletContext表示此JSP頁(yè)面上下文PageScopejava.util.Map取得Page范圍的屬性名稱(chēng)所對(duì)應(yīng)的值RequestScopejava.util.Map取得Request范圍的屬性名稱(chēng)所對(duì)應(yīng)值sessionScopejava.util.Map取得Session范圍的屬性名稱(chēng)所對(duì)應(yīng)的值applicationScopejava.util.Map取得Application范圍的屬性名稱(chēng)所的值paramjava.util.Map如同ServletRequest.getParameter(String
name)回傳String類(lèi)型的值paramValuesjava.util.Map如同ServletRequest.getParameterValues(Stringname)。回傳String[]類(lèi)型的值headerjava.util.Map如同ServletRequest.getHeader(Stringname)回傳String類(lèi)型的值headerValuesjava.util.Map如同ServletRequest.getHeaders(Stringname)?;貍鱏tring[]類(lèi)型的值cookiejava.util.Map如同HttpServletRequest.getCookies()initParamjava.util.Map如同ServletContext.getInitParameter(Stringname)?;貍鱏tring類(lèi)型的值2/4/202329JavaWeb開(kāi)發(fā)技術(shù)6.3.1與范圍有關(guān)的隱含對(duì)象范圍有關(guān)的EL隱含對(duì)象包含以下四個(gè):pageScope、requestScope、sessionScope
和applicationScope
它們的使用和JSP的pageContext、request、session和application基本一樣。但是這四個(gè)隱含對(duì)象只能用來(lái)取得范圍屬性值,卻不能取得其他相關(guān)信息。2/4/202330JavaWeb開(kāi)發(fā)技術(shù)6.3.1與范圍有關(guān)的隱含對(duì)象(續(xù))四個(gè)隱含對(duì)象的說(shuō)明:pageScope范圍和JSP的page相同,即當(dāng)前頁(yè)。requestScope范圍和JSP的request相同,即從當(dāng)前頁(yè)通過(guò)forward或include方式轉(zhuǎn)到的另外JSP網(wǎng)頁(yè)。sessionScope范圍和JSP的session相同,就是用戶(hù)持續(xù)在服務(wù)器連接的時(shí)間內(nèi)。applicationScope范圍和JSP的application相同,是從服務(wù)器一開(kāi)始執(zhí)行服務(wù)到服務(wù)器關(guān)閉為止。2/4/202331JavaWeb開(kāi)發(fā)技術(shù)6.3.1與范圍有關(guān)的隱含對(duì)象(續(xù))本小結(jié)舉例見(jiàn)課本exa6_8,程序運(yùn)行結(jié)果見(jiàn)6-11所示。其中的Bean類(lèi)Person.java與exa6_4完全相同,在頁(yè)面implicit.jsp中分別通過(guò)EL隱含對(duì)象sessionScope和requestScope取出Bean的name屬性值。2/4/202332JavaWeb開(kāi)發(fā)技術(shù)6.3.2與輸入有關(guān)的隱含對(duì)象與輸入有關(guān)的隱含對(duì)象有兩個(gè):param和paramValues。一般在取得用戶(hù)的請(qǐng)求參數(shù)時(shí),可以在JSP腳本中利用下列方法:request.getParameter()或request.getParameterValues()。而在EL中就可以分別使用等價(jià)的${}或${paramV}來(lái)取得數(shù)據(jù)。2/4/202333JavaWeb開(kāi)發(fā)技術(shù)6.3.2與輸入有關(guān)的隱含對(duì)象(續(xù))課本例exa6_9.html和exa6_9.jsp分別演示了EL隱含對(duì)象param和paramValues的用法。其中,exa6_9.html將關(guān)于用戶(hù)信息的表單提交給exa6_9.jsp,exa6_9.jsp顯示輸出接收到的信息。程序運(yùn)行結(jié)果見(jiàn)圖6-12所示。2/4/202334JavaWeb開(kāi)發(fā)技術(shù)6.3.3其他隱含對(duì)象介紹五個(gè)隱含對(duì)象:cookie、header、headerValues、initParam、pageContext。(1)cookie是一個(gè)小小的文本文件,它是以key、value的方式將SessionTracking的內(nèi)容記錄在這個(gè)文本文件內(nèi),這個(gè)文本文件通常存在于瀏覽器的暫存區(qū)內(nèi)。假若我們?cè)赾ookie中設(shè)定一個(gè)名稱(chēng)為userID的值,那么可以使用${cookie.userID}來(lái)取得它。2/4/202335JavaWeb開(kāi)發(fā)技術(shù)6.3.3其他隱含對(duì)象(續(xù))(2)header和headerValuesheader儲(chǔ)存用戶(hù)瀏覽器和服務(wù)端用來(lái)溝通的數(shù)據(jù),當(dāng)用戶(hù)請(qǐng)求服務(wù)器的網(wǎng)頁(yè)時(shí),會(huì)送出一個(gè)記載要求信息的頭文件。另外在很少機(jī)會(huì)下,有可能同一頭名稱(chēng)擁有不同的值,此時(shí)必須使用headerValues來(lái)取得這些值。2/4/202336JavaWeb開(kāi)發(fā)技術(shù)6.3.3其他隱含對(duì)象(續(xù))(3)initParam可以自行設(shè)定web服務(wù)器的環(huán)境參數(shù)(Context),當(dāng)想取得這些參數(shù)時(shí),可以使用initParam隱含對(duì)象,例如:當(dāng)在web.xml中設(shè)定如下:<context-param><param-name>userid</param-name><param-value>mike</param-value></context-param>直接使用${initParam.userid}來(lái)取得名稱(chēng)為userid。2/4/202337JavaWeb開(kāi)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 白葉2025版離婚協(xié)議中子女教育費(fèi)用支付合同二零二五年度2篇
- 2025年牛津書(shū)皮紙行業(yè)深度研究分析報(bào)告
- 2025年度某金融公司信貸業(yè)務(wù)合作協(xié)議4篇
- 二零二五版13年個(gè)人住房出租協(xié)議租賃無(wú)憂(yōu)2篇
- 2025年度大運(yùn)河物流用人單位勞動(dòng)合同模板修訂增補(bǔ)版4篇
- 二零二五年度停車(chē)場(chǎng)智能收費(fèi)系統(tǒng)建設(shè)合同范本4篇
- 2025年度砼勞務(wù)分包工程結(jié)算審計(jì)合同范本
- 二零二五版班組施工退場(chǎng)安全管理合同3篇
- 2025年中國(guó)乘用車(chē)市場(chǎng)競(jìng)爭(zhēng)格局及發(fā)展戰(zhàn)略研究咨詢(xún)報(bào)告
- 2025年耐高溫硅酮樹(shù)脂項(xiàng)目投資可行性研究分析報(bào)告
- 高考語(yǔ)文復(fù)習(xí)【知識(shí)精研】《千里江山圖》高考真題說(shuō)題課件
- 河北省承德市2023-2024學(xué)年高一上學(xué)期期末物理試卷(含答案)
- 高中物理斜面模型大全(80個(gè))
- 012主要研究者(PI)職責(zé)藥物臨床試驗(yàn)機(jī)構(gòu)GCP SOP
- 農(nóng)耕研學(xué)活動(dòng)方案種小麥
- 2024年佛山市勞動(dòng)合同條例
- 污水管網(wǎng)規(guī)劃建設(shè)方案
- 城鎮(zhèn)智慧排水系統(tǒng)技術(shù)標(biāo)準(zhǔn)
- 采購(gòu)管理制度及流程采購(gòu)管理制度及流程
- 五年級(jí)美術(shù)下冊(cè)第9課《寫(xiě)意蔬果》-優(yōu)秀課件4人教版
- 節(jié)能降耗課件
評(píng)論
0/150
提交評(píng)論