fmt標簽個人用的比較少,但是我還是在這里簡單的留一下筆記,也是算是學習了一下!這樣方便你們課設的時候能用的上,要學會進步的學習,不要停留!
引入該標簽庫的方法為:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
這里提供了很多的內容,我這里只是介紹關於數字和日期格式化的內容
formatNumber標簽、formatData標簽、parseNumber標簽、parseDate標簽、timeZone標簽、setTimeZone標簽
1.<frm:formatNumber/>標簽
該標簽依據特定的區域將數字改變為不同的格式來顯示。
【語法1】: <frm:formatNumber value=”被格式化的數” [type=”number|currency|percent”] [pattern=”pattern”] [currencyCode=”code”] [currencySymbol=”symbol”] [groupingUsed=”true|false”] [maxIntergerDigits=”maxDigits”] [minIntergerDigits=”minDigits”] [maxFractionDigits=”maxDigits”] [minFractionDigits=”minDigits”] [var=”name”] [scope=page|request|session|application] />
還有一種是對標簽喲!
1.<fmt:formatNumber>標簽參數說明:
名稱 | 類型 | EL | 類型 | 必須 | 默認值 |
value | 要格式化的數據 | 是 | String | 是 | 無 |
type | 指定類型(單位、貨幣、百分比等)見附表A | 是 | String | 否 | number |
pattern | 格式化的數據樣式 | 是 | String | 否 | 無 |
currencyCode | 貨幣單位代碼 | 是 | String | 否 | 無 |
cuttencySymbol | 貨幣符號($、¥) | 是 | String | 否 | 無 |
groupingUsed | 是否對整數部分進行分組如(9,999) | 是 | boolean | 是 | true |
maxIntergerDigits | 整數部分最對顯示多少位數 | 是 | int | 否 | 無 |
minIntergerDigits | 整數部分最少顯示多少位 | 是 | int | 否 | 無 |
maxFractionDigits | 小數部分最多顯示多少位 | 是 | int | 否 | 無 |
minFractionDigits | 小數部分最少顯示多少位 | 是 | int | 否 | 無 |
var | 存儲格式化后的數據 | 否 | String | 否 | 無 |
scope | var的JSP范圍 | 否 | String | 否 | page |
附表A,關於type的屬性值介紹
類型 | 說明 | 示例 |
number | 數字格式 | 0.8 |
currency | 當地貨幣 | ¥0.80 |
percent | 百分比格式 | 80% |
什么東西,都需要代碼才能看到真相,所以嘍,我們寫一下代碼,
LOOK:實現了對數字的格式化、貨幣的格式、貨幣的格式化。使用<frm:formatNumber>的各種屬性的設定。
<table border=1 cellpadding="0" cellspacing="0" align="center"> <tr align="center"> <td width="100">類型</td> <td width="100">使用數據</td> <td width="100">結果</td> <td width="300">說明</td> </tr> <tr> <td>數字格式化</td> <td>108.75</td> <td> <fmt:formatNumber type="number" pattern="###.#">108.75</fmt:formatNumber> </td> <td> 使用pattern可以定義顯示的樣式。本例設定為###.#小數部分將使用四舍五入法。 </td> </tr> <tr> <td>數字格式化</td> <td>9557</td> <td> <fmt:formatNumber type="number" pattern="#.####E0">9557</fmt:formatNumber> </td> <td> 使用科學計數法。 </td> </tr> <tr> <td>數字格式化</td> <td>9557</td> <td> <fmt:formatNumber type="number">9557</fmt:formatNumber> </td> <td> 使用默認分組。 </td> </tr> <tr> <td>數字格式化</td> <td>9557</td> <td> <fmt:formatNumber type="number" groupingUsed="false">9557</fmt:formatNumber> </td> <td> 不使用分組。 </td> </tr> <tr> <td>數字格式化</td> <td>9557</td> <td> <fmt:formatNumber type="number" maxIntegerDigits="3">9557</fmt:formatNumber> </td> <td> 使用位數限定,根據指定的位數顯示,其他數字忽略。例如:9不被顯示。 </td> </tr> <tr> <td>百分比格式化</td> <td>0.98</td> <td> <fmt:formatNumber type="percent">0.98</fmt:formatNumber> </td> <td> 用百分比形式顯示一個數據。 </td> </tr> <tr> <td>貨幣格式化</td> <td>188.88</td> <td> <fmt:formatNumber type="currency">188.8</fmt:formatNumber> </td> <td> 將一個數據轉化為貨幣形式輸出。 </td> </tr> <tr> <td>存儲數據</td> <td>188.88</td> <td> <fmt:formatNumber type="currency" var="money">188.8</fmt:formatNumber> ${money} </td> <td> 存儲的money的值為${money} </td> </tr> </table> <%-- (1)從應用角度可以把屬性分為三類:數字格式化、貨幣格式化、百分比格式化。使用type指定類型。 (2)應用於數字格式化的屬性有:partten屬性、maxIntegerDigits屬性、minIntegerDigits屬性、maxFractionDigits屬性和minFactionDigits屬性。其中partten屬性在設定格式化樣式時會比較准確如:四舍五入、科學計數法的使用。而使用maIntegerDirgits等屬性時,只把設定位數以外的數字舍去。 (3)貨幣格式化可以使用數字格式化的所有屬性。如果有必要建議使用partten屬性。currencyCode屬性和currencySymbol只用於貨幣格式化。 (4)百分比格式化使用到的屬性為type屬性、partten屬性,設定type屬性的類型為percent即可。 (5)使用var屬性時,會將格式化后的值存在JSP的某個范圍內(一個String類型的字符串包括符號等)。<frm:forNumber>將不再輸出格式化后的值可以使用EL表達式輸出。 (6)通用屬性:type屬性、partten屬性、var屬性和scope屬性。 --%>
2.<frm:parseNumber>標簽
將格式化后的數字、貨幣、百分比都轉化為數字類型。 【語法1】: <fmt:parseNumber value="number"
[type=”number|currency|percent”] [pattern=”pattern”] [parseLocale=”locale”] [intergerOnly=”true|false”] [scope=”page|request|session|application”] />
還有一種是對標簽喲!
還有一種是對標簽喲!
<fmt:parseNumber>標簽參數說明:
名稱 | 說明 | EL | 類型 | 必須 | 默認 |
value | 被解析的字符串 | 是 | String | 是 | 無 |
type | 指定單位(數字、貨幣、百分比) | 是 | String | 是 | number |
pattern | 格式樣式 | 是 | String | 否 | 無 |
parseLocale | 用來替代默認區域的設定 | 是 | StString/java.util.Locale | 是 | 默認本地樣式 |
var | 存儲已經格式化的數據 | 否 | String | 否 | 無 |
scope | var變量的作用域 | 是 | String | 是 | page |
<fmt:parseNumber>可以看作是<fmt:formatNumber>的逆運算。相應的參數和類型的配置和使用<fmt:formatNumber>格式化時相同。
【示例代碼】:實現了從字符串中提取數據,並用合適的數據類型進行存儲(浮點性、整型等)。可以對轉換后的數據進行加法運算
<!-- 准備的數據為 --> <fmt:formatNumber type="currency" var="money">188.8</fmt:formatNumber> <ul> <li> 格式化后的數據為:${money} </li> <fmt:parseNumber var="money" type="currency">${money}</fmt:parseNumber> <li> 解析格式化后的數據為:${money} </li> <li> 解析可以對格式化的后的數據進行運算:${money+200} </li> <li> 解析對百分比進行格式化98%為: <fmt:parseNumber type="percent">98%</fmt:parseNumber> </li> </ul> <%-- (1)首先使用<fmt:formatNumber>將188.8轉換為字符串¥188.8並在page范圍內存儲一個String類型的變量,變量名為money。 (2)使用<fmt:parseNumber>將¥188.8轉化為浮點型的數據188.8並賦值為變量money,則變量money轉變為一個浮點型的值188.8,對188.8進行加運算。 (3)直接對一個百分比數98%進行轉化。 --%>
3.<fmt:formatDate>標簽:該標簽主要用來格式化日期和時間。
【語法】: <fmt:formatDate value=”date” [type=”time|date|both”] [pattern=”pattern”] [dateStyle=”default|short|medium|long|full”] [timeStyle=”default|short|medium|long|full”] [timeZone=”timeZone”] [var=”name”] [scope=”page|request|session|application”] />
<fmt:formatDate>標簽屬性說明:
屬性名 | 說明 | EL | 類型 | 必須 | 默認值 |
value | 將要格式化的日期對象 | 是 | Java.util.Date | 是 | 無 |
type | 顯示的部分(日期、時間或者兩者)附錄表B | 是 | String | 否 | date |
partten | 格式化的樣式。 | 是 | String | 否 | 無 |
dateStyle | 設定日期的顯示方式 | 是 | String | 否 | default |
timeStyle | 設定時間的顯示方式 | 是 | String | 否 | default |
timeZone | 設定使用的時區 | 是 | String | 否 | 當地所用時區 |
var | 存儲已格式化的日期或時間 | 否 | String | 否 | 無 |
scope | 指定var存儲的JSP范圍 | 否 | String | 否 | 無 |
附錄表B:type屬性參數說明:
參數名 | 說明 |
time | 只顯示時間 |
date | 只顯示日期 |
both | 顯示日期和時間 |
【示例程序】:實現了對日期的格式化,使用了type、dateStyle、timeStyle等屬性。
<% pageContext.setAttribute("date",new Date()); %> <fmt:formatDate value="${date}"></fmt:formatDate> <br> <fmt:formatDate value="${date}" type="both"></fmt:formatDate> <br> <fmt:formatDate value="${date}" type="both" dateStyle="default" timeStyle="default"></fmt:formatDate> <br> <fmt:formatDate value="${date}" type="both" dateStyle="short" timeStyle="short"></fmt:formatDate> <br> <fmt:formatDate value="${date}" type="both" dateStyle="long" timeStyle="long"></fmt:formatDate> <br> <fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="full"></fmt:formatDate> <br> <fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="full"></fmt:formatDate> <br> <%-- 1)對日期對象進行格式化時${date}是一個日期對象,如果給value設的值為String時程序會報錯。 2)設置type為both時,將顯示日期和時間,同時示例中依次改變dateStyle和timeStyle的值作為比較。 --%>
4.<fmt:parseDate>標簽:<fmt:parseDate>標簽主要將字符串類型的時間或日期轉化為時間或日期對象。
<fmt:parseDate [type=”time|date|both”] [pattern=”pattern”] [parseLocale=”locale”] [dateStyle=”default|short|medium|long|full”] [timeStyle=”default|short|medium|long|full”] [timeZone=”timezone”] [var=”name”] [scope=”page|request|session|application”] > Date </fmt:parseDate>
<fmt:parseData>標簽屬性說明:
屬性名 | 說明 | EL | 類型 | 必須 | 默認值 |
value | 將要格式化的日期時間 | 是 | String | 是 | 無 |
type | 字符串的類型(日期、時間或全部) | 是 | String | 是 | date |
pattern | 字符串使用的時間樣式 | 是 | String | 是 | 無 |
parseLocale | 取代默認地區設定 | 是 | String | 是 | 默認地區 |
dateStyle | 字符串使用的日期顯示方式 | 是 | String | 否 | default |
timeStyle | 字符串使用的時間顯示格式 | 是 | String | 否 | default |
timeZone | 使用的時區 | 是 | String | 否 | 當地區時 |
var | 使用var定義的名字保存對象 | 否 | String | 否 | 無 |
scope | var的JSP范圍 | 否 | String | 否 | page |
【示例代碼】:實現了以下功能:
首先,使用了<fmt:formatDate>把一個日期對象格式化成一個日期的字符串,並把該字符串以參數名為a存儲page范圍內。
其次,使用<fmt:parseDate>方法把a的值(字符串)格式化成一個Date並以參數名為b存儲在page范圍內。
最后,使用Java腳本證明生成的b為對象。
<% pageContext.setAttribute("date", new Date()); %> <fmt:formatDate value="${date}" var="a" type="both" dateStyle="full" timeStyle="full"></fmt:formatDate> <fmt:parseDate var="b" type="both" dateStyle="full" timeStyle="full"> ${a} </fmt:parseDate> <% out.println(pageContext.getAttribute("b").toString()); out.println("<br>"); out.println(pageContext.getAttribute("b").hashCode()); %>
<%--
(1)使用<fmt:formatDate>把日期對象格式化成字符串。
(2)使用<fmt:parseDate>把字符串對象轉化為日期對象,注意同(1)中的參數對比,可以發現兩者是一個互逆的過程。
(3)使用Java腳本進行測試Date對象的toString()方法可以輸出時間字符串。hashCode()可以得到一個對象的hashCode。該方法只能應用於對象,因此可以證明得到的是一個日期對象。
--%>