《Java EE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)(第2版)》 課件 第16章 EL與JSTL_第1頁(yè)
《Java EE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)(第2版)》 課件 第16章 EL與JSTL_第2頁(yè)
《Java EE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)(第2版)》 課件 第16章 EL與JSTL_第3頁(yè)
《Java EE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)(第2版)》 課件 第16章 EL與JSTL_第4頁(yè)
《Java EE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)(第2版)》 課件 第16章 EL與JSTL_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第16章EL與JSTL學(xué)習(xí)目的與要求本章主要介紹了表達(dá)式語(yǔ)言(ExpressionLanguage,簡(jiǎn)稱(chēng)EL)和JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù)(JavaServerPagesStandardTagLibrary,簡(jiǎn)稱(chēng)JSTL)的基本用法。通過(guò)本章的學(xué)習(xí),掌握EL表達(dá)式語(yǔ)法,掌握EL隱含對(duì)象,了解什么是JSTL,掌握J(rèn)STL的核心標(biāo)簽庫(kù)。《JavaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社目錄16.1表達(dá)式語(yǔ)言EL16.2JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù)JST式《JavaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社16.1表達(dá)式語(yǔ)言ELEL是JSP2.0規(guī)范中增加的,它的基本語(yǔ)法為:${表達(dá)式}EL表達(dá)式類(lèi)似于JSP表達(dá)式<%=表達(dá)式%>,EL語(yǔ)句中的表達(dá)式值會(huì)被直接送到瀏覽器顯示。通過(guò)page指令的isELIgnored屬性來(lái)說(shuō)明是否支持EL表達(dá)式。isELIgnored屬性值為false時(shí),JSP頁(yè)面可以使用EL表達(dá)式;isELIgnored屬性值為true時(shí),JSP頁(yè)面不能使用EL表達(dá)式。isELIgnored屬性值默認(rèn)為false。《JavaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社16.1.1基本語(yǔ)法EL的語(yǔ)法簡(jiǎn)單,使用方便。它以“${”開(kāi)始,以“}”結(jié)束。1.“[]”與“.”運(yùn)算符EL使用“[]”和“.”運(yùn)算符來(lái)訪問(wèn)數(shù)據(jù),主要使用EL獲取對(duì)象的屬性,包括獲取JavaBean的屬性值、獲取數(shù)組中的元素以及獲取集合對(duì)象中的元素。對(duì)于null值直接以空字符串顯示,而不是null,運(yùn)算時(shí)也不會(huì)發(fā)生錯(cuò)誤或空指針異常。所以在使用EL訪問(wèn)對(duì)象的屬性時(shí),不需判斷對(duì)象是否為null對(duì)象。這樣就為編寫(xiě)程序提供了方便?!禞avaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社(1)獲取JavaBean的屬性值假設(shè)在JSP頁(yè)面中有這樣一句話:

<%=user.getAge()%>那么,可以使用EL獲取user對(duì)象的屬性age,代碼如下:

${user.age}或

