第6章 JSTL標籤建立JSP程式 6-1 JSTL標籤庫 6-2 核心標籤庫的一般用途標籤 6-3 核心標籤庫的條件標籤

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

第7章 JSP的表單處理與Cookie 7-1 JSP狀態管理的基礎 7-2 URL參數傳遞 7-3 HTML表單欄位處理
08 CSS 基本語法 8-1 CSS 的演進 8-2 CSS 樣式規則與選擇器 8-3 連結HTML 文件與CSS 樣式表
JSTL标签库 讲师:梁 桐 北京传智播客教育 1。缓存数据 2。处理字符乱码 3。监听器中的定时器
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
File Access 井民全製作.
Hadoop 單機設定與啟動 step 1. 設定登入免密碼 step 2. 安裝java step 3. 下載安裝Hadoop
第4章 JSP元素與隱含物件 4-1 JSP的腳本元素 4-2 JSP的指引元素 4-3 JSP的動作元素 4-4 JSP的隱含物件
Chapter 5 迴圈.
Hello World 體驗實作第一個JSP程式.
LINQ 建國科技大學 資管系 饒瑞佶.
专题4:JSP脚本和指令.
資料結構設計與C++程式應用 Fundamentals of Data Structures and Their Applications Using C++ 第3章 佇列 資料結構設計與C++程式應用.
第2章 HTML、XML和XHTML實務 2-1 HTML的基礎 2-2 HTML標籤 2-3 XML與XSLT的基礎
連結資料庫 ACCESS MSSQL.
JDK 安裝教學 (for Win7) Soochow University
第八章 利用SELECT查詢資料.
客戶端的檔案上傳 HtmlInputFile檔案控制項 上傳單一檔案 同時上傳多個檔案.
Working with Databases (II) 靜宜大學資管系 楊子青
C語言簡介 日期 : 2018/12/2.
生物資訊程式語言應用 Part 3 Perl Language.
SQL Stored Procedure SQL 預存程序.
安裝JDK 安裝Eclipse Eclipse 中文化
Text To Speech (TTS, 文字轉語音) 靜宜大學資管系 楊子青
網頁切換移轉 JS vs. ASP.NET.
App Inventor2呼叫PHP存取MySQL
檔案與磁碟的基本介紹.
第二章 SPSS的使用 2.1 啟動SPSS系統 2.2 結束SPSS系統 2.3 資料分析之相關檔案 2.4 如何使用SPSS軟體.
JSTL 标签 JSTL 标签种类 说 明 核心标签 包含JSTL核心操作所需的标签,例如数据输出、循环流程控制以及URL操作等
Java 程式設計 講師:FrankLin.
網頁切換移轉 JS vs. ASP.NET.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Chap3 Linked List 鏈結串列.
表單(Form).
第一單元 建立java 程式.
VS.NET 2003 IDE.
建立一 function s (type) 可以用來繪製cyclic-harmonic curves
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
Pocket Access.
第3章 Java語法的JSP程式 3-1 Java語言的基礎 3-2 JSP程式的基本架構 3-3 Java的變數與資料型態
第 19 章 XML記憶體執行模式.
雲端計算.
輸入&輸出 函數 P20~P21.
Java Server Faces 参考书籍 Java Server Faces 核心编程.
CH05. 選擇敘述.
Google協作平台+檔案分享(FileZilla+網路芳鄰)
期末考.
撰寫MATLAB基礎財務程式 柯婷瑱.
挑戰C++程式語言 ──第8章 進一步談字元與字串
如何使用Gene Ontology 網址:
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
Text To Speech (TTS, 文字轉語音) 靜宜大學資管系 楊子青
MicroSim pspice.
利用 EditorConfig 自訂文字編輯器設定
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
挑戰C++程式語言 ──第7章 輸入與輸出.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
MiRanda Java Interface v1.0的使用方法
陣列與結構.
國立台灣大學 關懷弱勢族群電腦課程 By 資訊工程 黃振修
資料結構與C++程式設計進階 期末考 講師:林業峻 CSIE, NTU 7/ 15, 2010.
Cloud Training Material- 事件 Sherman Wang
連結資料庫 MYSQL.
第五章 自訂佈景主題與文字處理 講授者:詹雅愔.
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
SQLite資料庫 靜宜大學資管系 楊子青.
Chapter 4 Multi-Threads (多執行緒).
Unix指令4-文字編輯與程式撰寫.
Develop and Build Drives by Visual C++ IDE
InputStreamReader Console Scanner
Presentation transcript:

