Java Web應(yīng)用開發(fā) 課件 第7章 EL表達(dá)式和JSTL_第1頁
Java Web應(yīng)用開發(fā) 課件 第7章 EL表達(dá)式和JSTL_第2頁
Java Web應(yīng)用開發(fā) 課件 第7章 EL表達(dá)式和JSTL_第3頁
Java Web應(yīng)用開發(fā) 課件 第7章 EL表達(dá)式和JSTL_第4頁
Java Web應(yīng)用開發(fā) 課件 第7章 EL表達(dá)式和JSTL_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第7章EL表達(dá)式和JSTL0207知識(shí)目標(biāo)

了解什么是EL表達(dá)式和JSTL標(biāo)簽庫

掌握EL中常見的隱式對(duì)象

熟悉EL中的運(yùn)算符

熟悉JSTL標(biāo)簽庫思政目標(biāo)

課程突出培育求真務(wù)實(shí)、實(shí)踐創(chuàng)新、精益求精的工匠精神

培養(yǎng)學(xué)生嚴(yán)謹(jǐn)求實(shí)、吃苦耐勞、追求卓越等優(yōu)秀品質(zhì)

樹立心系社會(huì)并有時(shí)代擔(dān)當(dāng)?shù)木褡非蟆?.1EL表達(dá)式7.1.1認(rèn)識(shí)ELEL是JSP2.0增加的技術(shù)規(guī)范,其全稱是表達(dá)式語言(ExpressionLanguage)。EL語言的靈感來自于ECMAScript和XPath表達(dá)式語言。EL表達(dá)式語言是一種簡(jiǎn)單的語言,使用EL表達(dá)式,JSP頁面可以不再使用任何的JSP聲明、腳本和表達(dá)式,就可以輕松地訪問應(yīng)用程序的數(shù)據(jù)。EL表達(dá)式提供了在JSP中簡(jiǎn)化表達(dá)式的方法,目的是為了盡量減少JSP頁面中的Java代碼,使得JSP頁面的處理程序編寫起來更加簡(jiǎn)潔,便于開發(fā)和維護(hù)。EL表達(dá)式的語法非常簡(jiǎn)單,都是以“${”開始,以“}”結(jié)束的,具體格式如下:${表達(dá)式}注意:其中,EL表達(dá)式寫在JSP頁面中,表達(dá)式一般是域?qū)ο蟮膋ey。表達(dá)式必須符合EL語法要求。EL表達(dá)式代替JSP頁面中表達(dá)式腳本進(jìn)行數(shù)據(jù)的輸出(只能獲取數(shù)據(jù),不能設(shè)置數(shù)據(jù))。EL表達(dá)式主要是輸出域?qū)ο笾械臄?shù)據(jù),當(dāng)四個(gè)域?qū)ο蠖加型粋€(gè)key的值時(shí),EL表達(dá)式會(huì)按照四個(gè)域?qū)ο蟮姆秶鷱男〉酱筮M(jìn)行搜索,找到就輸出,與四個(gè)域?qū)ο舐暶鞯南群箜樞驘o關(guān)。關(guān)于EL語法的相關(guān)內(nèi)容會(huì)在下面的小節(jié)進(jìn)行介紹。7.1EL表達(dá)式7.1.1認(rèn)識(shí)EL使用JSP的標(biāo)準(zhǔn)動(dòng)作可以簡(jiǎn)化JSP頁面的開發(fā),在操作JavaBean時(shí),當(dāng)JavaBean的屬性屬于簡(jiǎn)單的、基本的數(shù)據(jù)類型,如String類型時(shí),能夠?qū)崿F(xiàn)類型的自動(dòng)轉(zhuǎn)換。如果JavaBean的屬性類型不也是基本類型,而是Object類型,該怎么訪問?現(xiàn)有如下案例:有一個(gè)學(xué)校類School.java,類中有老師teacher、學(xué)生student兩個(gè)屬性,而這兩個(gè)屬性分別是Teacher.java類和Student.java類對(duì)應(yīng)的實(shí)例。部分代碼如下所示。7.1.1認(rèn)識(shí)ELPublicclassSchool{privateTeacherteacher;privateStudentstudent;//getterandsetter方法……}7.1.1認(rèn)識(shí)EL學(xué)校類School.java部分代碼學(xué)生類Student.java部分代碼PublicclassStudent{privateStringname;privateStringparentName;privateintage;//getterandsetter方法……}<%Schoolschool=(School)request.getAttribute("school");Studentstudent=(Student)school.getstudent();StringparentName=student.getparentName();%>7.1.1認(rèn)識(shí)EL如果想要獲取School類型的屬性student的parentName屬性值,及獲取學(xué)校里學(xué)生的家長(zhǎng)姓名,只能在JSP頁面中加入Java腳本來實(shí)現(xiàn),關(guān)鍵代碼如下所示。如果在學(xué)習(xí)了EL表達(dá)式后再來處理同樣類型的問題,可以直接使用下面這行的代碼來實(shí)現(xiàn)。${School.student.parentName}7.1.1認(rèn)識(shí)EL在EL表達(dá)式?jīng)]有出現(xiàn)之前,開發(fā)JSP程序經(jīng)常需要將大量的Java代碼嵌入到JSP頁面中,整體JSP頁面看上去會(huì)異常凌亂,不易維護(hù)。使用EL表達(dá)式會(huì)使頁面變得更加簡(jiǎn)潔。在EL中提供了多種運(yùn)算符,根據(jù)運(yùn)算方式不同,EL中的運(yùn)算符包括以下幾種。1、點(diǎn)運(yùn)算符(.)該運(yùn)算符用于訪問JSP頁面中對(duì)象的屬性,如JavaBean對(duì)象、List集合、Array數(shù)組等,其語法格式如下。${}上述語法格式中,表達(dá)式${}是訪問user對(duì)象中的name屬性。7.1.2EL中的運(yùn)算符2、方括號(hào)運(yùn)算符([])該運(yùn)算符用于訪問JSP頁面中對(duì)象的屬性,與點(diǎn)運(yùn)算符的功能相同。但當(dāng)獲取的屬性名中包含特殊符號(hào)(非字母或數(shù)字),只能使用方括號(hào)運(yùn)算符來訪問,其語法格式如下。${user[“name”]}7.1.2EL中的運(yùn)算符3、算術(shù)運(yùn)算符該運(yùn)算符用于對(duì)整數(shù)和浮點(diǎn)數(shù)的值進(jìn)行算術(shù)運(yùn)算。如表7-1所示。表7-1算術(shù)運(yùn)算符7.1.2EL中的運(yùn)算符算是運(yùn)算符說明舉例結(jié)果+加${11+12}23-減${15-5}10*乘${2*5}10/或div除${10/2}或${10div2}5%或mod取模(取余)${10%2}或${10mod2}0注意:使用算術(shù)運(yùn)算符時(shí),“-”既可以作為減號(hào)也可以作為負(fù)號(hào);“/”或“div”在進(jìn)行除法運(yùn)算時(shí),商為小數(shù)。4、比較運(yùn)算符該運(yùn)算符用于比較兩個(gè)數(shù)的大小。這個(gè)數(shù)可以是常量、EL變量或表達(dá)式,所有的運(yùn)算符執(zhí)行結(jié)果都是布爾類型。如表7-2所示。7.1.2EL中的運(yùn)算符表7-2比較運(yùn)算符7.1.2EL中的運(yùn)算符比較運(yùn)算符說明舉例結(jié)果==或eq等于${2==3}或${2eq3}false!=或ne不等于${2!=3}或${2ne3}false<或lt小于${2<3}或${2lt3}true>或gt大于${2>3}或${2gt3}false<=或le小于等于${2<=3}或${2le3}false>=

或ge大于等于${2>=3}或${2ge3}false5、邏輯運(yùn)算符該運(yùn)算符用于對(duì)結(jié)果為布爾類型的表達(dá)式進(jìn)行運(yùn)算。如表7-3所示。表7-3邏輯運(yùn)算符7.1.2EL中的運(yùn)算符邏輯運(yùn)算符說明舉例結(jié)果&&或and與${true&&false}或${trueandfalse}false||或or或${false||true}或${falseortrue}true!或not非${!true}或${nottrue}false6、empty運(yùn)算符該運(yùn)算符用于判斷某個(gè)對(duì)象是否為空,若為空,輸出true,不為空,輸出false。其基本語法格式如下。${emptyabc}以下三種種情況為空(在原本的key之前加empty關(guān)鍵字):(1)值為null、空串(2)值為Object類型的數(shù)組且長(zhǎng)度為0(注:其他類型的長(zhǎng)度為0的數(shù)組值為非空(3)List、Map集合元素個(gè)數(shù)為07.1.2EL中的運(yùn)算符7、條件運(yùn)算符該運(yùn)算符用于執(zhí)行某種條件判斷。其語法格式如下。${A?B:C}

8、“()”運(yùn)算符EL表達(dá)式中的運(yùn)算符都有不同的運(yùn)算優(yōu)先級(jí),如表7-4所示。7.1.2EL中的運(yùn)算符表7-4運(yùn)算符的優(yōu)先級(jí)7.1.2EL中的運(yùn)算符優(yōu)先級(jí)運(yùn)算符1[]2()3-(unary)not!empty4/div%mod5+-(binary)6<><=>=ltgtlege7==!=eqne8&&and9||or10?:EL表達(dá)式中的11個(gè)隱含對(duì)象是EL表達(dá)式自己定義的,可以直接使用。如表7-5所示。7.1.3EL隱式對(duì)象名稱作用pageContext可以獲取JSP中的九大內(nèi)置對(duì)象pageScope可以獲取pageContect域中的數(shù)據(jù)requestScope可以獲取request域中的數(shù)據(jù)sessionScope可以獲取session域中的數(shù)據(jù)applicationScope可以獲取servletContect域中的數(shù)據(jù)Param可以獲取請(qǐng)求參數(shù)的值paramValues可以獲取請(qǐng)求參數(shù)的值(多個(gè))Header可以獲取請(qǐng)求頭的信息HeaderValues可以獲取請(qǐng)求頭的信息(多個(gè))Cookie可以獲取當(dāng)前請(qǐng)求的Cookie信息initParam可以獲取在web.xml中配置的<context-param>參數(shù)【例7-1】pageContext隱式對(duì)象應(yīng)用,獲取response對(duì)象中的characterEncoding屬性。創(chuàng)建7-1.jsp文件,具體代碼如下所示。7.1.3EL隱式對(duì)象

<body>

請(qǐng)求URL為:${pageContext.request.requestURI}<br>Content-Type響應(yīng)頭:${pageContext.response.contentType}<br>

服務(wù)器信息:${pageContext.servletContext.serverInfo}<br>Serlet注冊(cè)名:${pageContext.servletConfig.servletName}<br></body>【例7-1】運(yùn)行結(jié)果如圖7-1所示。7.1.3EL隱式對(duì)象圖7-1【例7-1】運(yùn)行結(jié)果在EL表達(dá)式中,為了獲取指定域中的數(shù)據(jù),提供了4個(gè)隱式對(duì)象,它們分別為pageScope、requestScope、sessionScope、applicationScope。注意:EL表達(dá)式只能在這4個(gè)作用域中獲取數(shù)據(jù)?!纠?-2】演示這4個(gè)隱式對(duì)象如何訪問JSP域?qū)ο笾械膶傩?。?chuàng)建7-2.jsp文件,具體代碼如下。7.1.3EL隱式對(duì)象<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%><html><body><%pageContext.setAttribute("userName","top1");%><%request.setAttribute("bookName","JavaWeb");%><%session.setAttribute("userName","top2");%>7.1.3EL隱式對(duì)象<%application.setAttribute("bookName","Java基礎(chǔ)");%>