${user["age"]}其中,點(diǎn)運(yùn)算符前面為JavaBean的對(duì)象user,后面為該對(duì)象的屬性age,表示利用user對(duì)象的getAge()方法取值并顯示在網(wǎng)頁(yè)上?!禞avaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社(2)獲取數(shù)組中的元素假設(shè)在Controller或Servlet中有這樣一段話:Stringdogs[]={"lili","huahua","guoguo"};request.setAttribute("array",dogs);那么,在對(duì)應(yīng)視圖JSP中可以使用EL取出數(shù)組中的元素(也可以使用16.2節(jié)的JSTL遍歷數(shù)組),代碼如下:${array[0]}${array[1]}${array[2]}《JavaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社(3)獲取集合對(duì)象中的元素假設(shè)在Controller或Servlet中有這樣一段話:ArrayList<UserBean>users=newArrayList<UserBean>();UserBeanub1=newUserBean("zhang",20);UserBeanub2=newUserBean("zhao",50);users.add(ub1);users.add(ub2);request.setAttribute("array",users);其中,UserBean有兩個(gè)屬性:name和age,那么在對(duì)應(yīng)視圖JSP頁(yè)面中可以使用EL取出UserBean中的屬性(也可以使用16.2節(jié)的JSTL遍歷數(shù)組),代碼如下:${array[0].name}${array[0].age}${array[1].name}${array[1].age}《JavaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社16.1.2EL隱含對(duì)象EL隱含對(duì)象共有11個(gè),在本書(shū)中只是介紹幾個(gè)常用的EL隱含對(duì)象:pageScope、requestScope、sessionScope、applicationScope、param以及paramValues。《JavaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社1.與作用范圍相關(guān)的隱含對(duì)象與作用范圍有關(guān)的EL隱含對(duì)象有:pageScope、requestScope、sessionScope和applicationScope,分別可以獲取JSP隱含對(duì)象pageContext、request、session和application中的數(shù)據(jù)。如果在EL中沒(méi)有使用隱含對(duì)象指定作用范圍,則會(huì)依次從page、request、session、application范圍查找,找到就直接返回,不再繼續(xù)找下去,如果所有范圍都沒(méi)有找到,就返回空字符串。獲取數(shù)據(jù)的格式如下:${EL隱含對(duì)象.關(guān)鍵字對(duì)象.屬性}或${EL隱含對(duì)象.關(guān)鍵字對(duì)象}《JavaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社2.與請(qǐng)求參數(shù)相關(guān)的隱含對(duì)象與請(qǐng)求參數(shù)相關(guān)的EL隱含對(duì)象有param和paramValues。獲取數(shù)據(jù)的格式如下:${EL隱含對(duì)象.參數(shù)名}【例16-1】編寫(xiě)一個(gè)Controller,在該控制器類(lèi)處理方法中使用request對(duì)象和Model對(duì)象存儲(chǔ)數(shù)據(jù),然后從處理方法轉(zhuǎn)發(fā)到show.jsp頁(yè)面,在show.jsp頁(yè)面中顯示request對(duì)象的數(shù)據(jù)。首先,運(yùn)行控制器的處理方法,在IE地址欄中輸入:http://localhost:8080/ch16_1/input《JavaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社目錄16.1表達(dá)式語(yǔ)言EL16.2JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù)JSTL式《JavaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社16.2.1配置JSTL1.復(fù)制JSTL的標(biāo)準(zhǔn)實(shí)現(xiàn)在Tomcat的webapps/examples/WEB-INF/lib目錄下,找到“taglibs-standard-impl-x.y.z.jar”和“taglibs-standard-spec-x.y.z.jar”文件,然后復(fù)制到Web工程的WEB-INF/lib目錄下。2.使用taglib標(biāo)記定義前綴與uri引用如果使用Core標(biāo)簽庫(kù),首先需要在JSP頁(yè)面中使用taglib標(biāo)記定義前綴與uri引用,代碼如下:<%@taglibprefix="c"uri="/jsp/jstl/core"%>如果使用Functions標(biāo)簽庫(kù),首先需要在JSP頁(yè)面中使用taglib標(biāo)記定義前綴與uri引用,代碼如下:<%@taglibprefix="fn"uri="/jsp/jstl/functions"%>《JavaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社16.2.2核心標(biāo)簽庫(kù)之通用標(biāo)簽1.<c:out>標(biāo)簽<c:out>用來(lái)顯示數(shù)據(jù)的內(nèi)容,與<%=表達(dá)式%>或${表達(dá)式}類(lèi)似。格式如下:<c:outvalue="輸出的內(nèi)容"[default="defaultValue"]/>或<c:outvalue="輸出的內(nèi)容">

defaultValue</c:out>《JavaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社16.2.2核心標(biāo)簽庫(kù)之通用標(biāo)簽2.<c:set>標(biāo)簽 設(shè)置作用域變量可以使用<c:set>在page、request、session、application等范圍內(nèi)設(shè)置一個(gè)變量。格式如下:<c:setvalue="value"var="varName"[scope="page|request|session|application"]/>將value值賦值給變量varName。例如:<c:setvalue="zhao"var="userName"scope="session"/>相當(dāng)于

<%session.setAttribute("userName","zhao");%>

設(shè)置JavaBean