第6章 JSTL標籤建立JSP程式 6-1 JSTL標籤庫 6-2 核心標籤庫的一般用途標籤 6-3 核心標籤庫的條件標籤 6-4 核心標籤庫的迴圈標籤 6-5 核心標籤庫的URL處理標籤 6-6 格式標籤庫的日期與數值格式 6-7 格式標籤庫的國際化設定

6-1 JSTL標籤庫 6-1-1 JSTL 1.1版標籤庫 6-1-2 在JSP程式使用JSTL標籤

6-1-1 JSTL 1.1版標籤庫-種類 JSTL 1.1版標籤庫(Tag Libraries)依其不同用途,可以分為五種標籤庫,如下表所示:

6-1-1 JSTL 1.1版標籤庫-說明1 核心標籤庫(Core) 核心標籤庫包含EL範圍變數的建立和刪除標籤、錯誤處理和一般程式語言流程控制的條件和迴圈標籤。 URL處理標籤可以使用在交談期追蹤(Session Tracking),和執行階段插入指定URL網址的網頁或轉址到其它URL網址。 格式標籤庫(I18N Formattiong) 格式標籤庫提供資料格式和剖析的相關標籤,支援國際化格式I18N,以便符合不同地區的資料格式差異,包含國際化編碼、訊息、數值和日期格式等相關標籤。

6-1-1 JSTL 1.1版標籤庫-說明2 XML處理標籤庫(XML Processing) XML處理標籤庫如同其名,就是在處理XML文件、支援XML剖析、XSTL轉換和XPath取出指定資料。 資料庫存取標籤庫(Database Access) 資料庫存取標籤庫提供標籤執行SQL指令來存取關聯式資料庫,可以在JSP程式輕鬆執行SQL查詢、更新和取得查詢結果,並且支援交易(Transaction)處理的相關標籤。 函數標籤庫(Functions) 函數標籤庫提供字串處理的相關函數,可以在EL運算式直接使用JSTL標籤庫的函數來執行字串處理。

6-1-2 在JSP程式使用JSTL標籤 在JSP程式使用JSTL標籤庫需要使用taglib指引元素匯入指定URI的標籤庫。例如:匯入核心標籤庫的taglib指令,如下所示: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 上述指令的uri屬性是標籤庫的預設URI,prefix屬性對應字首(Prefix)。在匯入標籤庫後,就可以使用JSTL核心標籤庫,其基本語法如下所示: <c:tagname attribute=" "…> 上述標籤以字首"c"開頭,在":"後是標籤名稱和屬性清單。

6-2 核心標籤庫的一般用途標籤 6-2-1 <c:out>標籤輸出資料 6-2-2 <c:set>標籤建立變數 6-2-3 <c:remove>標籤移除變數

6-2-1 <c:out>標籤輸出資料-語法 <c:out>標籤可以將value屬性值的文字值或EL運算式進行運算,將運算結果的null或String字串文字值送到瀏覽程式顯示,其功能類似JSP的Expression元素。其基本語法如下所示: <c:out value="運算式" escapeXml="boolean“ default="運算式"/>

6-2-1 <c:out>標籤輸出資料-範例 <c:out>標籤的default屬性可以用來作為一種錯誤處理機制,當value屬性值為null時,就顯示default屬性值,其寫法有兩種,如下所示: <c:out value="${param.name}" default="網頁設計"/> <c:out value="${myName}"> 陳會安 </c:out> 上述default屬性值可以是<c:out>標籤的屬性,或是位在<c:out>和</c:out>標籤之中的字串內容。

