fmt标签个人用的比较少,但是我还是在这里简单的留一下笔记,也是算是学习了一下!这样方便你们课设的时候能用的上,要学会进步的学习,不要停留!
不是不用,如果设计到数据的格式化,一定会使用!
引入该标签库的方法为:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
这里提供了很多的内容,我这里只是介绍关于数字和日期格式化的内容:
- formatNumber标签
- formatData标签
- parseNumber标签
- parseDate标签
- timeZone标签
- setTimeZone标签
1. <fmt:formatNumber/> 标签
作用:该标签依据特定的区域将数字改变为不同的格式来显示。
【语法】
<fmt: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]
/>
<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 |
type属性特别说明
类型 | 说明 | 示例 |
---|---|---|
number | 数字格式 | 0.8 |
currency | 当地货币 | ¥0.80 |
percent | 百分比格式 | 80% |
代码示例: 实现了对数字的格式化、货币的格式、货币的格式化。使用 <fmt: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类型的字符串包括符号等)。<fmt:forNumber>
将不再输出格式化后的值可以使用EL表达式输出。
(6) 通用属性:type属性、partten属性、var属性和scope属性。
2.<fmt:parseNumber>标签
作用: 将格式化后的数字、货币、百分比都转化为数字类型。
语法:
<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 | 否 | 无 |
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
[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:parseDate> 标签参数说明:
属性名 | 说明 | 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。该方法只能应用于对象,因此可以证明得到的是一个日期对象。