表達(dá)式\${pageScope.userName}的值為:${pageScope.userName}<br>

表達(dá)式\${requestScope.bookName}的值為:${requestScope.bookName}<br>

表達(dá)式\${sessionScope.userName}的值為:${sessionScope.userName}<br>

表達(dá)式\${applicationScope.bookName}的值為:${applicationScope.bookName}<br><br/>

表達(dá)式\${userName}的值為:${userName}</body></html>【例7-2】運(yùn)行結(jié)果如圖7-2所示。7.1.3EL隱式對(duì)象圖7-2【例7-2】運(yùn)行結(jié)果7.2.1JSTL介紹7.2JSTLJSTL(JavaServerPagesStandardTagLibrary,JSP標(biāo)準(zhǔn)標(biāo)簽庫)是一個(gè)JSP標(biāo)簽集合,它封裝了JSP應(yīng)用的通用核心功能。JSTL支持通用的、結(jié)構(gòu)化的任務(wù),比如迭代,條件判斷,XML文檔操作,國(guó)際化標(biāo)簽,SQL標(biāo)簽。除了這些,它還提供了一個(gè)框架來使用集成JSTL的自定義標(biāo)簽。這個(gè)標(biāo)簽庫是由5個(gè)功能不同的標(biāo)簽庫組成。如表7-6所示。7.2.1JSTL介紹表7-6JSTL包含的標(biāo)簽庫標(biāo)簽庫前綴CorecI18NfmtSQLsqlXMLxFunctionfn7.2.1JSTL介紹Core是核心標(biāo)簽庫,包含了實(shí)現(xiàn)Web語言中通用操作的標(biāo)簽。I18N是國(guó)際化/格式化標(biāo)簽庫,包含實(shí)現(xiàn)Web應(yīng)用程序的國(guó)際化標(biāo)簽和格式化標(biāo)簽。SQL是數(shù)據(jù)庫標(biāo)簽庫,包含了用于訪問數(shù)據(jù)庫和對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行相關(guān)操作的標(biāo)簽。XML是操作XML文檔的標(biāo)簽庫,包含對(duì)XML文檔中的數(shù)據(jù)進(jìn)行操作的標(biāo)簽。Function是函數(shù)標(biāo)簽庫,提供了一套自定義EL函數(shù),包含了JSP網(wǎng)頁制作經(jīng)常要用到的字符串操作。7.2.2JSTL的下載和簡(jiǎn)單測(cè)試要使用JSTL,首先要先下載好jar包,可以訪問“/dist/jakarta/taglibs/standard/binaries/”網(wǎng)址,找到JSTL的安裝包jakarta-taglibs-standard-1.1.2.zip并下載解壓文件,然后可以看到lib文件夾下兩個(gè)JAR文件(jstl.jar和standard.jar)。將這兩個(gè)文件復(fù)制到對(duì)應(yīng)項(xiàng)目的lib目錄下即可。我們可以進(jìn)行測(cè)試,【例7-3】檢測(cè)JSP文件是否可以使用JSTL標(biāo)簽庫。在測(cè)試中使用的是<c:out>標(biāo)簽,需要用taglib指令導(dǎo)入Core標(biāo)簽庫。編寫一個(gè)簡(jiǎn)單的test.jsp頁面,具體代碼如下。7.2.2JSTL的下載和簡(jiǎn)單測(cè)試<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%><%@tagliburi="/jsp/jst1/core"prefix="c"%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><body><c:outvalue="HelloWorld!"></c:out></body></html>7.2.2JSTL的下載和簡(jiǎn)單測(cè)試【例7-3】運(yùn)行結(jié)果如圖7-3所示。圖7-3【例7-3】運(yùn)行結(jié)果

