教學材料《JSP設計與開發》-第8章_第1頁
教學材料《JSP設計與開發》-第8章_第2頁
教學材料《JSP設計與開發》-第8章_第3頁
教學材料《JSP設計與開發》-第8章_第4頁
教學材料《JSP設計與開發》-第8章_第5頁
已閱讀5頁,還剩125頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

學習要點EL的基本用法核心標簽庫SQL標簽庫函數標簽庫JSTL典型應用返回8.1JSTL概述8.1.1什么是JSTLJSTL(JavaServerPagesStandardTagLibrary),即JSP標準標簽庫,其主要功能是為JSPWeb開發人員提供一個標準通用的標簽庫。開發人員可以利用這些標簽取代JSP頁面上的Java代碼,從而提高程序的可讀性,降低程序的維護難度。

JSTL標簽是基于JSP頁面的,這些標簽可以插入在JSP代碼中,本質上JSTL也是提前定義好的一組標簽,這些標簽封裝了不同的功能,在頁面上調用標簽時,就等于調用了封裝起來的功能。JSTL的目標是為了簡化JSP頁面的設計。對于頁面設計人員來說,使用腳本語言操作動態數據是比較困難的,二采用標簽和表達式語言則相對容易,JSTL的使用為頁面設計人員和程序開發人員的分工協作提供了便利。下一頁返回8.1JSTL概述JSTL由5個不同功能的標簽庫組成,在JSTL規范中為這5個標簽的URI和前綴做出了約定,如表8-1所示。使用JSTL時,需要將jstl.jar和standard.jar兩個文件復制到當前項目的WEB-INF\lib目錄下,并在JSP文件中使用taglib指令。

JSTL的優點如下。

(1)在應用程序服務器之間提供了接口,最大程度地提高Web應用在各應用服務器之間的移植。(2)簡化了JSP和Web應用程序的開發。(3)以一種統一的方式減少了JSP中的Scriptlets代碼數量,可以達到沒有任何Scriptlets代碼的程序。

(4)允許JSP設計工具與Web應用程序開發的進一步集成。上一頁下一頁返回8.1JSTL概述8.1.2案例一:一個簡單的JSTL應用【案例功能】使用JSTL的兒種標簽輸出信息。【案例目標】了解JSTL在JSP中的應用。【案例要點】JSTL標簽的種類和編碼格式。【案例步驟】(1)創建第8章源碼文件夾ch08。(2)將jstl.jar和standard.jar兩個文件復制到當前項目的WEB-INF\lib目錄下。(3)編寫FirstJSTL.jsp源代碼文件。【源碼】FirstJSTL.jsp上一頁下一頁返回8.1JSTL概述上一頁下一頁返回8.1JSTL概述上一頁下一頁返回8.1JSTL概述

【代碼說明】①第2-3行:使用核心標簽庫和國際化標簽庫,使用taglib指令來設置前綴和uri。②第5行:使用國際化標簽庫中的setLocale標簽設定語言地區代碼為中文zh-cn。③第10-14行:把3個字符串加到ArrayList類對象customers中,并將其設置為request對象的customers屬性。④第16行:使用核心標簽庫中的EL標簽設置一個EL變量customer的值為request對象的customers屬性值。⑤第17-20行:使用核心標簽庫中的forEach標簽循環輸出EL變量customer中的值。上一頁下一頁返回8.1JSTL概述⑥第24-27行:使用國際化標簽庫標簽按照指定的時區和格式輸出當前時間。

(4)部署。

(5)啟動Tomcat服務器后,運行結果如圖8-1所示。說明:${customers}是一種表達式語言(EL),可替代傳統的JSP輸出語句更快捷地輸出信息,下一節將詳細講解。上一頁返回8.2表達式語言(EL)8.2.1EL的基本語法格式