的屬性使用<c:set>設(shè)置JavaBean的屬性時(shí),必須使用target屬性進(jìn)行設(shè)置。格式如下:<c:setvalue="value"target="target"property=“propertyName"/>將value賦值給target對(duì)象(JaveBean對(duì)象)的propertyName屬性。如果target為null或沒(méi)有set方法則拋出異常?!禞avaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社16.2.2核心標(biāo)簽庫(kù)之通用標(biāo)簽3.<c:remove>標(biāo)簽如果要?jiǎng)h除某個(gè)變量,則可以使用<c:remove>標(biāo)簽。例如:<c:removevar="userName"scope="session"/>相當(dāng)于<%session.removeAttribute("userName")%>《JavaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社16.2.3核心標(biāo)簽庫(kù)之流程控制標(biāo)簽1.<c:if>標(biāo)簽<c:if>標(biāo)簽實(shí)現(xiàn)if語(yǔ)句的作用,具體語(yǔ)法格式如下:

<c:iftest="條件表達(dá)式">

主體內(nèi)容

</c:if>其中,條件表達(dá)式可以是EL表達(dá)式,也可以是JSP表達(dá)式。如果表達(dá)式的值為true,則會(huì)執(zhí)行<c:if>的主體內(nèi)容,但是沒(méi)有相對(duì)應(yīng)的<c:else>標(biāo)簽。如果想在條件成立時(shí)執(zhí)行一塊內(nèi)容,不成立時(shí)執(zhí)行另一塊內(nèi)容,則可以使用<c:choose>、<c:when>及<c:otherwise>標(biāo)簽?!禞avaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社2.<c:choose>、<c:when>及<c:otherwise>標(biāo)簽<c:choose>、<c:when>及<c:otherwise>標(biāo)簽實(shí)現(xiàn)if/elseif/else語(yǔ)句的作用。具體語(yǔ)法格式如下:<c:choose>

<c:whentest="條件表達(dá)式1">

主體內(nèi)容1

</c:when>

<c:whentest="條件表達(dá)式2">

主體內(nèi)容2

</c:when>

<c:otherwise>

表達(dá)式都不正確時(shí),執(zhí)行的主體內(nèi)容

</c:otherwise></c:choose>《JavaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社2.<c:choose>、<c:when>及<c:otherwise>標(biāo)簽【例16-2】在應(yīng)用ch16_1的src/main/webapp根目錄下,編寫(xiě)一個(gè)JSP頁(yè)面ifelse.jsp,在該頁(yè)面中使用<c:set>標(biāo)簽把兩個(gè)字符串設(shè)置為request范圍內(nèi)的變量。使用<c:if>標(biāo)簽求出這兩個(gè)字符串的最大值(按字典順序比較大小),使用<c:choose>、<c:when>及<c:otherwise>標(biāo)簽求出這兩個(gè)字符串的最小值?!禞avaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社16.2.4核心標(biāo)簽庫(kù)之迭代標(biāo)簽1.<c:forEach>標(biāo)簽<c:forEach>標(biāo)簽可以實(shí)現(xiàn)程序中的for循環(huán)。語(yǔ)法格式如下:<c:forEachvar="變量名"items="數(shù)組或Collection對(duì)象">

循環(huán)體</c:forEach>有些情況下,需要為<c:forEach>標(biāo)簽指定begin、end、step和varStatus屬性。begin為迭代時(shí)的開(kāi)始位置,默認(rèn)值為0;end為迭代時(shí)的結(jié)束位置,默認(rèn)值是最后一個(gè)元素;step為迭代步長(zhǎng),默認(rèn)值為1;varStatus代表迭代變量的狀態(tài),包括count(迭代的次數(shù))、index(當(dāng)前迭代的索引,第一個(gè)索引為0)、first(是否是第一個(gè)迭代對(duì)象)和last(是否是最后一個(gè)迭代對(duì)象)?!禞avaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社2.<c:forTokens>標(biāo)簽<c:forTokens>用于迭代字符串中由分隔符分隔的各成員,它是通過(guò)java.util.StringTokenizer實(shí)例來(lái)完成字符串的分隔,屬性items和delims作為構(gòu)造StringTokenizer實(shí)例的參數(shù)。語(yǔ)法格式如下:<c:forTokensvar="變量名"items="要迭代的String對(duì)象"delims="指定分隔字符串的分隔符">