6-2-2 <c:set>標籤建立變數-語法 JSTL的<c:set>標籤提供標籤語法來建立和指定範圍變數值,其基本語法如下所示: <c:set var="name" value="運算式" scope="scope" target="beans_object“ property="property_name"/>

6-2-2 <c:set>標籤建立變數-範例1 建立和指定範圍變數值 在<c:set>標籤是使用var、value和scope屬性建立範圍變數,如下所示: <c:set var="code" value="02"/> <c:set var="number"> 02-22222222 </c:set> <c:set var="phone" value="(${code})-${number}"/> 上述<c:set>標籤建立範圍變數areacode、number和phone,phone變數值是EL運算式,因為沒有使用scope屬性,所以預設為Page範圍變數。

6-2-2 <c:set>標籤建立變數-範例2 修改JavaBeans或Map物件的屬性 <c:set>標籤修改物件屬性是使用target、property和value屬性,如下所示: <jsp:useBean id="list" class="java.util.TreeMap" /> <c:set target="${list}" property="Joe" value="陳會安" /> <c:set target="${list}" property="Tom" value="張無忌" /> 上述標籤是使用<jsp:useBean>動作元素建立TreeMap集合物件,然後使用<c:set>標籤新增集合物件的2個元素,property屬性的Joe和Tom是鍵,value屬性是值。

6-2-3 <c:remove>標籤移除變數-說明 <c:remove var="name" scope="scope"/>

6-2-3 <c:remove>標籤移除變數-範例 <c:remove>標籤如果沒有指定scope屬性,就是刪除Page範圍的變數,如下所示: <c:remove var="var2"/> 上述標籤刪除Page範圍名為var2的變數。因為不同範圍可能擁有同名的變數,所以,刪除指定範圍的變數請使用scope屬性。例如:刪除Request範圍的var1變數,如下所示: <c:remove var="var1" scope="request"/>

6-3 核心標籤庫的條件標籤 6-3-1 <c:if>標籤的是否選條件 6-3-2 <c:choose>標籤的多選一條件 6-3-3 巢狀的條件標籤

6-3-1 <c:if>標籤的是否選條件-語法 <c:if>標籤類似Java的if條件敘述,可以建立是否選條件,其基本語法如下所示: <c:if test="運算式" var="name" scope="scope"> Body </c:if> 上述<c:if>標籤的條件如果成立,就執行<c:if>和</c:if>標籤中的Body部分;不成立,就不執行。

6-3-1 <c:if>標籤的是否選條件-語法 <c:if>標籤的test屬性是一個條件的EL運算式,如果運算結果為true,就執行之中的Body內容,如下所示: <c:if test="${score >= 60}"> JSP網頁製作徹底研究-及格!<br> </c:if> 上述test屬性的條件如為true,就顯示之中的標籤內容。如果在<c:if>標籤使用var和scope屬性,即可使用變數記錄條件判斷結果為true或 false。

6-3-2 <c:choose>標籤的多選一條件-語法 <c:choose>標籤類似Java的switch條件敘述,可以建立多選一條件,其基本語法如下所示: <c:choose> <c:when test="運算式"> Body </c:when> ………… <c:otherwise> </c:otherwise> </c:choose>

6-3-2 <c:choose>標籤的多選一條件-範例 例如:GPA成績範圍判斷的<c:choose>標籤,如下所示: <c:choose> <c:when test="${grade == 'A'}"> 學生成績超過80分<br> </c:when> <c:when test="${grade == 'B'}"> 學生成績為70~79分<br> ……… <c:otherwise> 學生成績低於60分<br> </c:otherwise> </c:choose>

6-3-3 巢狀的條件標籤 在<c:if>和<c:when>條件標籤之中還可以擁有其它<c:if>和<c:choose>標籤,稱為巢狀條件標籤,如下所示: <c:if test="${age >= 1 && age <= 100}"> <c:choose> <c:when test="${age <= 18}"> 學生票:12元<br> </c:when> <c:when test="${age < 65 && age > 18}"> 普通票:15元<br> <c:otherwise> 敬老票:8元<br> </c:otherwise> </c:choose> </c:if>

