版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第9章EL與JSTL學(xué)習(xí)目的與要求本章主要介紹表達式語言(ExpressionLanguage,簡稱EL)和JSP標準標簽庫(Java
Server
Pages
Standard
Tag
Library,簡稱JSTL)的基本用法。通過本章的學(xué)習(xí),掌握EL表達式語法,掌握EL隱含對象,了解什么是JSTL,掌握JSTL的核心標簽庫?!禞avaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
學(xué)習(xí)目的與要求9.1EL簡介9.2EL語法9.3EL運算符9.4EL隱含對象9.5JSP標準標簽庫JSTL《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.1EL簡介EL是JSP2.0規(guī)范中增加的,它的基本語法為:${表達式}EL表達式類似于JSP表達式<%=表達式%>,EL語句中的表達式值會被直接送到瀏覽器顯示。通過page指令的isELIgnored屬性來說明是否支持EL表達式。isELIgnored屬性值為false時,JSP頁面可以使用EL表達式;isELIgnored屬性值為true時,JSP頁面不能使用EL表達式(被當(dāng)成字符串直接輸出)。isELIgnored屬性值默認為false。EL表達式語言最大的優(yōu)勢是可以方便地訪問JSP的內(nèi)置對象和JavaBean組件,完成使用<%%>或<%=%>完成的功能,使JSP頁面從HTML代碼中嵌入Java代碼的混亂結(jié)構(gòu)得以改善,提高了程序的可讀性和易維護性?!禞avaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
學(xué)習(xí)目的與要求9.1EL簡介9.2EL語法9.3EL運算符9.4EL隱含對象9.5JSP標準標簽庫JSTL《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.2.1EL中的常量EL表達式中的常量包括布爾、整型、浮點數(shù)、字符串以及NULL等常量。例如:${true}、${200}、${16.7}、${"hello"}、${null}。《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.2.2EL中的“[]”與“.”操作符EL使用“[]”和“.”操作符來訪問數(shù)據(jù),主要使用EL獲取對象的屬性,包括獲取JavaBean的屬性值、獲取數(shù)組中的元素以及獲取集合對象中的元素。(1)獲取JavaBean的屬性值假設(shè)在JSP頁面中有這樣一句話:
<jsp:getPropertyproperty="age"name="user"/>那么,可以使用EL獲取user的屬性age,代碼如下:
${user.age}或
${user["age"]}其中,點運算符前面為JavaBean對象user,后面為該對象的屬性age,表示利用user對象的getAge()方法取值并顯示在網(wǎng)頁上?!禞avaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.2.2EL中的“[]”與“.”操作符(2)獲取數(shù)組中的元素假設(shè)在JSP頁面或Servlet中有這樣一段話:
Stringdogs[]={"lili","huahua","guoguo"}; request.setAttribute("array",dogs);那么,在JSP中可以使用EL取出數(shù)組中的元素,代碼如下:
${array[0]} ${array[1]} ${array[2]}《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.2.2EL中的“[]”與“.”操作符(3)獲取集合對象中的元素假設(shè)在JSP頁面或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,那么在JSP頁面中可以使用EL取出UserBean中的屬性,代碼如下:${array[0].name}${array[0].age}${array[1].name}${array[1].age}《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.2.3EL的錯誤處理機制EL為JSP頁面的錯誤處理提供了比較友好的處理方式:不提供警告,只提供默認值和錯誤,默認值是空字符串,錯誤就是拋出一個異常。EL的錯誤處理機制,具體如下:1.對于null值直接以空字符串顯示,而不是null,運算時也不會發(fā)生錯誤或空指針異常。所以在使用EL訪問對象的屬性時,不需判斷對象是否為null對象。2.在EL中訪問一個存在對象的不存在屬性,EL表達式會拋出PropertyNotFoundException異常?!禞avaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
學(xué)習(xí)目的與要求9.1EL簡介9.2EL語法9.3EL運算符9.4EL隱含對象9.5JSP標準標簽庫JSTL《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.3.1算術(shù)運算符算術(shù)運算符說
明示
例結(jié)
果+加${13+2}15-減${13-2}11*乘${13*2}26/(或div)除${13/2}或${13div2}6.5%(或mod)取模(求余)${13%2}或${13mod2}1《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.3.2關(guān)系運算符關(guān)系運算符說
明示
例結(jié)
果==(或eq)等于${13==2}或${13eq2}false!=(或ne)不等于${13!=2}或${13ne2}true<(或lt)小于${13<2}或${13lt2}false>(或gt)大于${13>2}或${13gt2}true<=(或le)小于等于${13<=2}或${13le2}false>=(或ge)大于等于${13>=2}或${13ge2}true《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.3.3邏輯運算符邏輯運算符說
明示
例結(jié)
果&&(或and)邏輯與如果A為true,B為false,則A&&B(或AandB)false||(或or)邏輯或如果A為true,B為false,則A||B(或AorB)true!(或not)邏輯非如果A為true,則!A(或notA)false《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.3.4empty運算符empty運算符用于檢測一個值是否為null,例如,變量A不存在,則${emptyA}返回的結(jié)果為true?!禞avaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.3.5條件運算符EL中的條件運算符是“?:”,例如,${A?B:C},如果A為true,計算B并返回其結(jié)果,如果A為false,計算C并返回其結(jié)果?!禞avaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
學(xué)習(xí)目的與要求9.1EL簡介9.2EL語法9.3EL運算符9.4EL隱含對象9.5JSP標準標簽庫JSTL《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.4.1與作用范圍相關(guān)的隱含對象與作用范圍有關(guān)的EL隱含對象有:pageScope、requestScope、sessionScope和applicationScope,分別可以獲取JSP內(nèi)置對象pageContext、request、session和application中的數(shù)據(jù)。如果在EL中沒有使用隱含對象指定作用范圍,則會依次從page、request、session、application范圍查找,找到就直接返回,不再繼續(xù)找下去,如果所有范圍都沒有找到,就返回空字符串?!禞avaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.4.1與作用范圍相關(guān)的隱含對象比如,在JSP頁面或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,那么在request有效的范圍內(nèi)可以使用EL取出UserBean的屬性,代碼如下:${requestScope.array[0].name}${requestScope.array[0].age}${requestScope.array[1].name}${requestScope.array[1].age}《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.4.2與請求參數(shù)相關(guān)的隱含對象與請求參數(shù)相關(guān)的EL隱含對象有param和paramValues。獲取數(shù)據(jù)的格式如下:
${EL隱含對象.參數(shù)名}比如,input.jsp的代碼如下:<formmethod="post"action="param.jsp"> <p>姓名:<inputtype="text"name="username"size="15"/></p> <inputtype="submit"value="提交"/></form>那么,在param.jsp頁面中可以使用EL獲取參數(shù)值,代碼如下:<%request.setCharacterEncoding("UTF-8");%><body><h2>EL隱含對象param、paramValues</h2>姓名:${param.username}</br>《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.4EL隱含對象【例9-1】編寫1個Servlet,在該Servlet中使用request對象存儲數(shù)據(jù),然后從該Servlet轉(zhuǎn)發(fā)到show.jsp頁面,在show.jsp頁面中顯示request對象的數(shù)據(jù)。首先,運行Servlet,在IE地址欄中輸入:http://localhost:8080/ch9/saveServlet,程序運行結(jié)果如圖9.1所示?!禞avaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
學(xué)習(xí)目的與要求9.1EL簡介9.2EL語法9.3EL運算符9.4EL隱含對象9.5JSP標準標簽庫JSTL《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.5JSP標準標簽庫JSTLJSTL規(guī)范由Sun公司制定,Apache的Jakarta小組負責(zé)實現(xiàn)。JSTL標準標簽庫由5個不同功能的標簽庫組成,包括Core、I18N、XML、SQL以及Functions,本節(jié)只是簡要介紹了JSTL的Core和Functions標簽庫中幾個常用的標簽?!禞avaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.5.1配置JSTL1.復(fù)制JSTL的標準實現(xiàn)在Tomcat的\webapps\examples\WEB-INF\lib目錄下,找到“taglibs-standard-impl-1.2.5-migrated-0.0.1.jar”和“taglibs-standard-spec-1.2.5-migrated-0.0.1.jar”文件,然后復(fù)制到Web項目的WEB-INF\lib目錄下。具體做法是:在WEB-INF目錄下創(chuàng)建lib目錄,將JAR包復(fù)制到lib中,然后右鍵選擇Add
as
Library,添加為項目依賴。2.使用taglib標記定義前綴與uri引用如果使用Core核心標簽庫,首先需要在JSP頁面中使用taglib標記定義前綴與uri引用,代碼如下:<%@taglibprefix="c"uri="/jsp/jstl/core"%>如果使用Functions函數(shù)標簽庫,首先需要在JSP頁面中使用taglib標記定義前綴與uri引用,代碼如下:<%@taglibprefix="fn"uri="/jsp/jstl/functions"%>《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.5.2核心標簽庫之通用標簽1.<c:out>標簽<c:out>用來顯示數(shù)據(jù)的內(nèi)容,與<%=表達式%>或${表達式}類似。格式如下:<c:outvalue="輸出的內(nèi)容"[default="defaultValue"]/>或<c:outvalue="輸出的內(nèi)容"> defaultValue</c:out><c:outvalue="${param.data}"default="沒有數(shù)據(jù)"/><br><c:outvalue="${param.nothing}"/><br><c:outvalue="這是一個字符串"/>《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.5.2核心標簽庫之通用標簽2.<c:set>標簽
設(shè)置作用域變量可以使用<c:set>在page、request、session、application等范圍內(nèi)設(shè)置一個變量。格式如下:<c:setvalue="value"var="varName"[scope="page|request|session|application"]/>
設(shè)置JavaBean的屬性使用<c:set>設(shè)置JavaBean的屬性時,必須使用target屬性進行設(shè)置。格式如下:<c:setvalue="value"target="target"property=“propertyName"/>《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.5.2核心標簽庫之通用標簽3.<c:remove>標簽如果要刪除某個變量,則可以使用<c:remove>標簽。例如:<c:removevar="userName"scope="session"/>相當(dāng)于<%session.removeAttribute("userName")%>《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.5.3核心標簽庫之流程控制標簽1.<c:if>標簽<c:if>標簽實現(xiàn)if語句的作用,具體語法格式如下:
<c:iftest="條件表達式">
主體內(nèi)容
</c:if>其中,條件表達式可以是EL表達式,也可以是JSP表達式。如果表達式的值為true,則會執(zhí)行<c:if>的主體內(nèi)容,但是沒有相對應(yīng)的<c:else>標簽。如果想在條件成立時執(zhí)行一塊內(nèi)容,不成立時執(zhí)行另一塊內(nèi)容,則可以使用<c:choose>、<c:when>及<c:otherwise>標簽?!禞avaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.5.3核心標簽庫之流程控制標簽2.<c:choose>、<c:when>及<c:otherwise>標簽<c:choose>、<c:when>及<c:otherwise>標簽實現(xiàn)if/elseif/else語句的作用。具體語法格式如下:
<c:choose> <c:whentest="條件表達式1">
主體內(nèi)容1 </c:when> <c:whentest="條件表達式2">
主體內(nèi)容2 </c:when> <c:otherwise>
表達式都不正確時,執(zhí)行的主體內(nèi)容
</c:otherwise></c:choose>《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.5.3核心標簽庫之流程控制標簽【例9-2】編寫一個JSP頁面ifelse.jsp,在該頁面中使用<c:set>標簽把兩個字符串設(shè)置為request范圍內(nèi)的變量。使用<c:if>標簽求出這兩個字符串的最大值(按字典順序比較大?。?,使用<c:choose>、<c:when>及<c:otherwise>標簽求出這兩個字符串的最小值?!禞avaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.5.4核心標簽庫之迭代標簽1.<c:forEach>標簽<c:forEach>標簽可以實現(xiàn)程序中的for循環(huán)。語法格式如下:
<c:forEachvar="變量名"items="數(shù)組或Collection對象">
循環(huán)體
</c:forEach>其中,items屬性可以是數(shù)組或Collection對象,每次循環(huán)讀取對象中的一個元素,并賦值給var屬性指定的變量,之后就可以在循環(huán)體使用var指定的變量獲取對象的元素?!禞avaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.5.4核心標簽庫之迭代標簽ArrayList<UserBean>users=newArrayList<UserBean>();UserBeanub1=newUserBean("zhao",20);UserBeanub2=newUserBean("qian",40);UserBeanub3=newUserBean("sun",60);UserBeanub4=newUserBean("li",80);users.add(ub1);users.add(ub2);users.add(ub3);users.add(ub4);request.setAttribute("usersKey",users);<c:forEachvar="user"items="${requestScope.usersKey}"><tr><td>${}</td><td>${user.age}</td></tr></c:forEach>《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.5.4核心標簽庫之迭代標簽有些情況下,需要為<c:forEach>標簽指定begin、end、step和varStatus屬性。begin為迭代時的開始位置,默認值為0;end為迭代時的結(jié)束位置,默認值是最后一個元素;step為迭代步長,默認值為1;varStatus代表迭代變量的狀態(tài),包括count(迭代的次數(shù))、index(當(dāng)前迭代的索引,第一個索引為0)、first(是否是第一個迭代對象)和last(是否是最后一個迭代對象)。<c:forEachvar="x"varStatus="status"begin="0"end="10"step="2">
<tr>
<td>${x}</td>
<td>${x*x}</td>
<td>${status.index}</td>
</tr></c:forEach>《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.5.4核心標簽庫之迭代標簽2.<c:forTokens>標簽<c:forTokens>用于迭代字符串中由分隔符分隔的各成員,它是通過java.util.StringTokenizer實例來完成字符串的分隔,屬性items和delims作為構(gòu)造StringTokenizer實例的參數(shù)。語法格式如下:<c:forTokensvar="變量名"items="要迭代的String對象"delims="指定分隔字符串的分隔符">
循環(huán)體</c:forTokens><c:forTokensitems="陳恒:梁藝多:董宗然:趙靜"delims=":"var="name">
${name}<br></c:forTokens>《JavaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
9.5.5核心標簽庫之URL標簽JSTL中提供了<c:url>、<c:redirect>、<c:import>等與URL操作相關(guān)的標簽?!禞avaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
1.<c:url><c:url>標簽用于在JSP頁面中構(gòu)造一個URL地址,其語法格式如下:<c:urlvalue="指定要構(gòu)造的URL" [var="varName"][scope="{page|request|session|application}"] [context="context"]> [<c:paramname="paramName"value="paramValue"/>]</c:url>其中,value指定要構(gòu)造的URL;var指定構(gòu)造的URL保存到范圍域中的屬性名稱;scope指定構(gòu)造的URL結(jié)果保存到哪個范圍域中;context指定URL地址所屬的同一Web容器下的Web應(yīng)用上下文;<c:param>標簽向指定URL地址傳遞的參數(shù);[]表示可選?!禞avaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
2.<c:redirect><c:redirect>標簽用于執(zhí)行response.sendRedirect()方法的功能,將當(dāng)前訪問請求重定向到其他資源,其語法格式如下:<c:redirecturl="重定向的URL地址"[context="context"]> [<c:paramname="paramName"value="paramValue"/>]</c:redirect>其中,url指定重定向的目標資源的URL地址;context指定重定向地址所屬的同一Web容器下的Web應(yīng)用上下文;<c:param>標簽向指定URL地址傳遞的參數(shù);[]表示可選?!禞avaWeb開發(fā)從入門到實戰(zhàn)(第2版·微課視頻版)》陳恒
主編,清華大學(xué)出版社,2024
3.<c:import><c:import>標簽用于在JSP頁面中導(dǎo)入一個URL地址指向的資源內(nèi)容,可以是一個靜態(tài)或動態(tài)文件,可以是當(dāng)前應(yīng)用或任何其他資源,其語法格式如下:<c:importurl="url" [var="varName"][scope="{page|request|s
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年數(shù)字媒體項目規(guī)劃申請報告
- 公司財務(wù)會計個人工作總結(jié)7篇
- 2025年油井加熱自控儀項目立項申請報告范文
- 高二語文教師個人工作計劃5篇
- 認識實習(xí)報告錦集5篇
- 第8課時《 列方程解決實際問題(3)》(教學(xué)實錄)-2023-2024學(xué)年五年級下冊數(shù)學(xué)蘇教版
- 2024-2025學(xué)年高中英語 Unit 3 Inventors and inventions Section Ⅲ Grammar(教師用書)教學(xué)實錄 新人教版選修8
- 中學(xué)班主任工作總結(jié)模板5篇
- 大學(xué)生保險公司實習(xí)報告匯編6篇
- 銷售月度工作計劃(15篇)
- 2025年八省聯(lián)考高考語文作文真題及參考范文
- 新課標(水平三)體育與健康《籃球》大單元教學(xué)計劃及配套教案(18課時)
- 計件工勞務(wù)合同范例
- GB/T 45076-2024再生資源交易平臺建設(shè)規(guī)范
- 10.2《師說》課件 2024-2025學(xué)年統(tǒng)編版高中語文必修上冊
- 2024年度企業(yè)重組與債務(wù)重組協(xié)議3篇
- 2024年公交車開通儀式講話例文(4篇)
- 科研倫理與學(xué)術(shù)規(guī)范(研究生)期末試題庫及答案
- 四川省宜賓市2023-2024學(xué)年高一上學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測數(shù)學(xué)試卷(解析版)
- 行列式練習(xí)題目及答案
- 小區(qū)組建首次業(yè)主大會籌備組(會)的籌備、建議方案
評論
0/150
提交評論