EL的語法簡單,使用方便。所有的EL表達式都是以“${”開始,以“{”結束,如${userName}。在EL中可以輸出常量,變量,也可以在EL中進行各種運算。如果輸出字符串常量,需要使用雙引號引起來。EL可以直接在JSP頁面的模板文本中使用,也可以作為元素屬性的值,還可以在自定義或者標準動作元素的內容中使用。在表達式中可以進行各種運算。最基本的一個是“.”和“”。作用是訪問某個范圍的變量,某個集合的元素及某個對象的屬性等。例如,要訪問請求信息中的用戶ID,可以使用${param.Userid}或者${param“userid”}。下一頁返回8.2表達式語言(EL)8.2.2案例二:在EL中使用隱含對象在表達式語言中提供了11個隱含對象,這些隱含對象包含了絕大多數所要訪問的信息,我們可以直接訪問這些對象中的信息。1.pageContextJavax.Servlet.jsp.PageContext對象,JSP頁面的上下文,它提供了訪問ServletContext,Request,Response和Session等對象的方法。例如:${pageContext.request.requestURL}。2.param

類型是java.util.Map,將請求中的參數名和單個字符串值進行映射。主要用于獲取應用程序范圍內的屬性的值,等同于調用ServletRequest.getParameter(Stringname)。例如,要得到頁面上一頁下一頁返回8.2表達式語言(EL)請求參數name的值,則可以有${param.Name}調用。3.paramValues

類型是java.util.Map,將請求中的參數名和一個包含了該參數所有值的String類型的數組進行映射。等同于調用ServletRequest.getParameterValues(Stringname)。例如,要得到客戶在頁面Habit復選框中選定的值,則有:<c:forEachitems=“${paramValues.Habit}”var=“habit”>${habit</c:forEach>4.header類型是java.util.Map,將請求包頭的名字和單個字符串進行映射。主要用于獲取請求報頭的值,等同于調用ServletRequest.getHeader(Stringname)。例如${header“Host”

}。上一頁下一頁返回8.2表達式語言(EL)5.headerValues

類型是java.util.Map,將請求包頭的名字和一個包含了該包頭所有值的String類型數組進行映射,等同于調用ServletRequest.getHeaders(Stringname)。例如,${headerValues“cookie”}。

6.cookie

類型是java.util.Map,將Cookie的名字和一個Cookie對象進行映射。主要用于獲取Cookie對象,等同于調用HttpServletRequestgetCookics()。例如,要得到一個名為userinfo的Cookie對象,則有${cookie.userinfo.value}.上一頁下一頁返回8.2表達式語言(EL)7.initParam類型是java.util.Map,將上下文的初始化參數的名字和單一的值進行映射。主要用于獲取Web應用程序初始化參數的值,等同于調用ServletContext.getInitParameter(Stringname)。例如,在web.xml文件中,使用<context-param>元素配置了一個,driver參數,要得到它的值則有${initParam.driver}。8.pageScope類型是java.util.Map,將頁面范圍內的屬性名和它的值進行映射。主要用于獲取頁面范圍內的屬性的值。例如,${pageSeope.user,如果user是一個JavaBean對象,還可以直接取出其屬性值,即${pageScope.u}。上一頁下一頁返回8.2表達式語言(EL)9.requestScope類型是java.util.Map,將請求范圍內的屬性名和它的值進行映射。主要用于獲取請求范圍內的屬性的值。例如,${requestScope.user.age}10.sessionScope類型是java.util.Map,將會話范圍內的屬性名和它的值進行映射。主要用于獲取會話范圍內的屬性的值。例如,${sessionScope.user.score}。11.applicationScope類型是java.ulil.Map,將應用程序范圍內的屬性名和它的值進行映射。主要用于獲取應用程序范圍內的屬性的值。例如,${applicationScope.user.email}。上一頁下一頁返回8.2表達式語言(EL)【案例功能】輸出EL中的各種內置對象。【案例目標】掌握EL中常用內置對象的功能與常見使用方法。【案例要點】內置對象的常用方法。【案例步驟】(1)在ch08目錄下編寫implicit.jsp。【源碼】implicit.jsp上一頁下一頁返回8.2表達式語言(EL)上一頁下一頁返回8.2表達式語言(EL)上一頁下一頁返回8.2表達式語言(EL)上一頁下一頁返回8.2表達式語言(EL)上一頁下一頁返回8.2表達式語言(EL)【代碼說明】第9-13行:設置名字相同范圍不同的屬性。(2)部署。(3)啟動Tomcat服務器后,運行結果如圖8-2所示。上一頁下一頁返回8.2表達式語言(EL)8.2.3

變量在EL中,遇到表達式中的參數時,通過PageContext.findAttribute(“allname”)來查找對應的參數。例如,當遇到表達式${userName}時,將按照。age,request,session,applicalion范圍的順序查找userName屬性,如果沒有找到這個屬性,那么返回null。我們可以利用pageScope,rcquestScope,sessionScope和applicationScop指定范圍,例如,${sessionScope.userName}。8.2.4操作符EL定義了以下操作。1.算術操作符在EL中,有5個算術操作符,如表8-2所示。上一頁下一頁返回8.2表達式語言(EL)說明:對于除法運算A{/,div}B,如果A和B為null,返回(long)0;如果A和B的類型是BigDecimal或BigInteger,將被強制轉換為BigDecimal,然后返回A.divide(B,BigDecimal.ROUND

HALF

UP),對于其他情況,則將A和B強制轉換為Double,然后進行相除。2.關系操作符在EL中,有6個關系操作符,如表8-3所示)3.邏輯操作符在EL中,有3個邏輯操作符,如表8-4所示。4.Empty操作符

Empty操作符是一個前綴操作符,用于檢測一個值是否為null或者為empty。錄人,變量A不存在,則${emptyA}為true。上一頁下一頁返回8.2表達式語言(EL)

5.條件操作符EL中的條件操作符是”?:”,例如,${A?B:C},如果A為true,計算B并返回結果,如果A為false,計算C并返回結果。6.操作符的優先級操作符的優先級如下所示(從高到低,從左到右):上一頁下一頁返回8.2表達式語言(EL)8.2.5

案例三:在EL中使用函數在EL中,允許定義和使用函數。函數的語法格式為:ns:func(al,a2,…,an)其中前綴ns必須匹配包含了函數的標簽庫的前綴,func是函數的名字,al,a2,..,an是函數的參數。函數的定義和使用機制類與標簽庫是一樣的。

【案例功能】在EL中使用函數完成參數的中文編碼輸出。【案例目標】掌握在EL中使用函數的方法。【案例要點】標簽描述文件的編寫,web.xml配置文件中標簽的上一頁下一頁返回8.2表達式語言(EL)添加,使用EL在頁面中調用函數。【案例步驟】(1)在ch08源碼目錄下編寫MyFuncs.java,用于處理字符串轉換的邏輯。注意:這個類的函數必須是靜態的。【源碼】MyFuncs.java上一頁下一頁返回8.2表達式語言(EL)上一頁下一頁返回8.2表達式語言(EL)【代碼說明】第8行:通過getBytes方法使用指定的字符集將解碼為字節序列,并將結果存儲到一個新的字節數組中。(2)在WEB-INF文件夾中創建標簽描述文件myfunc.tld。【源碼】myfunc.tld上一頁下一頁返回8.2表達式語言(EL)上一頁下一頁返回8.2表達式語言(EL)【代碼說明】①第7行:為該函數標簽定義一個名字。②第8行:定義一個公開的URI,用于唯一地標識這個標簽庫。③第10行:指定EL函數的名稱。④第11行:指定實現了該函數的Java類。⑤第12行:指定EL函數的原型,遵照Java語言規范。(3)在web.xml中描述這個標簽文件。【源碼】web.xml上一頁下一頁返回8.2表達式語言(EL)上一頁下一頁返回8.2表達式語言(EL)(4)在ch08目錄下編寫測試頁面test.jsp,數據提交使用第7章的ch07/login.html頁面。【源碼】test.jsp上一頁下一頁返回8.2表達式語言(EL)①第2行:uri為“/myfuncs”的標簽,將其前綴設置為myfn。②第5行:myfn:trans表示使用myfn作為前綴所指定的標簽中的trans函數,將客戶端提交的username參數以ISO-8859-1編碼并通過EL輸出(5)啟動Tomcat服務器后,運行結果如圖8-3和圖8-4所示。(6)若不使用該函數,在test.jsp代碼的第5行僅用${param.username}輸出username運行結果為亂碼,如圖8-5所示。上一頁返回8.3JSTL核心標簽庫JSTL核心標簽庫主要有一般用途標簽,條件標簽,迭代標簽和URL相關的標簽,如表8-5所示。在JSP頁面中使用核心標簽庫的標簽,需要用taglib指令指明該標簽庫的路徑:下一頁返回8.3JSTL核心標簽庫8.3.1

一般用途標簽一般標簽包括<c:out>,<c:set>,<c:remove>,<c:catch>。1.<c:out><c:out>用于計算一個表達式并將結果輸出到當前的JspWriter對象。<c:out>標簽的功能類似于JSP的表達式<%=expression%>,或者EL表達式$i{expression}。語法1:沒有標簽體的情況。上一頁下一頁返回8.3JSTL核心標簽庫語法2:有標簽體的情況。<c:out>的標簽體可以使用JSP代碼,<c:out>的屬性如表8-6所示。說明:動態的值是指屬性的值可以是Java表達式,EL表達式或者通過<jsp:attribute>設置的值。示例1:頁面輸出“JSTL標簽測試!<br>”。上一頁下一頁返回8.3JSTL核心標簽庫示例2:頁面輸出“JSTL標簽測試!”(回車)。2.<c:set><c:set>用于在某個范圍Request,Session,Application等中設置。語法1:使用value屬性設置一個特定范圍中的屬性。語法2:在標簽體中設置一個特定范圍中的屬性。上一頁下一頁返回8.3JSTL核心標簽庫語法3:設置某個特定對象的一個屬性。語法4:在標簽體中設置某個特定對象的一個屬性。<c:set>的屬性如表8-7所示上一頁下一頁返回8.3JSTL核心標簽庫示例1;設置userName的屬性為hellking“zhangsan”var=“username”/>示例2;設置password屬性,屬性值在標簽體內。示例3;設置JavaBean-use:的屬性userName的值為zhangsan。3.<c:remove><c:remove>用于刪除某個變量或屬性。語法:上一頁下一頁返回8.3JSTL核心標簽庫<c:remove>的屬性如表8-8所示。示例:刪除session范圍內的IdelTime變量。4.<c:catch><c:catch>用于捕獲嵌套在其標簽體中的操作所派出的異常。語法:<c:catch>的屬性如表8-9所示。上一頁下一頁返回8.3JSTL核心標簽庫說明:<c:catch>允許頁面作者以一種統一的方式來處理任何操作拋出的異常。將可能拋出異常的代碼放在<c:catch>>和<c:catch>>之間,如果其中的代碼拋出異常,異常將被捕獲,并被保存在var所表示的范圍變量中。如果沒有異常發生,而var所標識的范圍變量存在,則它將被移除。示例:結果:頁面輸上一頁下一頁返回8.3JSTL核心標簽庫8.3.2

條件標簽條件標簽包括<c:if>,<c:choose>,<c:when>,<c:otherwise>1.<c:if><c:if>用于進行條件判斷。語法1:沒有標簽體的情況。語法2:有標簽體的情況。上一頁下一頁返回8.3JSTL核心標簽庫<c:if>的屬性如表8-10所示。說明:如果屬性test計算為true那么標簽體將被JSP容器執行。對于語法1,var屬性必須提供,用于保存條件結果的范圍變量做進一步的判斷。示例:根據用戶年齡判斷能否訪問網頁對不起,你的年齡太小,不能訪問該頁!</c:if>2.<c:choose>.<c:when>.<c:otherwise><c:choose>,<c:when>,<c:otherwise>一起實現互斥條件的執行。語法:上一頁下一頁返回8.3JSTL核心標簽庫上一頁下一頁返回8.3JSTL核心標簽庫

說明:在運行時,判斷<c:when>標簽的測試條件是否為true,第一個測試條件為true的<c:when>標簽的標簽體被執行;如果沒有滿足條件的<c:when>標簽,那么<c:otherwise>的標簽體將被執行。示例:根據當前時間向客戶問好上一頁下一頁返回8.3JSTL核心標簽庫8.3.3

迭代標簽迭代標簽有<c:forEach>和<c:forTokens>。<c:forEach><c:forEach>用于對包含了多個對象的集合進行迭代,重復執行它的標簽體,或者重復迭代固定的次數。語法1:對包含了一系列的集合進行迭代。上一頁下一頁返回8.3JSTL核心標簽庫語法2:迭代固定的次數<c:forEach>的屬性如表8-11所示。說明:假若有begin屬性時,begin必須大于或等于0;假若有end屬性時,必須大于begin;假若有step屬性時,step必須大于或等于0。上一頁下一頁返回8.3JSTL核心標簽庫示例:循環輸出指定用戶信息。上一頁下一頁返回8.3JSTL核心標簽庫2.<c:forTokens><c:forTokens>用于迭代字符串中有分隔符分隔的各成員。語法:<c:forTokends>的屬性如表8-12所示。上一頁下一頁返回8.3JSTL核心標簽庫示例:分隔字符串。上一頁下一頁返回8.3JSTL核心標簽庫8.3.4URL相關標簽URL相關標簽包括頁面包含標簽<c:import>、超鏈接標簽<c:url>,重定向標簽<c:redirect>和參數傳遞標簽<c:param>。1.<c:param><c:pasatn>標簽的作用是為<c:import>,<c:url>,<c:redirect>標簽添加請求參數。語法1:在value屬性中指定參數值。<c:paratnname=“name”value=“value”/>語法2:在標簽體中指定參數。上一頁下一頁返回8.3JSTL核心標簽庫<c:paratn>的屬性如表8-13所示。2.<c:import><c:import>用于導入一個機遇URL的資源。這個標簽類似于<jsp:include>動作元素。<c:import標簽不僅可以在頁面中導入同一個Web應用程序下的資源,還可以導入不同Web應用程序下的資源,甚至是其他網站的資源。上一頁下一頁返回8.3JSTL核心標簽庫語法1:資源的內容作為String對象被導出。語法2:資源的內容作為Reader對象被導出。上一頁下一頁返回8.3JSTL核心標簽庫<c:import>的屬性如表8-14所示。示例:導入Web應用程序ch07中的login.jsp頁面,并向頁面傳遞參數。上一頁下一頁返回8.3JSTL核心標簽庫3.<c:url><c:url>標簽主要用來產生一個URL。語法1:沒有標簽體。語法2:有標簽體,并在標簽體中指定參數。上一頁下一頁返回8.3JSTL核心標簽庫<c:url>的屬性如表8-15所示。示例1:生成一個URL鏈接地址。示例2:生成一個帶參數的URL地址。示例2代碼將生成http://www.eqepc.Cn?

message=Hello的URL地址。上一頁下一頁返回8.3JSTL核心標簽庫4.<c:redirect><c:redirect>標簽將客戶的請求重定向到另一個資源。語法1:沒有標簽體語法2:有標簽體,并在標簽體中指定參數。<c:url>的屬性如表8-16所示。上一頁下一頁返回8.3JSTL核心標簽庫示例:以上代碼實現將頁面跳轉到getParam.jsp,并向新的頁面傳遞一個名為paramName值為Hello的參數。上一頁下一頁返回8.3JSTL核心標簽庫8.3.5

案例四:使用JSTL核心標簽庫【案例功能】使用JSTL核心標簽庫中的標簽實現JSP頁面的信息輸出【案例目標】掌握在JSTL核心標簽庫中常見標簽的用法。【案例要點】各種標簽中的屬性的含義和功能。【案例步驟】(1)在ch08源碼目錄下編寫頁面JSTLCoreTag.Jsp。【源碼】JSTLCoreTag.jsp上一頁下一頁返回8.3JSTL核心標簽庫上一頁下一頁返回8.3JSTL核心標簽庫上一頁下一頁返回8.3JSTL核心標簽庫上一頁下一頁返回8.3JSTL核心標簽庫上一頁下一頁返回8.3JSTL核心標簽庫上一頁下一頁返回8.3JSTL核心標簽庫上一頁下一頁返回8.3JSTL核心標簽庫上一頁下一頁返回8.3JSTL核心標簽庫上一頁下一頁返回8.3JSTL核心標簽庫【代碼說明】①第2行:用taglib指令指明核心標簽庫的路徑。②第16行:使用<c:set>標簽設置“sessionVariable”變量的值為“sessionVariableValue”。③第26-30行:使用<c:out>標簽的兩種表示方法輸出“sessionVariable”變量的值。④第39行:使用<c:remove>標簽刪除變量“sessionVariable”。⑤第57行:使用<c:forEach>標簽循環輸出數字1到l0。⑥第67-68行:使用<c:forTokens>標簽以“#,;4”作為分隔符,以第3個字符開始,第10個字符結束,步長為2的循環提取字符串“0#1,2,34,5,6#,7;8,9,A,B,C#,;4D”中的字符。上一頁下一頁返回8.3JSTL核心標簽庫⑦第81-85行:使用<c:if>標簽判斷變量“sessionVariable”是否為空并輸出相應信息。⑧第103-110行:使用<c:choose>,<c:when>,<c:otherwise>標簽判斷變量“sessionVariable”變量的情況并作相應輸出。⑨第114-120行:使用<c:forEach>標簽循環輸出10個復選框。⑩第132-136行:使用<c:forEach>標簽接提交的被選中的復選框。(2)部署。(3)啟動Tomcat服務器,運行效果如圖8-6所示。上一頁返回8.4

其他JSTL標簽8.4.1JSTL國際化標簽庫在不同國家和地區,對數字和貨幣等的表示有所不同,在JSTL中提供了fml標簽庫來處理國際化和格式的問題。在JSP頁面中使用國際化標簽庫的標簽,需要用taglib指令指明該標簽庫的路徑:1.<fmt:setLocale>作用:設定用戶的語言區地區。語法:下一頁返回8.4

其他JSTL標簽屬性如下(1)value:地區代碼。其中最少要有兩個字母的語言代碼,如zh,en,然后也可以再加上兩個字母的國家和地區代碼,如:US,TW,兩者可以由“_”或“

”相連接起來,例如,zh

TW,zh

CN,en,en

US。假若value為null時,則使用執行中的默認地域(locale)。(2)varient:供貨商或瀏覽器的規格,例,WIN代表Windows,Mac代表Macintosh。(3)scope:地區設定的套用范圍。2.<fmt:requestEncoding>作用:設定字符串編碼,功能和ServletRequest.setCharacterEncoding(

)相同。上一頁下一頁返回8.4

其他JSTL標簽語法:屬性:value為字符串編碼,當我們設定value為GB2312時,表示將所有傳送過來的字符串皆用GB2312編碼處理,如果沒有設定value屬性,則它將會自動去尋找合適的編碼方式。3.<fmt:message>作用:從指定的資源中把特定關鍵字中的值抓取出來。語法如下。上一頁下一頁返回8.4

其他JSTL標簽上一頁下一頁返回8.4

其他JSTL標簽屬性如下。(1)key:索引。(2)bundle:使用的數據來源。(3)var:用來儲存國際化信息。(4)scope;var變量的JSP范圍。4.<fmt:param>作用:動態設定數據來源中抓出內容的參數。語法如下。(1)通過value屬性設定參數值。上一頁下一頁返回8.4

其他JSTL標簽(2)通過本體內容設定參數值。<fmt:param>本體內容</fmt:param>

示例:Str3=todayis{0,date}其中{0,date}表示為一個動態變量,0代表第一個動態變量;date代表該動態變量的類型。5.<fmt:bundle>作用:設定本體內容的數據來源。上一頁下一頁返回8.4

其他JSTL標簽語法:<fmt:bundlebasename=“basename”

prefix=“prefix”>本體內容</fmt:bundle>屬性如下。(1)basename

:要使用的資源名稱,如果我們的properties文件為Resource,properties,那么basename的值為Resource,basename的值千萬不可有任何文件類型。(2)prefix;設定前置關鍵字。例,當properties中內容如下。requestinfo.label.method=Method;requestinfo.label.requesturi=RequestURI;

上一頁下一頁返回8.4

其他JSTL標簽那么我們可以寫成如下方式將其內容顯示出來。6.<fmt:setBundle>作用:設定默認的數據來源,或者也可以將它設定到屬性范圍中。語法:上一頁下一頁返回8.4

其他JSTL標簽屬性如下。(1)basename:要使用的資源名稱。(2)var:儲存資源的名稱。(3)scope:var變量的JSP范圍。說明:basename設定要使用的數據源,和<fmt:bundle>用法相同。如果沒有設定var時,那么設定好的數據來源將會變成默認的數據來源,使在同一網頁或同一屬性范圍中<fmt:message>都可以直接默認使用此數據來源。相反,如果設定var時,那么將會把此數據來源存人varName中,當<fmt:message>要使用時,必須使用bundle這個屬性來指定。舉例如下。上一頁下一頁返回8.4

其他JSTL標簽如沒有設定var時,則只需寫成如下。上一頁下一頁返回8.4

其他JSTL標簽一般<fmt:bundle>和<fmt:setBundle>都可以搭配<fmt:setLocale>使用,當我們有多種語言的數據業來源時,可以將文件名取成ResourcezhTW.properties,Resourceen.properties和Resouce.properties當我們將區域設定為zhTW,那么使用<fmt:setBundle>或<fmt:bundle>時,將會默認讀取ResourcezhTW.properties資源文件,如果<fmt:setLocale>設定為en時,那么會默認抓取Resouce

en.properties來使用,最后如果設定的區域沒有符合的文件名,將使用Resouce.properties來當做數據來源。7.<fmt:formatNumber>作用:依據設定的區域將數字改為適當的格式。上一頁下一頁返回8.4

其他JSTL標簽語法:示例:8.<fmt:parseNumber>作用:將字符串類型的數字,貨幣或百分比,都轉為數字類型。語法:上一頁下一頁返回8.4

其他JSTL標簽示例:9.<fmt:formatDate>作用:格式化日期和時間。語法:上一頁下一頁返回8.4

其他JSTL標簽示例:10.<fmt:parseDate>作用:將字符串類型的時間或日期都轉為日期時間類型。語法:示例:11.<fmt:setTimeZone>作用:設定默認時區或是將時區儲存至屬性范圍中,方便以后使用。語法:上一頁下一頁返回8.4

其他JSTL標簽屬性valut:可以為EST,CST,MST和PST,默認為GMT時區。示例:12.<fmt:timeZone>作用:設定暫時的時區。語法:示例:上一頁下一頁返回8.4

其他JSTL標簽8.4.2JSTL數據庫標簽庫數據庫開發在JSP中占有非常重要的地位,JSTL也提供了對數據庫操作的支持,通過JSTL數據庫中的標簽可以簡化數據庫操作,提高數據庫開發的效率和程序的可維護性。在JSP頁面中使用數據庫標簽庫的標簽,需要用taglib指令指明該標簽庫的路徑:1.<sql:setDataSource>作用:用來設定數據來源(DataSource)。語法如下。(1)直接使用已存在的數據來源。上一頁下一頁返回8.4

其他JSTL標簽(2)使用JDBC方式,建立數據庫聯機。上一頁下一頁返回8.4

其他JSTL標簽示例如下。上一頁下一頁返回8.4

其他JSTL標簽2.<sql:query>作用:查詢數據庫的數據。語法如下。(1)沒有本體內容。上一頁下一頁返回8.4

其他JSTL標簽(2)本體內容為查詢指令。上一頁下一頁返回8.4

其他JSTL標簽屬性如下。(1)sql:SQL語句(select)。(2)dataSource:數據來源。(3)maxRows;設定最多可暫存的數據筆數。(4)startRow;設定數據從第兒筆開始,以0為第一筆數據。(5)var:儲存查詢結果,必需的。(6)

scope:var變量的JSP范圍。查詢結果存放在指定名稱的屬性中后,可以通過以下屬性訪問查詢結果。(1)rows:以字段名稱當做索引的查詢結果。(2)

rowsByIndex:以數字當做索引的查詢結果。上一頁下一頁返回8.4

其他JSTL標簽(3)columnNames:字段名稱。(4)rowCount:查詢到的數據筆數。(5)limitedByMaxRows:取出最大數據筆數的限制。3.<sql:update>作用:執行修改操作(update,delete,createtable均可)。語法如下。(1)沒有本體內容。上一頁下一頁返回8.4

其他JSTL標簽(2)本體內容為查詢指令。上一頁下一頁返回8.4

其他JSTL標簽屬性如下。(1)sql;SQL語法(update,insert,delet…)。(2)dataSource:數據來源。(3)var:儲存改變的數據筆數。(4)scope;var變量的JSP范圍。4.<sql:transaction>作用:提供事務支持,保證多個數據操作的完整性。<sql:

transaction>主要是將所有必須同時執行的交易放在它的本體內容中,當本體內容有錯誤發生時,將不會執行任何一個SQL語句,所以可保障交易機制的安全性。上一頁下一頁返回8.4

其他JSTL標簽語法:上一頁下一頁返回8.4

其他JSTL標簽8.4.3XML操作標簽庫JSTL提供了一組專門處理XML文檔的標簽,這些標簽提供的功能可以滿足基本的XML文檔處理需要,使用這些標簽比掌握復雜的操作XML文檔的API接口容易得多。在JSP頁面中使用XML標簽庫的標簽,需要用taglib指令指明該標簽庫的路徑:1.<x:parse>作用:解析xml文件。語法如下。上一頁下一頁返回8.4

其他JSTL標簽上一頁下一頁返回8.4

其他JSTL標簽屬性如下。(1)doc:xml文件。(2)var:儲存解析后的XML文件。(3)scope:var變量的JSP范圍。示例如下。上一頁下一頁返回8.4

其他JSTL標簽2.<x:out>作用:取出XML中的字符串。語法:屬性如下:(1)select:XPath語句。(2)escapeXml:是否轉換特殊字符。示例:上一頁下一頁返回8.4

其他JSTL標簽顯示<name>的內容。上一頁下一頁返回8.4

其他JSTL標簽3.<x:set>作用:取出XML中的字符串,儲存至屬性范圍中。語法:屬性如下:(1)select:XPath語句。(2)var:將從XML文件中取得的內容儲存至varName中。(3)scope:var變量的JSP范圍示例:上一頁下一頁返回8.4

其他JSTL標簽顯示<name>的內容。上一頁下一頁返回8.4

其他JSTL標簽8.4.4Functions操作標簽庫Functions標簽庫是在JSTL中定義的標準EL函數集。在Functions標簽庫中定義的函數,基本上都是對字符串進行操作的函數。在JSP頁面中使用國際化標簽庫的標簽,需要用taglib指令指明該標簽庫的路徑:1.fn:contains(

)作用:判斷某字符串是否在一字符串之中。語法:${fn:contains(string,substring)}=

>boolean屬性如下。上一頁下一頁返回8.4

其他JSTL標簽(1)string:原輸入的字符串。(2)substring:測試用的字符串。(3)Result:回傳string是否包含substring,若有,則回傳true;若無,則回傳false。2.fn:containslgnoreCase(

)作用:判斷某字符串是否在已有字符串之中,并忽略其大小寫。語法:${fn:containslgnoreCase(string,substring)}=

>Boolean3.fn:startsWith(string,prefix)作用:判斷一字符串是否以某一字符串為開頭。語法:${fn:startsWith(string,prefix)}=

>Boolean上一頁下一頁返回8.4

其他JSTL標簽4.fn:endsWith(string,suffix)作用:判斷一字符串是否以某一字符串為結尾。語法:${fn:endsWith(string,suffix)}=

>Boolean5.fn:escapeXml(String)作用:用來轉換轉義符。例如,將<,>,,”和&轉換成<,>'"和&。語法:${fn:escapeXml(String)=

>String6.fn:indexOf(string,substring)作用:回傳某字符串到一字符串第一次吻合的位置。語法:${fn:indexOf(string,substring)}=

>int上一頁下一頁返回8.4

其他JSTL標簽7.fn:split(string,delimiters)

溫馨提示

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

評論

0/150

提交評論