6-4 核心標籤庫的迴圈標籤 6-4-1 <c:forEach>標籤 6-4-2 <c:forTokens>標籤 6-4-3 迴圈標籤的varStatus屬性

6-4-1 <c:forEach>標籤-語法 <c:forEach>迴圈標籤可以取出陣列或集合物件的所有元素,也可以如同Java的for迴圈敘述成為一個計數迴圈,其基本語法如下所示: <c:forEach var="name" items="運算式" begin="運算式" end="運算式" step="運算式"> Body </c:forEach>

6-4-1 <c:forEach>標籤-語法說明 <c:forEach>標籤如果指定items屬性的陣列或集合物件元素,這種操作稱為「迭代」(Iteration),即每執行一次迴圈取出一個元素儲存在var屬性的範圍變數,然後執行Body內容。 當標籤指定begin、end和step屬性,就可以限制迴圈只取出從begin的開始元素,到end的結束元素,以step的增量執行迭代(Iteration)。 若沒有指定items屬性,begin、end和step屬性就是一種計數迴圈。

6-4-1 <c:forEach>標籤-範例1 取出集合物件的所有元素 <c:forEach>標籤可以取出Java集合物件的所有元素。例如:取出TreeMap物件list的所有元素,如下所示: <c:forEach var="item" items="${list}"> [<c:out value="${item.key}"/>] (<c:out value="${list[item.key]}"/>) </c:forEach> 上述var屬性的item變數可以取出每一次迴圈的集合物件元素,然後顯示元素的鍵和值。

6-4-1 <c:forEach>標籤-範例2 取出指定範圍的陣列元素 在<c:forEach>標籤加上begin、end和step屬性就可以取出陣列的部分元素,如下所示: <c:forEach var="item" items="${array}" begin="1" end="2" step="1"> [<c:out value="${item}"/>] </c:forEach> 上述var屬性的item變數可以取出每一次迴圈的陣列元素,其範圍是從1~2,即顯示第2到第3個陣列元素。

6-4-1 <c:forEach>標籤-範例3 計數迴圈 在<c:forEach>標籤如果沒有items屬性,而只有指定begin、end和step屬性就成為一個計數迴圈。例如:顯示1~5的計數迴圈,如下所示: <c:forEach var="current" begin="1" end="5" step="1"> [<c:out value="${current}"/>] </c:forEach>

6-4-2 <c:forTokens>標籤-語法 <c:forTokens>標籤可以將範圍變數的字串使用分隔字元(Delimiter)來進行分割,我們可以將它視為是一種在字串中執行的迭代(Iteration),其基本語法如下所示: <c:forTokens var="name" items="運算式“ delims="運算式" begin="運算式" end="運算式" step="運算式"> Body </c:forTokens>

6-4-2 <c:forTokens>標籤-語法說明 <c:forTokens>標籤的items屬性是一個擁有delims屬性分隔字元的字串,每執行一次迴圈取出一個以分隔字元分割出的元素,然後將它儲存在var屬性的範圍變數,然後執行Body內容。 在標籤如果同時指定begin、end和step屬性,將限制取出begin的開始元素,到end的結束元素,以step的增量執行迭代(Iteration)。

6-4-2 <c:forTokens>標籤-範例 <c:Tokens>標籤的begin、end和step屬性與<c:forEach>標籤相同,請參閱上一節的說明。例如:使用","分隔字元來分割"1,2,3:4:5,6#7,8"字串的<c:forTokens>標籤,如下所示: <c:forTokens var="token" items="${str}" delims=","> [<c:out value="${token}"/>] </c:forTokens>

6-4-3 迴圈標籤的varStatus屬性-說明 <c:forEach>和<c:forTokens>標籤都擁有varStatus屬性,可以顯示迴圈執行狀態,當使用varStatus屬性將狀態存入指定的範圍變數status後,就可以使用相關屬性取得迴圈狀態,如下所示: <c:forEach var="item" items="${list}" varStatus="status"> [<c:out value="${item.key}"/>] (<c:out value="${list[item.key]}"/>)<br> <b>index:</b> ${status.index} <b>count:</b> ${status.count} <b>first:</b> ${status.first} <b>last: </b> ${status.last}<br> </c:forEach>

