




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
JavaWeb開發(fā)技術
第6章簡單的表達式2/4/20231第六章簡單的表達式6.1表達式語言簡介6.2表達式語言語法6.3EL中的隱含對象6.4小結(jié)2/4/20232JavaWeb開發(fā)技術6.1表達式語言簡介6.1.1EL用于靜態(tài)文本6.1.2EL用于動態(tài)文本2/4/20233JavaWeb開發(fā)技術6.1表達式語言簡介表達式語言(EL)是由Java社區(qū)組織(JCP,JavaCommunityProcess)的JSP標準標簽庫專家組和JSP2.0專家組共同開發(fā)。可以用于JSP頁面中的HTML標記,也可以用于JSP的特有標記。只要是支持Servlet2.4/JSP2.0的Web容器,都可以在JSP網(wǎng)頁中直接使用EL。2/4/20234JavaWeb開發(fā)技術6.1表達式語言簡介EL語法結(jié)構(gòu):
${ELexpression}所有EL都是以${為起始、以}為結(jié)尾,ELexpression為指定表達式。如:${sessionScope.user.sex},意思是:從Session范圍中取得用戶性別。EL的語法比傳統(tǒng)JSP腳本更為方便、簡潔。2/4/20235JavaWeb開發(fā)技術6.1.1EL用于靜態(tài)文本在課本例exa6_1.jsp中靜態(tài)文本<H2>中包含一個EL表達式${12.5e4},exa6_1.jsp:<html><body><h2>商品價格是${12.5E4}.</h2>Thevalueof2plus5is:<h1>${2+5}</h1></body><html>例exa6_1.jsp運行結(jié)果見課本圖6-2所示2/4/20236JavaWeb開發(fā)技術6.1.1EL用于靜態(tài)文本(續(xù))例exa6_2.jsp演示在<table>標記中使用EL表達式,運行結(jié)果見圖6-3所示。例exa6_2.jsp中注意兩點:
<%@pageisELIgnored=“false”%>,如果該屬性設為“true”,JSP容器將忽略表達式的計算,這與Tomcat版本有關。2/4/20237JavaWeb開發(fā)技術2.${'${'}},如果在EL表達式中出現(xiàn)${'${'},則EL表達式輸出“${”,并把“}”后面的表達式看成字符串輸出。6.1.1EL用于靜態(tài)文本(續(xù))2/4/20238JavaWeb開發(fā)技術6.1.1EL用于靜態(tài)文本(續(xù))禁用EL表達式的問題:“${”和“}”成為EL表達式專用符號。但有時可能不需要它們作為EL表達式專用符號,而是作為一般符號。這時需要使用<%@pageisELIgnored=“true”%>禁用EL表達式。2/4/20239JavaWeb開發(fā)技術6.1.1EL用于靜態(tài)文本(續(xù))isELIgnored屬性的默認值隨著Web服務器的不同版本而不同,本書用的Tomcat5.0.28默認為“false”。課本例exa6_3.jsp中isELIgnored屬性為“false”或設為默認值的運行結(jié)果見課本圖6-5所示,禁用的運行結(jié)果見課本圖6-6所示。2/4/202310JavaWeb開發(fā)技術6.1.1EL用于靜態(tài)文本(續(xù))exa6_3.jsp關鍵代碼: <%@pageisELIgnored="false"%><h1>啟用/禁用表達式語言</h1><formmethod="post"action="expressionexample.jsp"><b>${'名字:'}<inputtype="text"value="${'請輸入您的名字'}"/></b><br/><b>${'姓氏:'}<inputtype="text"value="${'請輸入您的姓氏'}"/></b><br/><inputtype="submit"name="Submit"value="${'提交表單'}"><inputtype="reset"value="${'重置表單'}">
</form>2/4/202311JavaWeb開發(fā)技術6.1.2EL用于動態(tài)文本動態(tài)文本簡介:EL表達式可以用作標準標記和用戶自定義標記的屬性值,幫助顯示頁面上的動態(tài)內(nèi)容,也可以和一些標記,如<jsp:useBean>、<jsp:include>、<jsp:forward>等結(jié)合使用2/4/202312JavaWeb開發(fā)技術6.1.2EL用于動態(tài)文本(續(xù))課本例exa6_4.jsp中使用<jsp:useBean>標準動作創(chuàng)建一個JavaBean,然后使用EL表達式讀出Bean的屬性值。運行結(jié)果見課本圖6-7所示。2/4/202313JavaWeb開發(fā)技術6.2表達式語言語法6.2.1.與[]運算符6.2.2EL中的變量6.2.3EL中的符號常量6.2.4EL中的保留字6.2.5EL中的運算符6.2.6EL中的函數(shù)2/4/202314JavaWeb開發(fā)技術6.2.1.與[]運算符
EL提供
.和[]兩種運算符來存取數(shù)據(jù)。以下兩種情況兩者會有差異:(1)當要存取的屬性名稱中包含一些特殊字符,如.或—等,就一定要使用[]。(2)需要動態(tài)取值時,要用[],因為.無法做到動態(tài)取值。2/4/202315JavaWeb開發(fā)技術6.2.1.與[]運算符(續(xù))[]運算符的意義:假設有一個EL:${A[B]}(1)當A的值為null時,它會回傳null。(2)當B的值為null時,它會回傳null。(3)當A的值為Map類型時,若!A.containsKey(B)為真,則回傳null;否則回傳A.get(B)。2/4/202316JavaWeb開發(fā)技術6.2.1.與[]運算符(續(xù))(4)當A的值為List或Array類型時,將B的值強制轉(zhuǎn)型為int類型,假若不能轉(zhuǎn)換則會產(chǎn)生error;假若能轉(zhuǎn)為int類型,但出現(xiàn)ArrayIndexOutOfBoundsException或IndexOutOfBoundsException時,則回傳null;(5)當A的值為JavaBean對象時,將B的值強制轉(zhuǎn)型為String類型,若沒有異常產(chǎn)生,則回傳A.getB()的結(jié)果。2/4/202317JavaWeb開發(fā)技術6.2.2EL中的變量EL存取變量數(shù)據(jù)的方法:沒有指定范圍的JSP容器會先從page范圍找。假如找不到,再依序到request、session、application范圍。直接指定要取出哪一個范圍的變量.
從不同范圍取變量值舉例見課本表6-1
。2/4/202318JavaWeb開發(fā)技術6.2.3EL中的符號常量表達式語言中可以使用符號常量,它類似于Java中final說明的常量。使用符號常量的目的就是減少代碼維護代價。
EL表達式定義的符號常量見表6-2所示。2/4/202319JavaWeb開發(fā)技術6.2.3EL中的符號常量(續(xù))在課本例exa6_5.jsp中color、size、textclr、foregr為符號常量,并被賦值。使用JSP的pageContext隱含對象將它們存為頁面的屬性,并使用EL表達式的隱含對象pageScope將它們傳給標記的屬性,運行結(jié)果見圖6-8所示。2/4/202320JavaWeb開發(fā)技術6.2.4EL中的保留字與其它編程語言一樣,EL也有保留字。不得使用保留字作為標識符編寫EL表達式,以免程序編譯時發(fā)生錯誤。EL表達式的保留字如下表所示。2/4/202321JavaWeb開發(fā)技術6.2.4EL中的保留字(續(xù))保留字說明保留字說明保留字說明保留字說明保留字說明and與gt大于eq等于TRUE真empty空or或ne不等le小于等于FALSE假div除法not非lt小于ge大于等于null空值mod取模2/4/202322JavaWeb開發(fā)技術6.2.5EL中的運算符運算符用于執(zhí)行各種運算,如算術運算、關系運算、邏輯運算等。EL表達式支持多種運算符,表達式是按照運算符的優(yōu)先級來完成。下頁表中按照優(yōu)先級從高到低的順序從上到下、從左到右列出了EL中各種運算符。運算符示例見書中表6-5。課本例exa6_6.jsp演示了各種運算符,結(jié)果見圖6-9所示。2/4/202323JavaWeb開發(fā)技術6.2.5EL中的運算符(續(xù))運算符說明
運算符說明
運算符說明!或not布爾取反+,-加法,減法==或eq等于empty檢查空值<或lt小于!=或ne不等*乘法>或gt大于&&或and邏輯與/或div除法<=或le小于等于||或or邏輯或%或mod取模>=或ge大于等于num1?num2:num3條件運算2/4/202324JavaWeb開發(fā)技術6.2.6EL中的函數(shù)
EL表達式允許定義和使用函數(shù)。定義和使用函數(shù)方法同用戶自定義標記,主要經(jīng)過以下步驟:(1)編寫一個類,其中的方法必須為靜態(tài)(2)類中所有方法應該在標記庫描述文件中說明(3)將標記庫描述文件在web.xml中加以說明(4)在頁面中加以使用2/4/202325JavaWeb開發(fā)技術6.2.6EL中的函數(shù)(續(xù))舉例說明:寫一個類Function.java,它的方法必須是靜態(tài)的,代碼見課本exa6_7。其中定義的兩個靜態(tài)方法需要在functions.tld中加以說明。需要在web.xml中描述functions.tld。在JSP頁面function.jsp中使用這兩個函數(shù)
。2/4/202326JavaWeb開發(fā)技術6.3EL中的隱含對象6.3.1與范圍有關的隱含對象6.3.2與輸入有關的隱含對象6.3.3其他隱含對象2/4/202327JavaWeb開發(fā)技術6.3EL中的隱含對象(續(xù))EL隱含對象總共有11個,在JSP腳本和EL表達式中可用,這11個隱含對象分成三類:1.與范圍有關的隱含對象:applicationScope、sessionScope、requestScope、pageScope2.與輸入有關的隱含對象:paramparamValues3.其他隱含對象:cookie、header、headerValues、initParam、pageContext2/4/202328JavaWeb開發(fā)技術6.3EL中的隱含對象(續(xù))隱含對象類型說明PageContextjavax.servlet.ServletContext表示此JSP頁面上下文PageScopejava.util.Map取得Page范圍的屬性名稱所對應的值RequestScopejava.util.Map取得Request范圍的屬性名稱所對應值sessionScopejava.util.Map取得Session范圍的屬性名稱所對應的值applicationScopejava.util.Map取得Application范圍的屬性名稱所的值paramjava.util.Map如同ServletRequest.getParameter(String
name)回傳String類型的值paramValuesjava.util.Map如同ServletRequest.getParameterValues(Stringname)。回傳String[]類型的值headerjava.util.Map如同ServletRequest.getHeader(Stringname)回傳String類型的值headerValuesjava.util.Map如同ServletRequest.getHeaders(Stringname)。回傳String[]類型的值cookiejava.util.Map如同HttpServletRequest.getCookies()initParamjava.util.Map如同ServletContext.getInitParameter(Stringname)。回傳String類型的值2/4/202329JavaWeb開發(fā)技術6.3.1與范圍有關的隱含對象范圍有關的EL隱含對象包含以下四個:pageScope、requestScope、sessionScope
和applicationScope
它們的使用和JSP的pageContext、request、session和application基本一樣。但是這四個隱含對象只能用來取得范圍屬性值,卻不能取得其他相關信息。2/4/202330JavaWeb開發(fā)技術6.3.1與范圍有關的隱含對象(續(xù))四個隱含對象的說明:pageScope范圍和JSP的page相同,即當前頁。requestScope范圍和JSP的request相同,即從當前頁通過forward或include方式轉(zhuǎn)到的另外JSP網(wǎng)頁。sessionScope范圍和JSP的session相同,就是用戶持續(xù)在服務器連接的時間內(nèi)。applicationScope范圍和JSP的application相同,是從服務器一開始執(zhí)行服務到服務器關閉為止。2/4/202331JavaWeb開發(fā)技術6.3.1與范圍有關的隱含對象(續(xù))本小結(jié)舉例見課本exa6_8,程序運行結(jié)果見6-11所示。其中的Bean類Person.java與exa6_4完全相同,在頁面implicit.jsp中分別通過EL隱含對象sessionScope和requestScope取出Bean的name屬性值。2/4/202332JavaWeb開發(fā)技術6.3.2與輸入有關的隱含對象與輸入有關的隱含對象有兩個:param和paramValues。一般在取得用戶的請求參數(shù)時,可以在JSP腳本中利用下列方法:request.getParameter()或request.getParameterValues()。而在EL中就可以分別使用等價的${}或${paramV}來取得數(shù)據(jù)。2/4/202333JavaWeb開發(fā)技術6.3.2與輸入有關的隱含對象(續(xù))課本例exa6_9.html和exa6_9.jsp分別演示了EL隱含對象param和paramValues的用法。其中,exa6_9.html將關于用戶信息的表單提交給exa6_9.jsp,exa6_9.jsp顯示輸出接收到的信息。程序運行結(jié)果見圖6-12所示。2/4/202334JavaWeb開發(fā)技術6.3.3其他隱含對象介紹五個隱含對象:cookie、header、headerValues、initParam、pageContext。(1)cookie是一個小小的文本文件,它是以key、value的方式將SessionTracking的內(nèi)容記錄在這個文本文件內(nèi),這個文本文件通常存在于瀏覽器的暫存區(qū)內(nèi)。假若我們在cookie中設定一個名稱為userID的值,那么可以使用${cookie.userID}來取得它。2/4/202335JavaWeb開發(fā)技術6.3.3其他隱含對象(續(xù))(2)header和headerValuesheader儲存用戶瀏覽器和服務端用來溝通的數(shù)據(jù),當用戶請求服務器的網(wǎng)頁時,會送出一個記載要求信息的頭文件。另外在很少機會下,有可能同一頭名稱擁有不同的值,此時必須使用headerValues來取得這些值。2/4/202336JavaWeb開發(fā)技術6.3.3其他隱含對象(續(xù))(3)initParam可以自行設定web服務器的環(huán)境參數(shù)(Context),當想取得這些參數(shù)時,可以使用initParam隱含對象,例如:當在web.xml中設定如下:<context-param><param-name>userid</param-name><param-value>mike</param-value></context-param>直接使用${initParam.userid}來取得名稱為userid。2/4/202337JavaWeb開
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 內(nèi)蒙古科技大學《土木工程力學》2023-2024學年第二學期期末試卷
- 四川省德陽市中學江縣市級名校2025年初三下第三次周考綜合試題含解析
- 西藏拉薩片八校2025年高三寒假測試二歷史試題含解析
- 江門職業(yè)技術學院《智能計算系統(tǒng)》2023-2024學年第二學期期末試卷
- 咸寧市嘉魚縣2025年數(shù)學三下期末教學質(zhì)量檢測試題含解析
- 濰坊食品科技職業(yè)學院《朝鮮語會話(Ⅲ)》2023-2024學年第二學期期末試卷
- 煙臺城市科技職業(yè)學院《健康評估技能》2023-2024學年第一學期期末試卷
- 山東水利職業(yè)學院《大學生就業(yè)指導》2023-2024學年第一學期期末試卷
- 遼寧省錦州市2025屆下學期第三次考試英語試題(輔導班)試題含解析
- 二零二五股權轉(zhuǎn)讓協(xié)議之補充協(xié)議
- 《1984》讀書分享課件
- 肺動脈高壓的傳統(tǒng)治療
- 園林植物識別-草本花卉的識別
- 班組長怎樣抓好生產(chǎn)管理
- 【湘少版】(三起)三年級英語下冊(全冊)配套練習
- 裝修施工投標書模板
- 技術創(chuàng)新與專利申請情況匯報
- 《民航概論》全套課件演示課件
- DB34-T 4105-2022 毛竹“一竹三筍”經(jīng)營模式技術規(guī)程
- 公立醫(yī)院內(nèi)控管理制度
- 《夏洛特煩惱》完整版劇本(上)
評論
0/150
提交評論