循環(huán)體</c:forTokens>例如:<c:forTokensitems="chenheng1:chenheng2:chenheng3"delims=":"var="name">

${name}<br></c:forTokens>《JavaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社16.2.5函數(shù)標(biāo)簽庫(kù)在JSP頁(yè)面中,調(diào)用JSTL中的函數(shù)時(shí),需要使用EL表達(dá)式,調(diào)用語(yǔ)法格式如下:${fn:函數(shù)名(參數(shù)1,參數(shù)2,…)}1.contains函數(shù)該函數(shù)功能是判斷一個(gè)字符串中是否包含指定的子字符串。如果包含,則返回true,否則返回false。其定義如下:contains(string,substring)該函數(shù)調(diào)用示例代碼如下:${fn:contains("Iamstudying","am")}《JavaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社16.2.5函數(shù)標(biāo)簽庫(kù)2.containsIgnoreCase函數(shù)該函數(shù)與contains函數(shù)功能相似,但判斷是不區(qū)分大寫(xiě)的。其定義如下:containsIgnoreCase(string,substring)該函數(shù)調(diào)用示例代碼如下:${fn:containsIgnoreCase("IAMstudying","am")}上述EL表達(dá)式將返回true。3.endsWith函數(shù)該函數(shù)功能是判斷一個(gè)字符串是否以指定的后綴結(jié)尾。其定義如下:endsWith(string,suffix)該函數(shù)調(diào)用示例代碼如下:${fn:endsWith("IAMstudying","am")}上述EL表達(dá)式將返回false?!禞avaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社16.2.5函數(shù)標(biāo)簽庫(kù)4.indexOf函數(shù)該函數(shù)功能是返回指定子字符串在某個(gè)字符串中第一次出現(xiàn)時(shí)的索引,找不到時(shí),將返回-1。其定義如下:indexOf(string,substring)該函數(shù)調(diào)用示例代碼如下:${fn:indexOf("Iamstudying","am")}上述EL表達(dá)式將返回2。5.join函數(shù)該函數(shù)功能是將一個(gè)String數(shù)組中的所有元素合并成一個(gè)字符串,并用指定的分隔符分開(kāi)。其定義如下:join(array,separator)例如,假設(shè)一個(gè)String數(shù)組my,它有3個(gè)元素:“I”、“am”和“studying”,那么,下列EL表達(dá)式:${fn:join(my,",")}將返回“I,am,studying”。《JavaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社16.2.5函數(shù)標(biāo)簽庫(kù)6.length函數(shù)該函數(shù)功能是返回集合中元素的個(gè)數(shù),或者字符串中的字符個(gè)數(shù)。其定義如下:length(input)該函數(shù)調(diào)用示例代碼如下:${fn:length("aaa")}上述EL表達(dá)式將返回3。7.replace函數(shù)該函數(shù)功能是將字符串中出現(xiàn)的所有beforestring用afterstring替換,并返回替換后的結(jié)果。其定義如下:replace(string,beforestring,afterstring)該函數(shù)調(diào)用示例代碼如下:${fn:replace("Iamamstudying","am","do")}上述EL表達(dá)式將返回“Idodostudying”?!禞avaEE框架整合開(kāi)發(fā)入門(mén)到實(shí)戰(zhàn)》陳恒

主編,清華大學(xué)出版社16.2.5函數(shù)標(biāo)簽庫(kù)8.split函數(shù)該函數(shù)功能是將一個(gè)字符串,使用指定的分隔符separator分離成一個(gè)子字符串?dāng)?shù)組。其定義如下:split(string,separator)該函數(shù)調(diào)用示例代碼如下:<c:setvar="my"value="${fn:split('Iamstudying','')}"/><c:forEachvar="myArrayElement"items="${my}">

${myArrayElement}<br></c:forEach>9.startsWith函數(shù)該函數(shù)功能是判斷一個(gè)字符串是否以指定的前綴開(kāi)頭。其定義如下

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論