6-4-3 迴圈標籤的varStatus屬性-屬性說明 index、count、first和last屬性的狀態說明,如下表所示:

6-5 核心標籤庫的URL處理標籤 6-5-1 <c:url>標籤建立URL網址 6-5-2 <c:redirect>標籤轉址到其它網址 6-5-3 <c:import>標籤匯入URL

6-5-1 <c:url>標籤建立URL網址-語法 <c:url>標籤可以執行編碼來建立正確的URL網址字串,以免URL網址中的空白字元或特殊符號,造成Web伺服器無法識別的錯誤,其基本語法如下所示: <c:url value="URL" context="/Web應用程式" var="name" scope="scope"> <c:param name="name1“ value="value1"/> ………… <c:param name="nameN“ value="valueN"/> </c:url>

6-5-1 <c:url>標籤建立URL網址-範例 <c:url>標籤需要使用<c:param>標籤建立擁有參數的URL網址,如下所示: <c:url value="/Ch4_2_1.jsp" context="/Ch04"> <c:param name="name" value="joe"/> <c:param name="email" value="hueyan@ms2.hinet.net"/> </c:url> 上述value屬性的基礎網址可以是HTTP通訊協定的網址。context屬性表示是位在其它Web應用程式,以此例是/Ch04,var屬性可以將處理後的URL網址存入此範圍變數。

6-5-2 <c:redirect>標籤轉址到其它網址-語法 <c:redirect>標籤可以轉址到其它URL網址或是其它Web應用程式的JSP程式,並且傳遞參數,其基本語法如下所示: <c:redirect url="URL" context="/Web應用程式"> <c:param name="name1" value="value1"/> ………… <c:param name="nameN“ value="valueN"/> </c:redirect>

6-5-2 <c:redirect>標籤轉址到其它網址-範例 當<c:redirect>標籤轉址到其它網址時,也可以傳遞參數,就是使用<c:param>標籤新增這些參數,如下所示: <c:redirect url="Ch6_5_2.jsp"> <c:param name="type" value="2"/> </c:redirect> 上述url屬性指定轉址到HTTP通訊協定的URL網址,例如:http://www.hinet.net,或是JSP程式的相對路徑,內含<c:param>標籤的URL參數type。

6-5-3 <c:import>標籤匯入URL-語法 <c:import>標籤是一個加強版本的<jsp:include>動作元素,可以在JSP程式的執行階段將其它網頁內容插入JSP程式,同樣也可以傳遞參數,其基本語法如下所示: <c:import url="URL" context="/Web應用程式" charEncoding="運算式" var="name“ scope-"scope"> <c:param name="name1“ value="value1"/> ………… </c:import>

6-5-3 <c:import>標籤匯入URL-範例 <c:import>標籤的url屬性支援FTP通訊協定,假設FTP站台的網址為ftp://ftp.company.com,在其根目錄有一個名為test.txt,此時在JSP網頁插入FTP檔案的標籤,如下所示: <c:import url="ftp://ftp.company.com/test.txt"/> 如果在目前Web應用程式的根目錄下有一個名為Ch6_5_3.txt的文字檔案,我們也可以使用<c:import>標籤來插入,如下所示: <c:import url="/Ch6_5_3.txt" charEncoding="MS950"/>

6-6 格式標籤庫的日期與數值格式 6-6-1 日期格式標籤 6-6-2 數值格式標籤

6-6 格式標籤庫的日期與數值格式 JSTL的格式標籤庫提供格式化日期或數值資料的相關標籤,可以將字串資料剖析轉換成日期或數值資料。在JSP程式請先使用taglib指引元素匯入格式標籤庫的URI,如下所示: <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt“ prefix="fmt" %>

