




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第16章EL與JSTL學(xué)習(xí)目的與要求本章主要介紹了表達(dá)式語言(ExpressionLanguage,簡稱EL)和JSP標(biāo)準(zhǔn)標(biāo)簽庫(JavaServerPagesStandardTagLibrary,簡稱JSTL)的基本用法。通過本章的學(xué)習(xí),掌握EL表達(dá)式語法,掌握EL隱含對象,了解什么是JSTL,掌握J(rèn)STL的核心標(biāo)簽庫?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社目錄16.1表達(dá)式語言EL16.2JSP標(biāo)準(zhǔn)標(biāo)簽庫JST式《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社16.1表達(dá)式語言ELEL是JSP2.0規(guī)范中增加的,它的基本語法為:${表達(dá)式}EL表達(dá)式類似于JSP表達(dá)式<%=表達(dá)式%>,EL語句中的表達(dá)式值會被直接送到瀏覽器顯示。通過page指令的isELIgnored屬性來說明是否支持EL表達(dá)式。isELIgnored屬性值為false時,JSP頁面可以使用EL表達(dá)式;isELIgnored屬性值為true時,JSP頁面不能使用EL表達(dá)式。isELIgnored屬性值默認(rèn)為false。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社16.1.1基本語法EL的語法簡單,使用方便。它以“${”開始,以“}”結(jié)束。1.“[]”與“.”運算符EL使用“[]”和“.”運算符來訪問數(shù)據(jù),主要使用EL獲取對象的屬性,包括獲取JavaBean的屬性值、獲取數(shù)組中的元素以及獲取集合對象中的元素。對于null值直接以空字符串顯示,而不是null,運算時也不會發(fā)生錯誤或空指針異常。所以在使用EL訪問對象的屬性時,不需判斷對象是否為null對象。這樣就為編寫程序提供了方便。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社(1)獲取JavaBean的屬性值假設(shè)在JSP頁面中有這樣一句話:
<%=user.getAge()%>那么,可以使用EL獲取user對象的屬性age,代碼如下:
${user.age}或
${user["age"]}其中,點運算符前面為JavaBean的對象user,后面為該對象的屬性age,表示利用user對象的getAge()方法取值并顯示在網(wǎng)頁上。《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社(2)獲取數(shù)組中的元素假設(shè)在Controller或Servlet中有這樣一段話:Stringdogs[]={"lili","huahua","guoguo"};request.setAttribute("array",dogs);那么,在對應(yīng)視圖JSP中可以使用EL取出數(shù)組中的元素(也可以使用16.2節(jié)的JSTL遍歷數(shù)組),代碼如下:${array[0]}${array[1]}${array[2]}《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社(3)獲取集合對象中的元素假設(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有兩個屬性:name和age,那么在對應(yīng)視圖JSP頁面中可以使用EL取出UserBean中的屬性(也可以使用16.2節(jié)的JSTL遍歷數(shù)組),代碼如下:${array[0].name}${array[0].age}${array[1].name}${array[1].age}《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社16.1.2EL隱含對象EL隱含對象共有11個,在本書中只是介紹幾個常用的EL隱含對象:pageScope、requestScope、sessionScope、applicationScope、param以及paramValues?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社1.與作用范圍相關(guān)的隱含對象與作用范圍有關(guān)的EL隱含對象有:pageScope、requestScope、sessionScope和applicationScope,分別可以獲取JSP隱含對象pageContext、request、session和application中的數(shù)據(jù)。如果在EL中沒有使用隱含對象指定作用范圍,則會依次從page、request、session、application范圍查找,找到就直接返回,不再繼續(xù)找下去,如果所有范圍都沒有找到,就返回空字符串。獲取數(shù)據(jù)的格式如下:${EL隱含對象.關(guān)鍵字對象.屬性}或${EL隱含對象.關(guān)鍵字對象}《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社2.與請求參數(shù)相關(guān)的隱含對象與請求參數(shù)相關(guān)的EL隱含對象有param和paramValues。獲取數(shù)據(jù)的格式如下:${EL隱含對象.參數(shù)名}【例16-1】編寫一個Controller,在該控制器類處理方法中使用request對象和Model對象存儲數(shù)據(jù),然后從處理方法轉(zhuǎn)發(fā)到show.jsp頁面,在show.jsp頁面中顯示request對象的數(shù)據(jù)。首先,運行控制器的處理方法,在IE地址欄中輸入:http://localhost:8080/ch16_1/input《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社目錄16.1表達(dá)式語言EL16.2JSP標(biāo)準(zhǔn)標(biāo)簽庫JSTL式《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社16.2.1配置JSTL1.復(fù)制JSTL的標(biāo)準(zhǔn)實現(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)簽庫,首先需要在JSP頁面中使用taglib標(biāo)記定義前綴與uri引用,代碼如下:<%@taglibprefix="c"uri="/jsp/jstl/core"%>如果使用Functions標(biāo)簽庫,首先需要在JSP頁面中使用taglib標(biāo)記定義前綴與uri引用,代碼如下:<%@taglibprefix="fn"uri="/jsp/jstl/functions"%>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社16.2.2核心標(biāo)簽庫之通用標(biāo)簽1.<c:out>標(biāo)簽<c:out>用來顯示數(shù)據(jù)的內(nèi)容,與<%=表達(dá)式%>或${表達(dá)式}類似。格式如下:<c:outvalue="輸出的內(nèi)容"[default="defaultValue"]/>或<c:outvalue="輸出的內(nèi)容">
defaultValue</c:out>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社16.2.2核心標(biāo)簽庫之通用標(biāo)簽2.<c:set>標(biāo)簽 設(shè)置作用域變量可以使用<c:set>在page、request、session、application等范圍內(nèi)設(shè)置一個變量。格式如下:<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的屬性時,必須使用target屬性進(jìn)行設(shè)置。格式如下:<c:setvalue="value"target="target"property=“propertyName"/>將value賦值給target對象(JaveBean對象)的propertyName屬性。如果target為null或沒有set方法則拋出異常?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社16.2.2核心標(biāo)簽庫之通用標(biāo)簽3.<c:remove>標(biāo)簽如果要刪除某個變量,則可以使用<c:remove>標(biāo)簽。例如:<c:removevar="userName"scope="session"/>相當(dāng)于<%session.removeAttribute("userName")%>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社16.2.3核心標(biāo)簽庫之流程控制標(biāo)簽1.<c:if>標(biāo)簽<c:if>標(biāo)簽實現(xiàn)if語句的作用,具體語法格式如下:
<c:iftest="條件表達(dá)式">
主體內(nèi)容
</c:if>其中,條件表達(dá)式可以是EL表達(dá)式,也可以是JSP表達(dá)式。如果表達(dá)式的值為true,則會執(zhí)行<c:if>的主體內(nèi)容,但是沒有相對應(yīng)的<c:else>標(biāo)簽。如果想在條件成立時執(zhí)行一塊內(nèi)容,不成立時執(zhí)行另一塊內(nèi)容,則可以使用<c:choose>、<c:when>及<c:otherwise>標(biāo)簽?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社2.<c:choose>、<c:when>及<c:otherwise>標(biāo)簽<c:choose>、<c:when>及<c:otherwise>標(biāo)簽實現(xiàn)if/elseif/else語句的作用。具體語法格式如下:<c:choose>
<c:whentest="條件表達(dá)式1">
主體內(nèi)容1
</c:when>
<c:whentest="條件表達(dá)式2">
主體內(nèi)容2
</c:when>
<c:otherwise>
表達(dá)式都不正確時,執(zhí)行的主體內(nèi)容
</c:otherwise></c:choose>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社2.<c:choose>、<c:when>及<c:otherwise>標(biāo)簽【例16-2】在應(yīng)用ch16_1的src/main/webapp根目錄下,編寫一個JSP頁面ifelse.jsp,在該頁面中使用<c:set>標(biāo)簽把兩個字符串設(shè)置為request范圍內(nèi)的變量。使用<c:if>標(biāo)簽求出這兩個字符串的最大值(按字典順序比較大?。?,使用<c:choose>、<c:when>及<c:otherwise>標(biāo)簽求出這兩個字符串的最小值?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社16.2.4核心標(biāo)簽庫之迭代標(biāo)簽1.<c:forEach>標(biāo)簽<c:forEach>標(biāo)簽可以實現(xiàn)程序中的for循環(huán)。語法格式如下:<c:forEachvar="變量名"items="數(shù)組或Collection對象">
循環(huán)體</c:forEach>有些情況下,需要為<c:forEach>標(biāo)簽指定begin、end、step和varStatus屬性。begin為迭代時的開始位置,默認(rèn)值為0;end為迭代時的結(jié)束位置,默認(rèn)值是最后一個元素;step為迭代步長,默認(rèn)值為1;varStatus代表迭代變量的狀態(tài),包括count(迭代的次數(shù))、index(當(dāng)前迭代的索引,第一個索引為0)、first(是否是第一個迭代對象)和last(是否是最后一個迭代對象)?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社2.<c:forTokens>標(biāo)簽<c:forTokens>用于迭代字符串中由分隔符分隔的各成員,它是通過java.util.StringTokenizer實例來完成字符串的分隔,屬性items和delims作為構(gòu)造StringTokenizer實例的參數(shù)。語法格式如下:<c:forTokensvar="變量名"items="要迭代的String對象"delims="指定分隔字符串的分隔符">
循環(huán)體</c:forTokens>例如:<c:forTokensitems="chenheng1:chenheng2:chenheng3"delims=":"var="name">
${name}<br></c:forTokens>《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社16.2.5函數(shù)標(biāo)簽庫在JSP頁面中,調(diào)用JSTL中的函數(shù)時,需要使用EL表達(dá)式,調(diào)用語法格式如下:${fn:函數(shù)名(參數(shù)1,參數(shù)2,…)}1.contains函數(shù)該函數(shù)功能是判斷一個字符串中是否包含指定的子字符串。如果包含,則返回true,否則返回false。其定義如下:contains(string,substring)該函數(shù)調(diào)用示例代碼如下:${fn:contains("Iamstudying","am")}《JavaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社16.2.5函數(shù)標(biāo)簽庫2.containsIgnoreCase函數(shù)該函數(shù)與contains函數(shù)功能相似,但判斷是不區(qū)分大寫的。其定義如下:containsIgnoreCase(string,substring)該函數(shù)調(diào)用示例代碼如下:${fn:containsIgnoreCase("IAMstudying","am")}上述EL表達(dá)式將返回true。3.endsWith函數(shù)該函數(shù)功能是判斷一個字符串是否以指定的后綴結(jié)尾。其定義如下:endsWith(string,suffix)該函數(shù)調(diào)用示例代碼如下:${fn:endsWith("IAMstudying","am")}上述EL表達(dá)式將返回false?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社16.2.5函數(shù)標(biāo)簽庫4.indexOf函數(shù)該函數(shù)功能是返回指定子字符串在某個字符串中第一次出現(xiàn)時的索引,找不到時,將返回-1。其定義如下:indexOf(string,substring)該函數(shù)調(diào)用示例代碼如下:${fn:indexOf("Iamstudying","am")}上述EL表達(dá)式將返回2。5.join函數(shù)該函數(shù)功能是將一個String數(shù)組中的所有元素合并成一個字符串,并用指定的分隔符分開。其定義如下:join(array,separator)例如,假設(shè)一個String數(shù)組my,它有3個元素:“I”、“am”和“studying”,那么,下列EL表達(dá)式:${fn:join(my,",")}將返回“I,am,studying”?!禞avaEE框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社16.2.5函數(shù)標(biāo)簽庫6.length函數(shù)該函數(shù)功能是返回集合中元素的個數(shù),或者字符串中的字符個數(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框架整合開發(fā)入門到實戰(zhàn)》陳恒
主編,清華大學(xué)出版社16.2.5函數(shù)標(biāo)簽庫8.split函數(shù)該函數(shù)功能是將一個字符串,使用指定的分隔符separator分離成一個子字符串?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ù)功能是判斷一個字符串是否以指定的前綴開頭。其定義如下
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合法有效裝修合同范例
- 廚房原材料合同范本
- 農(nóng)村住宅建房合同范本
- 衛(wèi)材購銷合同范本
- 養(yǎng)殖設(shè)備包工合同范本
- 勞務(wù)合同范本100例
- 醫(yī)院后勤設(shè)備采購合同范本
- 學(xué)校供餐服務(wù)合同范本
- 勞務(wù)兼職培訓(xùn)合同范本
- 公司裝修改造合同范本
- 2025年哈爾濱鐵道職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫附答案
- DeepSeek科普學(xué)習(xí)解讀
- 第一單元第2課《生活之美》課件-七年級美術(shù)下冊(人教版)
- 2025年七下道德與法治教材習(xí)題答案
- 危險化學(xué)品目錄(2024版)
- 人教版八年級數(shù)學(xué)第二學(xué)期教學(xué)計劃+教學(xué)進(jìn)度表
- 水工環(huán)地質(zhì)調(diào)查技術(shù)標(biāo)準(zhǔn)手冊
- 基本力學(xué)性能-鋼筋混凝土原理_過鎮(zhèn)海
- 初中音樂-兒行千里母擔(dān)憂-課件PPT課件
- 壓縮空氣氣體管道吹掃、試壓方案
- 畢設(shè)-年產(chǎn)10萬噸甲醇精餾工段設(shè)計
評論
0/150
提交評論