




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第9章EL與JSTL學習目的與要求本章主要介紹表達式語言(ExpressionLanguage,簡稱EL)和JSP標準標簽庫(Java
Server
Pages
Standard
Tag
Library,簡稱JSTL)的基本用法。通過本章的學習,掌握EL表達式語法,掌握EL隱含對象,了解什么是JSTL,掌握JSTL的核心標簽庫。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
學習目的與要求9.1EL簡介9.2EL語法9.3EL運算符9.4EL隱含對象9.5JSP標準標簽庫JSTL《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.1EL簡介EL是JSP2.0規范中增加的,它的基本語法為:${表達式}EL表達式類似于JSP表達式<%=表達式%>,EL語句中的表達式值會被直接送到瀏覽器顯示。通過page指令的isELIgnored屬性來說明是否支持EL表達式。isELIgnored屬性值為false時,JSP頁面可以使用EL表達式;isELIgnored屬性值為true時,JSP頁面不能使用EL表達式(被當成字符串直接輸出)。isELIgnored屬性值默認為false。EL表達式語言最大的優勢是可以方便地訪問JSP的內置對象和JavaBean組件,完成使用<%%>或<%=%>完成的功能,使JSP頁面從HTML代碼中嵌入Java代碼的混亂結構得以改善,提高了程序的可讀性和易維護性。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
學習目的與要求9.1EL簡介9.2EL語法9.3EL運算符9.4EL隱含對象9.5JSP標準標簽庫JSTL《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.2.1EL中的常量EL表達式中的常量包括布爾、整型、浮點數、字符串以及NULL等常量。例如:${true}、${200}、${16.7}、${"hello"}、${null}。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.2.2EL中的“[]”與“.”操作符EL使用“[]”和“.”操作符來訪問數據,主要使用EL獲取對象的屬性,包括獲取JavaBean的屬性值、獲取數組中的元素以及獲取集合對象中的元素。(1)獲取JavaBean的屬性值假設在JSP頁面中有這樣一句話:
<jsp:getPropertyproperty="age"name="user"/>那么,可以使用EL獲取user的屬性age,代碼如下:
${user.age}或
${user["age"]}其中,點運算符前面為JavaBean對象user,后面為該對象的屬性age,表示利用user對象的getAge()方法取值并顯示在網頁上。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.2.2EL中的“[]”與“.”操作符(2)獲取數組中的元素假設在JSP頁面或Servlet中有這樣一段話:
Stringdogs[]={"lili","huahua","guoguo"}; request.setAttribute("array",dogs);那么,在JSP中可以使用EL取出數組中的元素,代碼如下:
${array[0]} ${array[1]} ${array[2]}《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.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開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.2.3EL的錯誤處理機制EL為JSP頁面的錯誤處理提供了比較友好的處理方式:不提供警告,只提供默認值和錯誤,默認值是空字符串,錯誤就是拋出一個異常。EL的錯誤處理機制,具體如下:1.對于null值直接以空字符串顯示,而不是null,運算時也不會發生錯誤或空指針異常。所以在使用EL訪問對象的屬性時,不需判斷對象是否為null對象。2.在EL中訪問一個存在對象的不存在屬性,EL表達式會拋出PropertyNotFoundException異常。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
學習目的與要求9.1EL簡介9.2EL語法9.3EL運算符9.4EL隱含對象9.5JSP標準標簽庫JSTL《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.3.1算術運算符算術運算符說
明示
例結
果+加${13+2}15-減${13-2}11*乘${13*2}26/(或div)除${13/2}或${13div2}6.5%(或mod)取模(求余)${13%2}或${13mod2}1《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.3.2關系運算符關系運算符說
明示
例結
果==(或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開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.3.3邏輯運算符邏輯運算符說
明示
例結
果&&(或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開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.3.4empty運算符empty運算符用于檢測一個值是否為null,例如,變量A不存在,則${emptyA}返回的結果為true。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.3.5條件運算符EL中的條件運算符是“?:”,例如,${A?B:C},如果A為true,計算B并返回其結果,如果A為false,計算C并返回其結果。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
學習目的與要求9.1EL簡介9.2EL語法9.3EL運算符9.4EL隱含對象9.5JSP標準標簽庫JSTL《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.4.1與作用范圍相關的隱含對象與作用范圍有關的EL隱含對象有:pageScope、requestScope、sessionScope和applicationScope,分別可以獲取JSP內置對象pageContext、request、session和application中的數據。如果在EL中沒有使用隱含對象指定作用范圍,則會依次從page、request、session、application范圍查找,找到就直接返回,不再繼續找下去,如果所有范圍都沒有找到,就返回空字符串。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.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有效的范圍內可以使用EL取出UserBean的屬性,代碼如下:${requestScope.array[0].name}${requestScope.array[0].age}${requestScope.array[1].name}${requestScope.array[1].age}《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.4.2與請求參數相關的隱含對象與請求參數相關的EL隱含對象有param和paramValues。獲取數據的格式如下:
${EL隱含對象.參數名}比如,input.jsp的代碼如下:<formmethod="post"action="param.jsp"> <p>姓名:<inputtype="text"name="username"size="15"/></p> <inputtype="submit"value="提交"/></form>那么,在param.jsp頁面中可以使用EL獲取參數值,代碼如下:<%request.setCharacterEncoding("UTF-8");%><body><h2>EL隱含對象param、paramValues</h2>姓名:${param.username}</br>《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.4EL隱含對象【例9-1】編寫1個Servlet,在該Servlet中使用request對象存儲數據,然后從該Servlet轉發到show.jsp頁面,在show.jsp頁面中顯示request對象的數據。首先,運行Servlet,在IE地址欄中輸入:http://localhost:8080/ch9/saveServlet,程序運行結果如圖9.1所示。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
學習目的與要求9.1EL簡介9.2EL語法9.3EL運算符9.4EL隱含對象9.5JSP標準標簽庫JSTL《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.5JSP標準標簽庫JSTLJSTL規范由Sun公司制定,Apache的Jakarta小組負責實現。JSTL標準標簽庫由5個不同功能的標簽庫組成,包括Core、I18N、XML、SQL以及Functions,本節只是簡要介紹了JSTL的Core和Functions標簽庫中幾個常用的標簽。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.5.1配置JSTL1.復制JSTL的標準實現在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目錄下創建lib目錄,將JAR包復制到lib中,然后右鍵選擇Add
as
Library,添加為項目依賴。2.使用taglib標記定義前綴與uri引用如果使用Core核心標簽庫,首先需要在JSP頁面中使用taglib標記定義前綴與uri引用,代碼如下:<%@taglibprefix="c"uri="/jsp/jstl/core"%>如果使用Functions函數標簽庫,首先需要在JSP頁面中使用taglib標記定義前綴與uri引用,代碼如下:<%@taglibprefix="fn"uri="/jsp/jstl/functions"%>《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.5.2核心標簽庫之通用標簽1.<c:out>標簽<c:out>用來顯示數據的內容,與<%=表達式%>或${表達式}類似。格式如下:<c:outvalue="輸出的內容"[default="defaultValue"]/>或<c:outvalue="輸出的內容"> defaultValue</c:out><c:outvalue="${param.data}"default="沒有數據"/><br><c:outvalue="${param.nothing}"/><br><c:outvalue="這是一個字符串"/>《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.5.2核心標簽庫之通用標簽2.<c:set>標簽
設置作用域變量可以使用<c:set>在page、request、session、application等范圍內設置一個變量。格式如下:<c:setvalue="value"var="varName"[scope="page|request|session|application"]/>
設置JavaBean的屬性使用<c:set>設置JavaBean的屬性時,必須使用target屬性進行設置。格式如下:<c:setvalue="value"target="target"property=“propertyName"/>《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.5.2核心標簽庫之通用標簽3.<c:remove>標簽如果要刪除某個變量,則可以使用<c:remove>標簽。例如:<c:removevar="userName"scope="session"/>相當于<%session.removeAttribute("userName")%>《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.5.3核心標簽庫之流程控制標簽1.<c:if>標簽<c:if>標簽實現if語句的作用,具體語法格式如下:
<c:iftest="條件表達式">
主體內容
</c:if>其中,條件表達式可以是EL表達式,也可以是JSP表達式。如果表達式的值為true,則會執行<c:if>的主體內容,但是沒有相對應的<c:else>標簽。如果想在條件成立時執行一塊內容,不成立時執行另一塊內容,則可以使用<c:choose>、<c:when>及<c:otherwise>標簽。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.5.3核心標簽庫之流程控制標簽2.<c:choose>、<c:when>及<c:otherwise>標簽<c:choose>、<c:when>及<c:otherwise>標簽實現if/elseif/else語句的作用。具體語法格式如下:
<c:choose> <c:whentest="條件表達式1">
主體內容1 </c:when> <c:whentest="條件表達式2">
主體內容2 </c:when> <c:otherwise>
表達式都不正確時,執行的主體內容
</c:otherwise></c:choose>《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.5.3核心標簽庫之流程控制標簽【例9-2】編寫一個JSP頁面ifelse.jsp,在該頁面中使用<c:set>標簽把兩個字符串設置為request范圍內的變量。使用<c:if>標簽求出這兩個字符串的最大值(按字典順序比較大小),使用<c:choose>、<c:when>及<c:otherwise>標簽求出這兩個字符串的最小值。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.5.4核心標簽庫之迭代標簽1.<c:forEach>標簽<c:forEach>標簽可以實現程序中的for循環。語法格式如下:
<c:forEachvar="變量名"items="數組或Collection對象">
循環體
</c:forEach>其中,items屬性可以是數組或Collection對象,每次循環讀取對象中的一個元素,并賦值給var屬性指定的變量,之后就可以在循環體使用var指定的變量獲取對象的元素。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,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開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.5.4核心標簽庫之迭代標簽有些情況下,需要為<c:forEach>標簽指定begin、end、step和varStatus屬性。begin為迭代時的開始位置,默認值為0;end為迭代時的結束位置,默認值是最后一個元素;step為迭代步長,默認值為1;varStatus代表迭代變量的狀態,包括count(迭代的次數)、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開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.5.4核心標簽庫之迭代標簽2.<c:forTokens>標簽<c:forTokens>用于迭代字符串中由分隔符分隔的各成員,它是通過java.util.StringTokenizer實例來完成字符串的分隔,屬性items和delims作為構造StringTokenizer實例的參數。語法格式如下:<c:forTokensvar="變量名"items="要迭代的String對象"delims="指定分隔字符串的分隔符">
循環體</c:forTokens><c:forTokensitems="陳恒:梁藝多:董宗然:趙靜"delims=":"var="name">
${name}<br></c:forTokens>《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
9.5.5核心標簽庫之URL標簽JSTL中提供了<c:url>、<c:redirect>、<c:import>等與URL操作相關的標簽。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,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地址傳遞的參數;[]表示可選。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
2.<c:redirect><c:redirect>標簽用于執行response.sendRedirect()方法的功能,將當前訪問請求重定向到其他資源,其語法格式如下:<c:redirecturl="重定向的URL地址"[context="context"]> [<c:paramname="paramName"value="paramValue"/>]</c:redirect>其中,url指定重定向的目標資源的URL地址;context指定重定向地址所屬的同一Web容器下的Web應用上下文;<c:param>標簽向指定URL地址傳遞的參數;[]表示可選。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
3.<c:import><c:import>標簽用于在JSP頁面中導入一個URL地址指向的資源內容,可以是一個靜態或動態文件,可以是當前應用或任何其他資源,其語法格式如下:<c:importurl="url" [var="varName"][scope="{page|request|s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 實施輪胎氣壓管理維護操作流程
- 長春工業大學《生物工程單元操作原理》2023-2024學年第二學期期末試卷
- 2024-2025學年河南省洛陽市第23中學初三5月一診模擬數學試題含解析
- 長春師范大學《商務談判與推銷技巧》2023-2024學年第二學期期末試卷
- 遼寧大學《干花與壓花藝術》2023-2024學年第二學期期末試卷
- 山東省萊州市一中2025年高考模擬(8)化學試題含解析
- 南京大學金陵學院《民法學合同侵權》2023-2024學年第二學期期末試卷
- 北京市西城區重點名校2025屆下學期初三數學試題月考考試試卷含解析
- 來賓市金秀瑤族自治縣2025屆四年級數學第二學期期末統考試題含解析
- 保安服務勞動合同范本2篇
- (四調)武漢市2025屆高中畢業生四月調研考試 語文試卷(含答案詳解)
- 湖南省2025屆高三“一起考”大聯考(模擬二)語文試題及參考答案
- 2024年中國職工保險互助會陜西辦事處招聘筆試真題
- 商業地產項目整體經營方案
- 旅行社代訂業務合同模板
- 2025年4月自考13887經濟學原理中級押題及答案
- 2025廣東廣州市花都區恒悅房地產開發有限公司招聘項目用工人員16人筆試參考題庫附帶答案詳解
- 琴行規章制度
- 醫療大數據平臺的運營管理策略
- 醫院內部控制崗位職責與流程優化
- 2025年中國石油鉆采專用設備行業競爭格局及市場發展潛力預測報告
評論
0/150
提交評論