6-6-1 日期格式標籤-<fmt:formatDate>標籤(語法) <fmt:formatDate value="運算式“ timeZone="運算式" type="欄位" dateStyle="日期格式" timeStyle="時間樣式" pattern="格式範本" var="name" scope="scope"/> 上述<fmt:formatDate>標籤可以將value屬性的日期/時間資料,以指定的時區、樣式或範本來顯示,或是存入var屬性的範圍變數。

6-6-1 日期格式標籤-<fmt:formatDate>標籤(範例) 在JSP程式取得java.util.Date物件now後,就可以使用<fmt:formatDate>標籤格式化輸出的日期/時間資料,如下所示: <jsp:useBean id="now" class="java.util.Date"/> <fmt:formatDate type="time“ value="${now}"/> <fmt:formatDate type="date“ value="${now}" dateStyle="full"/>

6-6-1 日期格式標籤-<fmt:parseDate>標籤(語法) <fmt:parseDate value="運算式“ timeZone="運算式" type="欄位" dateStyle="日期格式" timeStyle="時間樣式" pattern="格式範本" parseLocal="運算式" var="name" scope="scope"/>

6-6-1 日期格式標籤-<fmt:parseDate>標籤(範例) JSP程式在指定日期/時間的字串變數current,就可以使用<fmt:parseDate>標籤剖析日期/時間資料,如下所示: <c:set var="current" value="11/01/2004"/> <fmt:parseDate var="pubDate“ value="${current}" pattern="MM/dd/yy"/> 上述標籤使用範本字串MM/dd/yy來剖析日期/時間資料,然後將值儲存到pubDate變數。

6-6-2 數值格式標籤-<fmt:formatNumber>標籤(語法) <fmt:formatNumber value="運算式" type="種類" groupingUsed="運算式“ pattern="格式範本" currencyCode="運算式" currencySymbol="運算式" maxIntegerDigits="運算式" minIntegerDigits="運算式" maxFractionDigits="運算式" minFractionDigits="運算式" var="name" scope="scope"/>

6-6-2 數值格式標籤-<fmt:formatNumber>標籤(範例) 在JSP程式可以使用<fmt:formatNumber>標籤來格式化輸出數值資料,如下所示: <fmt:formatNumber value="${amount}" type="number"/>/ <fmt:formatNumber value="${total}" maxIntegerDigits="7" minIntegerDigits="3"/> 上述標籤以數值和最大整數位數7,最小為3的格式來顯示數值資料。

6-6-2 數值格式標籤-<fmt:parseNumber>標籤(語法) <fmt:parseNumber value="運算式" type="種類" pattern="格式範本" parseLocale="運算式" integerOnly="運算式" var="name" scope="scope"/>

6-6-2 數值格式標籤-<fmt:parseNumber>標籤(範例) JSP程式在指定數值變數order,就可以使用<fmt:parseNumber>標籤剖析數值資料,如下所示: <c:set var="order" value="15.5" /> <fmt:parseNumber value="${order}" integerOnly="true"/> 上述標籤只剖析出數值的整數部分。

6-7 格式標籤庫的國際化設定 6-7-1 時區設定標籤 6-7-2 語系的地區設定標籤 6-7-3 國際化訊息標籤

6-7-1 時區設定標籤-<fmt:setTimeZone>標籤(語法) <fmt:setTimeZone>標籤可以指定其它fmt格式標籤預設使用的時區,其基本語法如下所示: <fmt:setTimeZone value="運算式" var="name" scope="scope"/> 上述<fmt:setTimeZone>標籤指定value屬性使用的時區值。

6-7-1 時區設定標籤-<fmt:setTimeZone>標籤(範例) 在JSP程式可以使用<fmt:setTimeZone>標籤指定預設時區,例如:指定成EST時區,如下所示: <c:set var="zone" value="EST" scope="session"/> 上述標籤指定目前預設的時區為value屬性的EST,scope屬性將預設時區加入使用者的交談期(Session),換句話說,預設時區直到使用者交談期結束為止都有效。

6-7-1 時區設定標籤-<fmt:timeZone>標籤(語法) <fmt:timeZone value="運算式"> Body </fmt:timeZone> 上述<fmt:timeZone>標籤可以指定value屬性使用的時區值,此時在Body中的子標籤就是使用此時區,但是只限於子標籤的範圍有效。