通過前面的講解可以知道JSTL包含5個(gè)標(biāo)簽庫,具體標(biāo)簽庫中通用標(biāo)簽不在此進(jìn)行詳細(xì)介紹,感興趣的讀者可自行翻閱相關(guān)資源學(xué)習(xí)。7.3小結(jié)本章主要講解了EL表達(dá)式的概念、語法、運(yùn)算符及隱式對(duì)象和JSTL的概念、下載和基本用法。通過本章的學(xué)習(xí),讀者能夠了解什么是EL表達(dá)式和JSTL,可以熟練掌握EL表達(dá)式的基本語法的格式、EL中常見的隱式對(duì)象以及JSTL的基礎(chǔ)用法等操作。7.4習(xí)題1、下列說法正確的是()A.EL表達(dá)式查找對(duì)象的范圍依次是request,pageContext,session,application。B.使用EL表達(dá)式輸出對(duì)象的屬性值時(shí),如果屬性值為空,則輸出空白。C.如果指定了對(duì)象的查找范圍,那么如果在該范圍內(nèi)沒有找到綁定的對(duì)象則不會(huì)再去其他范圍進(jìn)行查找了。D.使用EL表達(dá)式輸出Bean屬性時(shí),不允許使用下標(biāo)的形式。7.4習(xí)題2、在編輯時(shí)禁用EL表達(dá)式的方式是()A.使用<%%>B.使用/**/C.使用\D.使用<!---->7.4習(xí)題3、關(guān)于EL表達(dá)式語言,下列說法錯(cuò)誤的是()A.EL表達(dá)式中的變量要預(yù)先定義才能使用B.它的基本形式為${var}C.只有在JSP文件中才能使用EL語言,在Servlet類的程序代碼中通常不使用它D.它能使JSP文件的代碼更加簡(jiǎn)潔7.4習(xí)題4、下面選項(xiàng)中,與request.getAttribute("p");等效的EL表達(dá)式是()${request.p}B.${param.p}C.${requestScope.p}D.${paramValues.p}7.4習(xí)題5、下面關(guān)于${(1==2)?3:4}的返回結(jié)果是()A.trueB.falseC.3D.47.5上機(jī)實(shí)踐<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%>

<html><body><%//1、值為null值時(shí)request.setAttribute("emptyNull",null);//2、值為空串時(shí)request.setAttribute("emptyStr","");//3、值是Object類型數(shù)組,長(zhǎng)度為零的時(shí)候request.setAttribute("emptyArr",newObje

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論