Java-Web程序設計與案例教程-第5章-EL表達式與JSTL標簽課件_第1頁
Java-Web程序設計與案例教程-第5章-EL表達式與JSTL標簽課件_第2頁
Java-Web程序設計與案例教程-第5章-EL表達式與JSTL標簽課件_第3頁
Java-Web程序設計與案例教程-第5章-EL表達式與JSTL標簽課件_第4頁
Java-Web程序設計與案例教程-第5章-EL表達式與JSTL標簽課件_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第5章EL表達式與JSTL標簽

第5章EL表達式與JSTL標簽本章內容EL語法

Cookie的含義和用法

Session的含義和用法

Session的工作原理個人信息模塊的實現基于MVC的購物車本章內容EL語法5.1EL語法EL表達式的語法非常簡潔,都是以“${”開始,以“}”符號結束的,請看下面的使用示例。上述語句希望從Session中獲取key為“cart”的對象,判斷其是否為空,如果不為空,就將這個cart對象中的total屬性打印到瀏覽器中。1<%2 Objectcart=Session.getAttribute("cart");3 if(cart!=null){4%>5<%=(ShoppingCart)cart.getTotal()%>6<%}%>5.1EL語法EL表達式的語法非常簡潔,都是以“${”開5.1EL語法5.1.1EL獲取數據5.1.2EL執(zhí)行運算5.1.3EL訪問隱含對象5.1EL語法5.1.1EL獲取數據5.1.1EL獲取數據EL表達式可以輕松獲取4大作用域中的JavaBean的屬性,或獲取數組、Collection、Map類型集合的數據。EL表達式語句在執(zhí)行時,會調用pageContext的findAttribute(Stringkey)方法,用標識符名稱作為關鍵字,分別從page、request、session、application4個域中查找相應的對象,找到則返回相應對象,找不到則返回""(空字符串)。語法如下:${作用域對象.屬性名稱}5.1.1EL獲取數據EL表達式可以輕松獲取4大作用域中的5.1.1EL獲取數據其中,EL表達式中用于代表4大作用域的對象如表5.1所示,表5.1中的對象名稱是EL表達式中的關鍵字,代表要訪問的Servlet的作用域對象。EL表達式對象對應作用域使用樣例PageScopePage${PageScope.paramName}RequestScopeRequest${RequestScope.paramName}SessionScopeSession${SessionScope

.paramName}ApplicationScopeApplication${ApplicationScope.paramName}表5.1EL表達式中的4大作用域5.1.1EL獲取數據其中,EL表達式中用于代表4大作用域5.1.2EL執(zhí)行運算在EL表達式中可以使用運算符達到我們想要的結果,運算符按作用分為算數運算符、關系運算符、邏輯運算符,還包括一些比較特殊的三元運算符和判空運算符等。1.算術運算符操作符使用示例+例如:${6+6},結果為12-例如:${4-3},結果為1*例如:${4*3},結果為12/或

div例如:${17/5}或

${17div5},結果為3%或

mod例如:${17%5}或

${17mod5},結果為2表5.2EL表達式中的算術運算符5.1.2EL執(zhí)行運算在EL表達式中可以使用運算符達到我們5.1.2EL執(zhí)行運算2.關系運算符表5.3EL中的關系運算符操作符使用示例>或gt例如:${8>9}或者

${8gt9}>=或ge例如:${45>=9}或者

${45ge9}<或lt例如:${4<9}或者

${4lt9}<=或le例如:${9<=8}或者

${9le8}==或eq例如:${4==4}或者

${4eq4}!=或ne例如:${4!=3}或者

${4ne3}5.1.2EL執(zhí)行運算2.關系運算符表5.3EL中的關系5.1.2EL執(zhí)行運算3.邏輯運算符4.三元運算符

在EL表達式中也存在三元算符,語法格式如下:${條件表達式?結果表達式1:結果表達式2}5.判空運算符

使用EL判斷某個對象是否為空值,可使用empty關鍵字,語法如下:${empty表達式}表5.4EL中的邏輯運算符操作符使用示例&&或and例如:${false&&false}或者

${falseandfalse}||或or例如:${true||false}或者

${trueorfalse}!或not例如:${!true}(相當于${false})或者

${nottrue}5.1.2EL執(zhí)行運算3.邏輯運算符表5.4EL中的邏輯5.1.3EL訪問隱含對象EL表達式可以訪問一系列對象,一共有11個,如表5.5所示。序號隱含對象名稱描述1pageContext對應于JSP頁面中的pageContext對象2pageScope代表page域中用于保存屬性的Map對象3requestScope代表request域中用于保存屬性的Map對象4sessionScope代表session域中用于保存屬性的Map對象5applicationScope代表application域中用于保存屬性的Map對象6param表示一個保存了所有請求參數的Map對象7paramValues表示一個保存了所有請求參數的Map對象,它對應于某個請求參數,返回的是一個string[]8header表示一個保存了所有http請求頭字段的Map對象9headerValues表示一個保存了所有http請求頭字段的Map對象,它對應于某個請求參數,返回的是一個string[]數組10cookie表示一個保存了所有cookie的Map對象11initParam表示一個保存了所有Web應用初始化參數的Map對象表5.5EL表達式中的隱含對象5.1.3EL訪問隱含對象EL表達式可以訪問一系列對象,一5.2JSTLJSP標準標簽庫(JSPStandardTagLibrary,JSTL)是一個不斷完善的開放源代碼的JSP標簽庫,是由Apache的jakarta小組來維護的。JSTL只能運行在支持JSP1.2和Servlet2.3規(guī)范的容器上,如Tomcat4.x。在JSP2.0中也是作為標準支持的。JSTL1.0發(fā)布于2002年6月,由4個定制標記庫(core、format、xml和sql)和一對通用標記庫驗證器(ScriptFreeTLV和PermittedTaglibsTLV)組成。5.2JSTLJSP標準標簽庫(JSPStandard5.2JSTL5.2.1EL獲取數據5.2.2EL執(zhí)行運算5.2.3EL訪問隱含對象5.2JSTL5.2.1EL獲取數據5.2.1JSTL的安裝一個標簽庫一般由兩大部分組成:jar文件包和tld文件。1.jar文件包這個部分是標簽庫的功能實現部分,由Java來實現,此部分不是本文的重點,故詳細內容略。2.tld文件tld文件是用來描述標簽庫的,其內容為標簽庫中所有標簽的定義,包括標簽名、功能類及各種屬性。5.2.1JSTL的安裝一個標簽庫一般由兩大部分組成:j5.2.1JSTL的安裝如果要使用JSTL,則必須將jstl.jar和standard.jar文件放到classpath中,這些jar文件全部存在于對應的zip文件中,暗裝步驟如下:(1)從Apache的標準標簽庫中下載jakarta-taglibs-

standard-current.zip包,如圖5.6所示。(2)解壓jakarta-taglibs-standard-1.1.2.zip包,將lib文件夾下的兩個jar文件(standard.jar和jstl.jar文件)加載到工程的編譯路徑下,不同的IDE的操作方式不同。(3)將標簽庫描述符文件導入到jsp頁面,語法格式如下:<%@taglib(uri="tigLibURL"或tagDir="tagDir")prefix="tagPrefix"%>5.2.1JSTL的安裝如果要使用JSTL,則必須將js5.2.1JSTL的安裝在MyEclipse中,不需要進行上述的操作,因為在MyEclipse創(chuàng)建的Web工程中,會自動引入JavaEE開發(fā)相關的jar包,其中就包含了standard.jar和jstl.jar文件。在MyEclipse創(chuàng)建Web項目時,會提示用戶選擇JavaEE的版本,如果所選版本為5.0以上,則在工程中會增加JavaEEversionLibraries,其中會包含jstl-impl.jar文件(見圖5.7),standard.jar和jstl.jar的內容就包含在jstl-impl.jar中。但是在其他IDE中,如Eclipse中,就需要手動將上述的jar包添加到工程中。5.2.1JSTL的安裝在MyEclipse中,不需要進5.2.2JSTL核心標簽核心標簽是最常用的JSTL標簽。使用JSTL標簽前,需要引入對應的標簽庫,在JSP中引用核心標簽庫的語法如下:<%@taglibprefix="c"uri="/jsp/jstl/core"%>其中,“taglib”是JSP指令,功能是用來引入標簽庫,“taglib”指令中含有兩個屬性,分別是“prefix”和“uri”。“prefix”代表使用標簽時指定的前綴,該前綴名稱用戶可自定義,習慣上起名為“c”;“uri”代表了JSTL核心標簽庫的唯一URI標志。常用的JSTL的核心標簽如表5.6所示。5.2.2JSTL核心標簽核心標簽是最常用的JSTL標簽。5.2.2JSTL核心標簽標簽描述<c:out>用于在JSP中顯示數據,就像<%=...><c:set>用于保存數據<c:remove>用于刪除數據<c:catch>用來處理產生錯誤的異常狀況,并且將錯誤信息儲存起來<c:if>與我們在一般程序中用的if一樣<c:choose>本身只當作<c:when>和<c:otherwise>的父標簽<c:when><c:choose>的子標簽,用來判斷條件是否成立<c:otherwise><c:choose>的子標簽,在<c:when>標簽后,當<c:when>標簽判斷為false時被執(zhí)行<c:import>檢索一個絕對或相對

URL,然后將其內容暴露給頁面<c:forEach>基礎迭代標簽,接受多種集合類型<c:forTokens>根據指定的分隔符來分隔內容并迭代輸出<c:param>用來給包含或重定向的頁面?zhèn)鬟f參數<c:redirect>重定向至一個新的URL<c:url>使用可選的查詢參數來創(chuàng)造一個URL表5.6JSTL核心標簽5.2.2JSTL核心標簽標簽描述<c:out>用5.2.3JSTL格式化標簽JSTL格式化標簽可用來格式化并輸出文本、日期、時間、數字。引用格式化標簽庫的語法如下:<%@taglibprefix="fmt"uri="/jsp/jstl/fmt"%>例如,日期在Java中是一個非常復雜的內容,如日期的國際化、日期和時間之間的轉換、日期的加減運算、日期的展示格式等都是非常復雜的問題,我們一般通過使用JSTL格式化標簽將一些結果值轉化成需要的格式進行輸出。在JSTL庫中常用的格式化標簽如表5.9所示。5.2.3JSTL格式化標簽JSTL格式化標簽可用來格式化5.2.3JSTL格式化標簽表5.9JSTL格式化標簽標簽描述<fmt:formatNumber>使用指定的格式或精度格式化數字<fmt:parseNumber>解析一個代表著數字、貨幣或百分比的字符串<fmt:formatDate>使用指定的風格或模式格式化日期和時間<fmt:parseDate>解析一個代表著日期或時間的字符串<fmt:bundle>綁定資源<fmt:setLocale>指定地區(qū)<fmt:setBundle>綁定資源<fmt:timeZone>指定時區(qū)<fmt:setTimeZone>指定時區(qū)<fmt:message>顯示資源配置文件信息<fmt:requestEncoding>設置request的字符編碼5.2.3JSTL格式化標簽表5.9JSTL格式化標簽標5.2.4JSTL函數JSTL包含一系列標準函數,如表5.12所示,其中大部分是通用的字符串處理函數。引用JSTL函數庫的語法如下:<%@taglibprefix="fn"uri="/jsp/jstl/functions"%>函數描述fn:contains()測試輸入的字符串是否包含指定的子串fn:containsIgnoreCase()測試輸入的字符串是否包含指定的子串,大小寫不敏感fn:endsWith()測試輸入的字符串是否以指定的后綴結尾fn:escapeXml()跳過可以作為XML標記的字符fn:indexOf()返回指定字符串在輸入字符串中出現的位置fn:join()將數組中的元素合成一個字符串然后輸出fn:length()返回字符串長度fn:replace()將輸入字符串中指定的位置替換為指定的字符串然后返回fn:split()將字符串用指定的分隔符分隔然后組成一個子字符串數組并返回fn:startsWith()測試輸入字符串是否以指定的前綴開始fn:substring()返回字符串的子集fn:substringAfter()返回字符串在指定子串之后的子集fn:substringBefore()返回字符串在指定子串之前的子集fn:toLowerCase()將字符串中的字母轉為小寫fn:toUpperCase()將字符串中的字母轉為大寫fn:trim()移除首位的空白符表5.12JSTL函數5.2.4JSTL函數JSTL包含一系列標準函數,如表5.5.3簡易購物商城系統本節(jié)將對第4章的案例進行改寫,主要針對JSP頁面上的顯示部分,將使用EL和JSTL替換JSP頁面中的JSP標簽、JSP表達式、JSP腳本等內容,如圖5.23所示。圖5.23簡易購物商城首頁效果5.3簡易購物商城系統本節(jié)將對第4章的案例進行改寫,主要針5.3簡易購物商城系統5.3.1首頁模板5.3.2個人中心5.3.3全部商品列表5.3.4購物車5.3簡易購物商城系統5.3.1首頁模板5.3.1首頁模板首先對“頁頭”和“導航”的公用頁面進行改寫,具體代碼如下。在文件中首先使用<%@tagliburi="/jsp/jstl/core"prefix="c"%>引入JSTL核心標簽庫。(1)top.jsp1<%@pagelanguage="java"pageEncoding="utf-8"%>2<%@taglibprefix="c"uri="/jsp/jstl/core"%>3前端商城歡迎您,<c:outvalue="${user.username}"escapeXml="false">4<ahref="login.jsp">請登錄</a></c:out>5.3.1首頁模板首先對“頁頭”和“導航”的公用頁面進行改5.3.1首頁模板(2)left.jspf1<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%>2<table>3 <tr><td>4 <ahref="${pageContext.servletContext.contextPath}/web/GetPsersonalServlet">5 個人中心</a></td>6 </tr>7 <tr><td>8 <ahref="${pageContext.servletContext.contextPath}/web/getAllAuction">9 全部商品</a></td></tr>10 <tr><td><ahref="${pageContext.servletContext.contextPath}/web/CartListServlet">11 我的購物車</a></td></tr>12</table>5.3.1首頁模板(2)left.jspf1<%@p5.3.2個人中心當用戶已經完善過個人信息后,點擊“個人中心”鏈接,頁面跳轉至如圖5.24所示的頁面,我們將原來使用的<jsp:useBean>和<jsp:getProperty>標簽用JSTL替換。圖5.24個人中心頁面效果5.3.2個人中心當用戶已經完善過個人信息后,點擊“個人中5.3.2個人中心創(chuàng)建WebRoot/web/personal文件夾,存放和個人信息相關的頁面文件,在該文件夾下創(chuàng)建personalInfo.jsp文件,使用EL表達式來進行數據展示,其中<body></body>標簽之間的代碼如下。5.3.2個人中心創(chuàng)建WebRoot/web/person5.3.2個人中心1<body>2<table>3<tr><tdcolspan="2"align="right">4 <jsp:includepage="/common/web/top.jsp"/>5</td></tr>6<trvalign="top">7<tdwidth="20%">8 <%@includefile="/common/web/left.jspf"%>9</td>10<tdalign="center">11<c:choose>12 <c:whentest="${emptypersonalInfo}">13 您還沒有完善信息,<ahref="personalPage1.jsp">請完善信息</a>14 </c:when>15 <c:otherwise>16 <table>17 <tr>18 <td>年齡:</td>19 <td>${personalInfo.age}</td>20 </tr>21 <tr>22 <td>性別:</td>23 <td>${personalInfo.gender}</td>24 </tr>25 <tr>26 <td>家庭住址:</td>27 <td>${personalInfo.address}</td>28 </tr>29 <tr>30 <td>聯系方式:</td>5.3.2個人中心1<body>5.3.2個人中心31 <td>${personalInfo.tel}</td>32 </tr>33 <tr>34 <td>email:</td>35 <td>${personalInfo.email}</td>36 </tr>37 <tr>38 <td>畢業(yè)院校:</td>39 <td>${personalInfo.graduateSchool}</td>40 </tr>41 <tr>42 <td>最高學歷:</td>43 <td>${personalInfo.highestEducation}</td>44 </tr>45 <tr>46 <td>專業(yè)方向:</td>47 <td>${personalInfo.major}</td>48 </tr>49 </table>50 </c:otherwise>51 </c:choose>52</td>53</table>54</body>5.3.2個人中心5.3.3全部商品列表當已登錄用戶點擊“全部商品”鏈接時,系統會展示如圖5.25所示的商品列表結果頁,每個商品都有一個“加入購物車”的鏈接。圖5.25全部商品列表效果5.3.3全部商品列表當已登錄用戶點擊“全部商品”鏈接時,5.3.3全部商品列表創(chuàng)建WebRoot/web/auction文件夾,存放和商品相關的頁面文件,在該文件夾下創(chuàng)建auctionList.jsp文件,用來顯示系統中的所有商品列表,使用EL表達式來進行數據展示,頁面核心代碼如下。1<tableborder="1">2 <tr>3 <td>商品編號</td>4 <td>商品標題</td>5 <td>商品描述</td>6 <td>商品價格</td>7 <td></td>8 </tr>9 <c:forEachitems="${auctionList}"var="auction">10 <tr>11 <td>${auction.id}</td>12 <td>${auction.title}</td>13 <td>${auction.description}</td>14 <td>${auction.price}</td>15 <td>16<ahref="${pageContext.servletContext.contextPath}/web/18 AddCartServlet?id=${auction.id}">加入購物車</a>20 </tr>21 </c:forEach>5.3.3全部商品列表創(chuàng)建WebRoot/web/auct5.3.4購物車當用戶點擊“我的購物車”鏈接,或者將某個商品加入到購物車中時,都會顯示如圖5.26所示的“我的購物車”頁面。圖5.26“我的購物車”頁面5.3.4購物車當用戶點擊“我的購物車”鏈接,或者將某個商5.3.4購物車創(chuàng)建WebRoot/web/shoppingCart文件夾,存放和購物車相關的頁面文件,在該文件夾下創(chuàng)建myShoppingCartt.jsp文件,用來顯示當前用戶購物車內的商品列表,頁面核心代碼如下。5.3.4購物車創(chuàng)建WebRoot/web/shoppin5.3.4購物車1<tableborder="1">2 <tr>3<tdcolspan="7"align="center">我的購物車</td>4 </tr>5 <tr>6 <td></td>7 <td>商品編號</td>8 <td>商品名稱</td>9 <td>商品數量</td>10 <td>商品單價</td>11 <td>商品總價</td>12 <td>操作列表</td>13 </tr>14 <c:forEachitems="${cartList}"var="cart">15 <tr>16 <td>17<inputtype="checkbox"name="slctedOrder"value="${cart.auctionDO.id}">18 </td>19 <td>${cart.auctionDO.id}</td>20 <td>${cart.auctionDO.title}</td>21 <td>${cart.number}</td>22 <td>${cart.auctionDO.price}</td>23 <td>${cart.totlePrice}</td>24<td><ahref="${pageContext.servletContext.contextPath}25 /web/RemoveCartServlet?id=${cart.auctionDO.26 id}">刪除此商品</a>27 </td>28 </tr>29 </c:forEach>30 <tr>31<tdcolspan="7"align="right"><a32 href="${pageContext.servletContext.contextPath}/web/getAllAuction">33 繼續(xù)購物</a></td>34 </tr>5.3.4購物車1<tableborder="1"第5章EL表達式與JSTL標簽

第5章EL表達式與JSTL標簽本章內容EL語法

Cookie的含義和用法

Session的含義和用法

Session的工作原理個人信息模塊的實現基于MVC的購物車本章內容EL語法5.1EL語法EL表達式的語法非常簡潔,都是以“${”開始,以“}”符號結束的,請看下面的使用示例。上述語句希望從Session中獲取key為“cart”的對象,判斷其是否為空,如果不為空,就將這個cart對象中的total屬性打印到瀏覽器中。1<%2 Objectcart=Session.getAttribute("cart");3 if(cart!=null){4%>5<%=(ShoppingCart)cart.getTotal()%>6<%}%>5.1EL語法EL表達式的語法非常簡潔,都是以“${”開5.1EL語法5.1.1EL獲取數據5.1.2EL執(zhí)行運算5.1.3EL訪問隱含對象5.1EL語法5.1.1EL獲取數據5.1.1EL獲取數據EL表達式可以輕松獲取4大作用域中的JavaBean的屬性,或獲取數組、Collection、Map類型集合的數據。EL表達式語句在執(zhí)行時,會調用pageContext的findAttribute(Stringkey)方法,用標識符名稱作為關鍵字,分別從page、request、session、application4個域中查找相應的對象,找到則返回相應對象,找不到則返回""(空字符串)。語法如下:${作用域對象.屬性名稱}5.1.1EL獲取數據EL表達式可以輕松獲取4大作用域中的5.1.1EL獲取數據其中,EL表達式中用于代表4大作用域的對象如表5.1所示,表5.1中的對象名稱是EL表達式中的關鍵字,代表要訪問的Servlet的作用域對象。EL表達式對象對應作用域使用樣例PageScopePage${PageScope.paramName}RequestScopeRequest${RequestScope.paramName}SessionScopeSession${SessionScope

.paramName}ApplicationScopeApplication${ApplicationScope.paramName}表5.1EL表達式中的4大作用域5.1.1EL獲取數據其中,EL表達式中用于代表4大作用域5.1.2EL執(zhí)行運算在EL表達式中可以使用運算符達到我們想要的結果,運算符按作用分為算數運算符、關系運算符、邏輯運算符,還包括一些比較特殊的三元運算符和判空運算符等。1.算術運算符操作符使用示例+例如:${6+6},結果為12-例如:${4-3},結果為1*例如:${4*3},結果為12/或

div例如:${17/5}或

${17div5},結果為3%或

mod例如:${17%5}或

${17mod5},結果為2表5.2EL表達式中的算術運算符5.1.2EL執(zhí)行運算在EL表達式中可以使用運算符達到我們5.1.2EL執(zhí)行運算2.關系運算符表5.3EL中的關系運算符操作符使用示例>或gt例如:${8>9}或者

${8gt9}>=或ge例如:${45>=9}或者

${45ge9}<或lt例如:${4<9}或者

${4lt9}<=或le例如:${9<=8}或者

${9le8}==或eq例如:${4==4}或者

${4eq4}!=或ne例如:${4!=3}或者

${4ne3}5.1.2EL執(zhí)行運算2.關系運算符表5.3EL中的關系5.1.2EL執(zhí)行運算3.邏輯運算符4.三元運算符

在EL表達式中也存在三元算符,語法格式如下:${條件表達式?結果表達式1:結果表達式2}5.判空運算符

使用EL判斷某個對象是否為空值,可使用empty關鍵字,語法如下:${empty表達式}表5.4EL中的邏輯運算符操作符使用示例&&或and例如:${false&&false}或者

${falseandfalse}||或or例如:${true||false}或者

${trueorfalse}!或not例如:${!true}(相當于${false})或者

${nottrue}5.1.2EL執(zhí)行運算3.邏輯運算符表5.4EL中的邏輯5.1.3EL訪問隱含對象EL表達式可以訪問一系列對象,一共有11個,如表5.5所示。序號隱含對象名稱描述1pageContext對應于JSP頁面中的pageContext對象2pageScope代表page域中用于保存屬性的Map對象3requestScope代表request域中用于保存屬性的Map對象4sessionScope代表session域中用于保存屬性的Map對象5applicationScope代表application域中用于保存屬性的Map對象6param表示一個保存了所有請求參數的Map對象7paramValues表示一個保存了所有請求參數的Map對象,它對應于某個請求參數,返回的是一個string[]8header表示一個保存了所有http請求頭字段的Map對象9headerValues表示一個保存了所有http請求頭字段的Map對象,它對應于某個請求參數,返回的是一個string[]數組10cookie表示一個保存了所有cookie的Map對象11initParam表示一個保存了所有Web應用初始化參數的Map對象表5.5EL表達式中的隱含對象5.1.3EL訪問隱含對象EL表達式可以訪問一系列對象,一5.2JSTLJSP標準標簽庫(JSPStandardTagLibrary,JSTL)是一個不斷完善的開放源代碼的JSP標簽庫,是由Apache的jakarta小組來維護的。JSTL只能運行在支持JSP1.2和Servlet2.3規(guī)范的容器上,如Tomcat4.x。在JSP2.0中也是作為標準支持的。JSTL1.0發(fā)布于2002年6月,由4個定制標記庫(core、format、xml和sql)和一對通用標記庫驗證器(ScriptFreeTLV和PermittedTaglibsTLV)組成。5.2JSTLJSP標準標簽庫(JSPStandard5.2JSTL5.2.1EL獲取數據5.2.2EL執(zhí)行運算5.2.3EL訪問隱含對象5.2JSTL5.2.1EL獲取數據5.2.1JSTL的安裝一個標簽庫一般由兩大部分組成:jar文件包和tld文件。1.jar文件包這個部分是標簽庫的功能實現部分,由Java來實現,此部分不是本文的重點,故詳細內容略。2.tld文件tld文件是用來描述標簽庫的,其內容為標簽庫中所有標簽的定義,包括標簽名、功能類及各種屬性。5.2.1JSTL的安裝一個標簽庫一般由兩大部分組成:j5.2.1JSTL的安裝如果要使用JSTL,則必須將jstl.jar和standard.jar文件放到classpath中,這些jar文件全部存在于對應的zip文件中,暗裝步驟如下:(1)從Apache的標準標簽庫中下載jakarta-taglibs-

standard-current.zip包,如圖5.6所示。(2)解壓jakarta-taglibs-standard-1.1.2.zip包,將lib文件夾下的兩個jar文件(standard.jar和jstl.jar文件)加載到工程的編譯路徑下,不同的IDE的操作方式不同。(3)將標簽庫描述符文件導入到jsp頁面,語法格式如下:<%@taglib(uri="tigLibURL"或tagDir="tagDir")prefix="tagPrefix"%>5.2.1JSTL的安裝如果要使用JSTL,則必須將js5.2.1JSTL的安裝在MyEclipse中,不需要進行上述的操作,因為在MyEclipse創(chuàng)建的Web工程中,會自動引入JavaEE開發(fā)相關的jar包,其中就包含了standard.jar和jstl.jar文件。在MyEclipse創(chuàng)建Web項目時,會提示用戶選擇JavaEE的版本,如果所選版本為5.0以上,則在工程中會增加JavaEEversionLibraries,其中會包含jstl-impl.jar文件(見圖5.7),standard.jar和jstl.jar的內容就包含在jstl-impl.jar中。但是在其他IDE中,如Eclipse中,就需要手動將上述的jar包添加到工程中。5.2.1JSTL的安裝在MyEclipse中,不需要進5.2.2JSTL核心標簽核心標簽是最常用的JSTL標簽。使用JSTL標簽前,需要引入對應的標簽庫,在JSP中引用核心標簽庫的語法如下:<%@taglibprefix="c"uri="/jsp/jstl/core"%>其中,“taglib”是JSP指令,功能是用來引入標簽庫,“taglib”指令中含有兩個屬性,分別是“prefix”和“uri”。“prefix”代表使用標簽時指定的前綴,該前綴名稱用戶可自定義,習慣上起名為“c”;“uri”代表了JSTL核心標簽庫的唯一URI標志。常用的JSTL的核心標簽如表5.6所示。5.2.2JSTL核心標簽核心標簽是最常用的JSTL標簽。5.2.2JSTL核心標簽標簽描述<c:out>用于在JSP中顯示數據,就像<%=...><c:set>用于保存數據<c:remove>用于刪除數據<c:catch>用來處理產生錯誤的異常狀況,并且將錯誤信息儲存起來<c:if>與我們在一般程序中用的if一樣<c:choose>本身只當作<c:when>和<c:otherwise>的父標簽<c:when><c:choose>的子標簽,用來判斷條件是否成立<c:otherwise><c:choose>的子標簽,在<c:when>標簽后,當<c:when>標簽判斷為false時被執(zhí)行<c:import>檢索一個絕對或相對

URL,然后將其內容暴露給頁面<c:forEach>基礎迭代標簽,接受多種集合類型<c:forTokens>根據指定的分隔符來分隔內容并迭代輸出<c:param>用來給包含或重定向的頁面?zhèn)鬟f參數<c:redirect>重定向至一個新的URL<c:url>使用可選的查詢參數來創(chuàng)造一個URL表5.6JSTL核心標簽5.2.2JSTL核心標簽標簽描述<c:out>用5.2.3JSTL格式化標簽JSTL格式化標簽可用來格式化并輸出文本、日期、時間、數字。引用格式化標簽庫的語法如下:<%@taglibprefix="fmt"uri="/jsp/jstl/fmt"%>例如,日期在Java中是一個非常復雜的內容,如日期的國際化、日期和時間之間的轉換、日期的加減運算、日期的展示格式等都是非常復雜的問題,我們一般通過使用JSTL格式化標簽將一些結果值轉化成需要的格式進行輸出。在JSTL庫中常用的格式化標簽如表5.9所示。5.2.3JSTL格式化標簽JSTL格式化標簽可用來格式化5.2.3JSTL格式化標簽表5.9JSTL格式化標簽標簽描述<fmt:formatNumber>使用指定的格式或精度格式化數字<fmt:parseNumber>解析一個代表著數字、貨幣或百分比的字符串<fmt:formatDate>使用指定的風格或模式格式化日期和時間<fmt:parseDate>解析一個代表著日期或時間的字符串<fmt:bundle>綁定資源<fmt:setLocale>指定地區(qū)<fmt:setBundle>綁定資源<fmt:timeZone>指定時區(qū)<fmt:setTimeZone>指定時區(qū)<fmt:message>顯示資源配置文件信息<fmt:requestEncoding>設置request的字符編碼5.2.3JSTL格式化標簽表5.9JSTL格式化標簽標5.2.4JSTL函數JSTL包含一系列標準函數,如表5.12所示,其中大部分是通用的字符串處理函數。引用JSTL函數庫的語法如下:<%@taglibprefix="fn"uri="/jsp/jstl/functions"%>函數描述fn:contains()測試輸入的字符串是否包含指定的子串fn:containsIgnoreCase()測試輸入的字符串是否包含指定的子串,大小寫不敏感fn:endsWith()測試輸入的字符串是否以指定的后綴結尾fn:escapeXml()跳過可以作為XML標記的字符fn:indexOf()返回指定字符串在輸入字符串中出現的位置fn:join()將數組中的元素合成一個字符串然后輸出fn:length()返回字符串長度fn:replace()將輸入字符串中指定的位置替換為指定的字符串然后返回fn:split()將字符串用指定的分隔符分隔然后組成一個子字符串數組并返回fn:startsWith()測試輸入字符串是否以指定的前綴開始fn:substring()返回字符串的子集fn:substringAfter()返回字符串在指定子串之后的子集fn:substringBefore()返回字符串在指定子串之前的子集fn:toLowerCase()將字符串中的字母轉為小寫fn:toUpperCase()將字符串中的字母轉為大寫fn:trim()移除首位的空白符表5.12JSTL函數5.2.4JSTL函數JSTL包含一系列標準函數,如表5.5.3簡易購物商城系統本節(jié)將對第4章的案例進行改寫,主要針對JSP頁面上的顯示部分,將使用EL和JSTL替換JSP頁面中的JSP標簽、JSP表達式、JSP腳本等內容,如圖5.23所示。圖5.23簡易購物商城首頁效果5.3簡易購物商城系統本節(jié)將對第4章的案例進行改寫,主要針5.3簡易購物商城系統5.3.1首頁模板5.3.2個人中心5.3.3全部商品列表5.3.4購物車5.3簡易購物商城系統5.3.1首頁模板5.3.1首頁模板首先對“頁頭”和“導航”的公用頁面進行改寫,具體代碼如下。在文件中首先使用<%@tagliburi="/jsp/jstl/core"prefix="c"%>引入JSTL核心標簽庫。(1)top.jsp1<%@pagelanguage="java"pageEncoding="utf-8"%>2<%@taglibprefix="c"uri="/jsp/jstl/core"%>3前端商城歡迎您,<c:outvalue="${user.username}"escapeXml="false">4<ahref="login.jsp">請登錄</a></c:out>5.3.1首頁模板首先對“頁頭”和“導航”的公用頁面進行改5.3.1首頁模板(2)left.jspf1<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%>2<table>3 <tr><td>4 <ahref="${pageContext.servletContext.contextPath}/web/GetPsersonalServlet">5 個人中心</a></td>6 </tr>7 <tr><td>8 <ahref="${pageContext.servletContext.contextPath}/web/getAllAuction">9 全部商品</a></td></tr>10 <tr><td><ahref="${pageContext.servletContext.contextPath}/web/CartListServlet">11 我的購物車</a></td></tr>12</table>5.3.1首頁模板(2)left.jspf1<%@p5.3.2個人中心當用戶已經完善過個人信息后,點擊“個人中心”鏈接,頁面跳轉至如圖5.24所示的頁面,我們將原來使用的<jsp:useBean>和<jsp:getProperty>標簽用JSTL替換。圖5.24個人中心頁面效果5.3.2個人中心當用戶已經完善過個人信息后,點擊“個人中5.3.2個人中心創(chuàng)建WebRoot/web/personal文件夾,存放和個人信息相關的頁面文件,在該文件夾下創(chuàng)建personalInfo.jsp文件,使用EL表達式來進行數據展示,其中<body></body>標簽之間的代碼如下。5.3.2個人中心創(chuàng)建WebRoot/web/person5.3.2個人中心1<body>2<table>3<tr><tdcolspan="2"align="right">4 <jsp:includepage="/common/web/top.jsp"/>5</td></tr>6<trvalign="top">7<tdwidth="20%">8 <%@includefile="/common/web/left.jspf"%>9</td>10<tdalign="center">11<c:choose>12 <c:whentest="${emptypersonalInfo}">13 您還沒有完善信息,<ahref="personalPage1.jsp">請完善信息</a>14 </c:when>15 <c:otherwise>16 <table>17 <tr>18 <td>年齡:</td>19 <td>${personalInfo.age}</td>20 </tr>21 <tr>22 <td>性別:</td>23 <td>${personalInfo.gender}</td>24 </tr>25 <tr>26 <td>家庭住址:</td>27 <td>${personalInfo.address}</td>28 </tr>29 <tr>30 <td>聯系方式:</td>5.3.2個人中心1<body>5.3.2個人中心31 <td>${personalInfo.tel}</td>32 </tr>33 <tr>34 <td>email:</td>35 <td>${personalInfo.email}</td>36 </tr>37 <tr>38 <td>畢業(yè)院校:</td>39 <td>${personalInfo.graduateSchool}</td>40 </tr>41 <tr>42 <td>最高學歷:</td>43 <td>${personalInfo.h

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論