6-7-1 時區設定標籤-<fmt:timeZone>標籤(範例) 在JSP程式可以使用<fmt:timeZone>標籤指定部分標籤來使用不同的時區,例如:在預設EST時區之中,有部分格式標籤需要使用MST時區,如下所示: <fmt:timeZone value="MST"> <fmt:formatDate type="time“ value="${now}"/> <fmt:formatDate type="date“ value="${now}"/><br> </fmt:timeZone> 上述標籤指定其子標籤的時區為value屬性的MST。

6-7-2 語系的地區設定標籤-語法 在格式格式標籤庫提供<fmt:setLocale>標籤可以指定使用者所在語系的地區,其基本語法如下所示: <fmt:setLocale value="運算式" variant="name" scope="scope"/> 上述<fmt:setLocale>標籤指定value屬性使用的語系地區值。

6-7-2 語系的地區設定標籤-範例 在JSP程式可以使用<fmt:setLocale>標籤指定預設的語系地區,例如:指定成en英文的語系地區,如下所示: <fmt:setLocale value="en" scope="session"/> 上述標籤指定目前預設的語系地區為value屬性的en。

6-7-3 國際化訊息標籤-說明 JSTL的國際化訊息標籤是使用<fmt:message>和<fmt:param>標籤,這2個標籤可以從指定語系地區的「資源包」(Resource Bundle)取出訊息文字在JSP程式顯示,換句話說,只需針對不同語系建立專屬的訊息文字,就可以讓同一個JSP程式顯示國際化的訊息文字。 當建立好資源包後,JSTL是使用<fmt:bundle>和<fmt:setBoundle>標籤來指定使用的資源包名稱,以便<fmt:message>標籤可以取出指定語系地區的訊息文字。

6-7-3 國際化訊息標籤-英文資源包 資源包(Resource Bundle)是用來儲存指定語系地區的訊息文字,這是一些位在「WEB-INF/classes」資料夾,副檔名為.properties的檔案,英文en的檔案名稱是Ch6_7_2_en.properties,其內容如下所示: hello=Hello! name=Joe Chen today=Today: {0,date} 在上述"="等號前為訊息的3個Key鍵,之後就是訊息內容的值,這就是<fmt:message>標籤以指定Key鍵來取出的訊息內容。

6-7-3 國際化訊息標籤-中文資源包 中文(台灣)zh_TW的檔案名稱為Ch6_7_2.zh_TW.properties,其內容如下所示: hello=\u5927\u5bb6\u597d! name=\u9673\u6703\u5b89 today=\u4eca\u5929: {0, date} 上述檔案內容擁有相同的3個Key鍵,因為訊息是中文內容,所以需要編碼成Unicode,我們可以使用JDK的native2ascii.exe工具程式來進行編碼。

6-7-3 國際化訊息標籤-<fmt:message>與<fmt:param>標籤 <fmt:message>標籤可以顯示指定資源包(Resource Bundle)中的訊息文字,其基本語法如下所示: <fmt:message key="運算式" bundle="運算式" var="name" scope="scope"/> var="name" scope="scope"> <fmt:param value="運算式"/> …….. </fmt:message>

6-7-3 國際化訊息標籤-<fmt:setBundle>標籤 <fmt:setBundle>標籤可以指定預設資源包(Resource Bundle),其基本語法如下所示: <fmt:setBundle basename="運算式" var="name" scope="scope"/> 上述<fmt:setBundle>標籤指定位在basename屬性的資源包。

6-7-3 國際化訊息標籤-<fmt:bundle>標籤 <fmt:bundle>標籤可以指定其子標籤使用的資源包(Resource Bundle),其基本語法如下所示: <fmt:bundle basename="運算式" prefix="運算式"> Body </fmt:bundle> 上述<fmt:bundle>標籤可以指定basename屬性使用的資源包,此時在Body中的子標籤就是使用此資源包,但是只限於子標籤的範圍有效。