




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第7章EL與JSTL學習目的與要求本章主要介紹表達式語言(ExpressionLanguage,簡稱EL)和JSP標準標簽庫(Java
Server
Pages
Standard
Tag
Library,簡稱JSTL)的基本用法。通過本章的學習,掌握EL表達式語法,掌握EL隱含對象,了解什么是JSTL,掌握JSTL的核心標簽庫?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
學習目的與要求《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.1EL簡介7.2EL語法7.3EL運算符7.4EL隱含對象7.5JSP標準標簽庫JSTL7.1EL簡介EL是JSP2.0規(guī)范中增加的,它的基本語法為:${表達式}EL表達式類似于JSP表達式<%=表達式%>,EL語句中的表達式值會被直接送到瀏覽器顯示。通過page指令的isELIgnored屬性來說明是否支持EL表達式。isELIgnored屬性值為false時,JSP頁面可以使用EL表達式;isELIgnored屬性值為true時,JSP頁面不能使用EL表達式(被當成字符串直接輸出)。isELIgnored屬性值默認為false。EL表達式語言最大的優(yōu)勢是可以方便地訪問JSP的內(nèi)置對象和JavaBean組件,完成使用<%%>或<%=%>完成的功能,使JSP頁面從HTML代碼中嵌入Java代碼的混亂結構得以改善,提高了程序的可讀性和易維護性?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
學習目的與要求《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.1EL簡介7.2EL語法7.3EL運算符7.4EL隱含對象7.5JSP標準標簽庫JSTL7.2.1EL中的常量EL表達式中的常量包括布爾、整型、浮點數(shù)、字符串以及NULL等常量。例如:${true}、${200}、${16.7}、${"hello"}、${null}?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.2.2EL中的“[]”與“.”操作符EL使用“[]”和“.”操作符來訪問數(shù)據(jù),主要使用EL獲取對象的屬性,包括獲取JavaBean的屬性值、獲取數(shù)組中的元素以及獲取集合對象中的元素。(1)獲取JavaBean的屬性值假設在JSP頁面中有這樣一句話:
<jsp:getPropertyproperty="age"name="user"/>那么,可以使用EL獲取user的屬性age,代碼如下:
${user.age}或
${user["age"]}其中,點運算符前面為JavaBean對象user,后面為該對象的屬性age,表示利用user對象的getAge()方法取值并顯示在網(wǎng)頁上?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.2.2EL中的“[]”與“.”操作符(2)獲取數(shù)組中的元素假設在JSP頁面或Servlet中有這樣一段話:
Stringdogs[]={"lili","huahua","guoguo"}; request.setAttribute("array",dogs);那么,在JSP中可以使用EL取出數(shù)組中的元素,代碼如下:
${array[0]} ${array[1]} ${array[2]}《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.2.2EL中的“[]”與“.”操作符(3)獲取集合對象中的元素假設在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)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.2.3EL的錯誤處理機制EL為JSP頁面的錯誤處理提供了比較友好的處理方式:不提供警告,只提供默認值和錯誤,默認值是空字符串,錯誤就是拋出一個異常。EL的錯誤處理機制,具體如下:1.對于null值直接以空字符串顯示,而不是null,運算時也不會發(fā)生錯誤或空指針異常。所以在使用EL訪問對象的屬性時,不需判斷對象是否為null對象。2.在EL中訪問一個存在對象的不存在屬性,EL表達式會拋出PropertyNotFoundException異常。《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
學習目的與要求《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.1EL簡介7.2EL語法7.3EL運算符7.4EL隱含對象7.5JSP標準標簽庫JSTL7.3.1算術運算符《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
算術運算符說
明示
例結
果+加${13+2}15-減${13-2}11*乘${13*2}26/(或div)除${13/2}或${13div2}6.5%(或mod)取模(求余)${13%2}或${13mod2}17.3.2關系運算符《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
關系運算符說
明示
例結
果==(或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}true7.3.3邏輯運算符《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
邏輯運算符說
明示
例結
果&&(或and)邏輯與如果A為true,B為false,則A&&B(或AandB)false||(或or)邏輯或如果A為true,B為false,則A||B(或AorB)true!(或not)邏輯非如果A為true,則!A(或notA)false7.3.4empty運算符empty運算符用于檢測一個值是否為null,例如,變量A不存在,則${emptyA}返回的結果為true?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.3.5條件運算符EL中的條件運算符是“?:”,例如,${A?B:C},如果A為true,計算B并返回其結果,如果A為false,計算C并返回其結果?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
學習目的與要求《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.1EL簡介7.2EL語法7.3EL運算符7.4EL隱含對象7.5JSP標準標簽庫JSTL7.4.1與作用范圍相關的隱含對象與作用范圍有關的EL隱含對象有:pageScope、requestScope、sessionScope和applicationScope,分別可以獲取JSP內(nèi)置對象pageContext、request、session和application中的數(shù)據(jù)。如果在EL中沒有使用隱含對象指定作用范圍,則會依次從page、request、session、application范圍查找,找到就直接返回,不再繼續(xù)找下去,如果所有范圍都沒有找到,就返回空字符串?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.4.1與作用范圍相關的隱含對象比如,在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)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.4.2與請求參數(shù)相關的隱含對象與請求參數(shù)相關的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)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.4EL隱含對象【例7-1】編寫1個Servlet,在該Servlet中使用request對象存儲數(shù)據(jù),然后從該Servlet轉(zhuǎn)發(fā)到show.jsp頁面,在show.jsp頁面中顯示request對象的數(shù)據(jù)。首先,運行Servlet,在IE地址欄中輸入:http://localhost:8080/ch7/saveServlet,程序運行結果如圖7.1所示?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
學習目的與要求《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.1EL簡介7.2EL語法7.3EL運算符7.4EL隱含對象7.5JSP標準標簽庫JSTL7.5JSP標準標簽庫JSTLJSTL規(guī)范由Sun公司制定,Apache的Jakarta小組負責實現(xiàn)。JSTL標準標簽庫由5個不同功能的標簽庫組成,包括Core、I18N、XML、SQL以及Functions,本節(jié)只是簡要介紹了JSTL的Core和Functions標簽庫中幾個常用的標簽?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.5.1配置JSTL1.復制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”文件,然后復制到Web項目的WEB-INF\lib目錄下。具體做法是:在WEB-INF目錄下創(chuàng)建lib目錄,將JAR包復制到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)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.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)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.5.2核心標簽庫之通用標簽2.<c:set>標簽
設置作用域變量可以使用<c:set>在page、request、session、application等范圍內(nèi)設置一個變量。格式如下:<c:setvalue="value"var="varName"[scope="page|request|session|application"]/>
設置JavaBean的屬性使用<c:set>設置JavaBean的屬性時,必須使用target屬性進行設置。格式如下:<c:setvalue="value"target="target"property=“propertyName"/>《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.5.2核心標簽庫之通用標簽3.<c:remove>標簽如果要刪除某個變量,則可以使用<c:remove>標簽。例如:<c:removevar="userName"scope="session"/>相當于<%session.removeAttribute("userName")%>《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.5.3核心標簽庫之流程控制標簽1.<c:if>標簽<c:if>標簽實現(xiàn)if語句的作用,具體語法格式如下:
<c:iftest="條件表達式">
主體內(nèi)容
</c:if>其中,條件表達式可以是EL表達式,也可以是JSP表達式。如果表達式的值為true,則會執(zhí)行<c:if>的主體內(nèi)容,但是沒有相對應的<c:else>標簽。如果想在條件成立時執(zhí)行一塊內(nèi)容,不成立時執(zhí)行另一塊內(nèi)容,則可以使用<c:choose>、<c:when>及<c:otherwise>標簽。《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.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)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.5.3核心標簽庫之流程控制標簽【例7-2】編寫一個JSP頁面ifelse.jsp,在該頁面中使用<c:set>標簽把兩個字符串設置為request范圍內(nèi)的變量。使用<c:if>標簽求出這兩個字符串的最大值(按字典順序比較大小),使用<c:choose>、<c:when>及<c:otherwise>標簽求出這兩個字符串的最小值。《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.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)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.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);《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
<c:forEachvar="user"items="${requestScope.usersKey}"><tr><td>${}</td><td>${user.age}</td></tr></c:forEach>7.5.4核心標簽庫之迭代標簽有些情況下,需要為<c:forEach>標簽指定begin、end、step和varStatus屬性。begin為迭代時的開始位置,默認值為0;end為迭代時的結束位置,默認值是最后一個元素;step為迭代步長,默認值為1;varStatus代表迭代變量的狀態(tài),包括count(迭代的次數(shù))、index(當前迭代的索引,第一個索引為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)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.5.4核心標簽庫之迭代標簽2.<c:forTokens>標簽<c:forTokens>用于迭代字符串中由分隔符分隔的各成員,它是通過java.util.StringTokenizer實例來完成字符串的分隔,屬性items和delims作為構造StringTokenizer實例的參數(shù)。語法格式如下:<c:forTokensvar="變量名"items="要迭代的String對象"delims="指定分隔字符串的分隔符">
循環(huán)體</c:forTokens><c:forTokensitems="陳恒:梁藝多:董宗然:趙靜"delims=":"var="name">
${name}<br></c:forTokens>《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.5.5核心標簽庫之URL標簽JSTL中提供了<c:url>、<c:redirect>、<c:import>等與URL操作相關的標簽?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
1.<c:url><c:url>標簽用于在JSP頁面中構造一個URL地址,其語法格式如下:<c:urlvalue="指定要構造的URL" [var="varName"][scope="{page|request|session|application}"] [context="context"]> [<c:paramname="paramName"value="paramValue"/>]</c:url>其中,value指定要構造的URL;var指定構造的URL保存到范圍域中的屬性名稱;scope指定構造的URL結果保存到哪個范圍域中;context指定URL地址所屬的同一Web容器下的Web應用上下文;<c:param>標簽向指定URL地址傳遞的參數(shù);[]表示可選。《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.<c:redirect><c:redirect>標簽用于執(zhí)行response.sendRedirect()方法的功能,將當前訪問請求重定向到其他資源,其語法格式如下:<c:redirecturl="重定向的URL地址"[context="context"]> [<c:paramname="paramName"value="paramValue"/>]</c:redirect>其中,url指定重定向的目標資源的URL地址;context指定重定向地址所屬的同一Web容器下的Web應用上下文;<c:param>標簽向指定URL地址傳遞的參數(shù);[]表示可選?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.<c:import><c:import>標簽用于在JSP頁面中導入一個URL地址指向的資源內(nèi)容,可以是一個靜態(tài)或動態(tài)文件,可以是當前應用或任何其他資源,其語法格式如下:<c:importurl="url" [var="varName"][scope="{page|request|sess
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國奶糖行業(yè)運營狀況與發(fā)展趨勢分析報告
- 2025-2030年中國伺服電機行業(yè)市場運行狀況與發(fā)展規(guī)劃分析報告
- 2025-2030年中國產(chǎn)業(yè)園區(qū)行業(yè)運行現(xiàn)狀及發(fā)展趨勢預測報告
- 2025-2030年中國LED外延片行業(yè)運行狀況及發(fā)展趨勢分析報告
- 用電稽查員(初級)技能理論考試題及答案
- 知識產(chǎn)權投資基金在創(chuàng)新驅(qū)動發(fā)展中的作用
- 科技創(chuàng)新成果轉(zhuǎn)化的知識產(chǎn)權管理
- 河南省洛陽市強基聯(lián)盟2024-2025學年高一上學期12月月考歷史試題(解析版)
- 江蘇省徐州市豐縣2025屆中考歷史最后沖刺卷含解析(一)
- 二手新能源汽車充電安全承諾書
- 醫(yī)學課件:介入放射學(全套課件328張)
- 水泥攪拌樁記錄表格范本
- DL∕T 458-2020 板框式旋轉(zhuǎn)濾網(wǎng)
- GB∕T 8163-2018 輸送流體用無縫鋼管
- 短視頻:策劃制作與運營課件
- T∕ASC 17-2021 電動汽車充換電設施系統(tǒng)設計標準
- 水閘設計步驟計算書(多表)
- PowerPoint使用技巧培訓課件(共35張)
- SMA瀝青路面的設計與施工
- 腎內(nèi)科相關基礎知識學習教案
評論
0/150
提交評論