原文参考:http://blog.csdn.net/xiaoping8411/article/details/4238340
JSTL标签提供了对国际化(I18N)的支持,它可以根据发出请求的客户端地域的不同来显示不同的语言。同时还提供了格式化数据和日期的方法。实现 这些功能需要I18N格式标签库(I18N-capable formation tags liberary)。引入该标签库的方法为:<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>I18N格式标签库提供了12个标签,这些 标签从功能上可以划分为3类如下:(1)数字日期格式化:formatNumber标签、parseNumber标签、formatData标签、parseDate标签、timeZone标签、setTimeZone标签。(2)读取消息资源:bundle标签、setBundle标签、message标签。(3)国际化:setlocale标签、requestEncoding标签。以下是各个标签的用途和属性以及简单示例。
一、<fmt:formatNumber>标签
1、作用:<fmt:formatNumber>标签依据特定的区域将数字改变为不同的格式来显示。
2、语法:<fmt:formatNumber value="" type="" pattern="" currencyCode="" currencySymbol="" groupingUsed="" maxIntegerDigits="" minIntegerDigits="" maxFractionDigits="" minFractionDigits=""
var="" scope="" ></fmt:formatNumber>。
3、属性:
序号
|
属性
|
描述
|
1
|
value
|
要格式化的数字,可以是 EL 表达式或常量。(必须)
|
2
|
type
|
指定要格式化的数据的类型(具体类型可见下表),默认为number。(可选)
|
3
|
pattern
|
数据格式,如#.##。(可选)
|
4
|
currencyCode
|
货币单位代码。(可选)
|
5
|
currencySymbol
|
货币符号($、¥),如果不指定区域,则会根据语言区域自动选择currencySymbol。(可选)
|
6
|
groupingUsed
|
是否对整数部分进行分组显示(即每三位用逗号隔开),默认为true(分组显示)。(必须)
|
7
|
maxIntegerDigits
|
整数部分最多显示多少位。(可选)
|
8
|
minIntegerDigits
|
整数部分最少显示多少位。(可选)
|
9
|
maxFractionDigits
|
小数部分最多显示多少位。(可选)
|
10
|
minFractionDigits
|
小数部分最少显示多少位。(可选)
|
11
|
var
|
用来存储格式化以后数据的变量,通过该变量访问数据。(可选)
|
12
|
scope
|
var变量的有效范围,主要有:page、request、session、application。若没有指定,默认为page。(可选)
|
Type属性的类型应用:
序号
|
类型
|
描述
|
示例
|
1
|
number
|
数字格式
|
0.8
|
2
|
currency
|
当地货币
|
¥0.8
|
3
|
percent
|
百分比格式
|
80%
|
4、实例:
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td width="100">序号 </td>
<td width="100">测试属性值</td>
<td width="100">使用数据</td>
<td width="100">结果</td>
<td width="300">说明</td>
</tr>
<tr>
<td>1</td>
<td>pattern:###.#</td>
<td>108.755</td>
<td><fmt:formatNumber type="number" pattern="###.##">108.755</fmt:formatNumber></td>
<td>当pattern小数部分设置的位数小于数据小数部分位数时,自动使用四舍五入法</td>
</tr>
<tr>
<td>2</td>
<td>pattern:自动补零###.00</td>
<td>108.7</td>
<td><fmt:formatNumber type="number" pattern="###.00">108.7</fmt:formatNumber></td>
<td>当pattern指定小数部分0的个数时,表示数据的小数部分不足多少位时自动补零</td>
</tr>
<tr>
<td>3</td>
<td>pattern:科学计数法#.##E0</td>
<td>9557</td>
<td><fmt:formatNumber type="number" pattern="#.##E0">9557</fmt:formatNumber></td>
<td>当数据的位数>指定的位数时,则显示指定的位数,如:patter设定的##为2个,那么就保留2位显示</td>
</tr>
<tr>
<td>4</td>
<td>pattern:科学计数法#.####E0</td>
<td>955</td>
<td><fmt:formatNumber type="number" pattern="#.####E0">955</fmt:formatNumber></td>
<td>当数据的位数超过指定的位数时,则显示”数据位数-1“位(减去的一位作为整数部分,其他的为小数部分)。</td>
</tr>
<tr>
<td>5</td>
<td>groupingUsed:使用分组</td>
<td>123456789</td>
<td><fmt:formatNumber type="number" groupingUsed="true">123456789</fmt:formatNumber></td>
<td>使用默认分组,三位一体。</td>
</tr>
<tr>
<td>6</td>
<td>groupingUsed:不使用分组</td><td>9557</td>
<td><fmt:formatNumber type="number" groupingUsed="false" >9557</fmt:formatNumber></td>
<td>不使用分组。</td>
</tr>
<tr>
<td>7</td>
<td>type:number数字格式</td>
<td>9557.1234</td>
<td><fmt:formatNumber type="number" maxIntegerDigits="3" pattern="#.##" minFractionDigits="2">9557.1234</fmt:formatNumber></td>
<td>使用位数限定,根据指定的位数显示,其他数字忽略。例如:整数部分最大3位,9不被显示;小数部分最少2位,34不显示。</td>
</tr>
<tr>
<td>8</td>
<td>type:percent百分比格式</td><td>0.98</td>
<td><fmt:formatNumber type="percent">0.98</fmt:formatNumber></td>
<td>用百分比形式显示一个数据。</td>
</tr>
<tr>
<td>9</td>
<td>type:currency货币格式化</td><td>188.88</td>
<td><fmt:formatNumber type="currency" >188.8</fmt:formatNumber></td>
<td>将一个数据转化为货币形式输出,如果不指定区域,则会根据语言区域自动选择currencySymbol。</td>
</tr>
<tr>
<td>10</td>
<td>var属性</td>
<td>188.88</td>
<td><fmt:formatNumber type="currency" var="money">188.8</fmt:formatNumber>
${money}
</td>
<td>存储的money的值为${money} </td>
</tr>
</table>
效果:
5、代码说明:
(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属性。
二、<fmt: parseNumber>标签
1、作用:<fmt: parseNumber>标签用来将格式化后的数字、货币、百分比都转化为数字类型。它可以看作是<fmt:formatNumber>的逆运算。相应的参数和类型的配置和使用<fmt:formatNumber>格式化时相同。
2、语法:<fmt:parseNumber value="" type="" pattern="" integerOnly="" parseLocale="" scope="" var=""></fmt:parseNumber>
3、属性:
序号
|
属性
|
描述
|
1
|
value
|
被解析的字符串。(必须)
|
2
|
type
|
指定要格式化的数据的类型(具体类型可见下表),默认为number。(必须)
|
3
|
pattern
|
解析之后的样式。(可选)
|
4
|
integerOnly
|
转换后的数字是否只显示整数部分。(可选)
|
5
|
parseLocale
|
指定区域来转换字符串,默认使用本地样式。(可选)
|
6
|
var
|
用来存储格式化以后数据的变量,通过该变量访问数据。(可选)
|
7
|
scope
|
var变量的有效范围,主要有:page、request、session、application。若没有指定,默认为page。(可选)
|
4、实例:
<ul>
<fmt:formatNumber type="currency" var="money">188.8</fmt:formatNumber>
<li>格式化前的数据为:<c:out value="${money}"></c:out>
<fmt:parseNumber var="money" type="currency">${money}</fmt:parseNumber>
<li>格式化后的数据为:<c:out value="${money}"></c:out>
<li>可以对格式化的后的数据进行运算(加上200):
<c:out value="${money+200}"></c:out>
<li>对百分比进行格式化98%为:
<fmt:parseNumber type="percent">98%</fmt:parseNumber>
</ul>
效果:
三、<fmt:formatDate>标签
1、作用:<fmt:formatDate>标签用来格式化日期和时间。
2、语法:<fmt:formatDate value="" type="" pattern="" dateStyle="" timeStyle="" timeZone="" scope="" var="" ></fmt:formatDate>
3、属性:
序号
|
属性
|
描述
|
1
|
value
|
将要被格式化的日期对象,可以Java.util.Date对象,也可以是EL表达式类型的Date对象(必须)
|
2
|
type
|
要显示的部分类型,主要有三个类型:time(只显示时间)、date(只显示日期)、both(显示日期和时间),默认只显示日期(可选)
|
3
|
pattern
|
格式化的样式(可选)
|
4
|
dateStyle
|
设定日期的显示方式,可选值见下表,默认使用default样式(可选)
|
5
|
timeStyle
|
设定时间的显示方式, 可选值见下表,默认使用default样式(可选)
|
6
|
timeZone
|
使用的时区,默认使用本时区(可选)
|
7
|
scope
|
变量的作用范围:page、request、session、application。若没有指定,默认为保存于 page 范围中的变量(可选)
|
8
|
var
|
用来存储格式化以后数据的变量,通过该变量访问数据。(可选)
|
dateStyle和timeStyle可选值如下(以java.util.Date的当前时间为例):
序号
|
类型
|
描述
|
示例
|
1
|
default
|
默认格式
|
2015-4-26 22:02:30
|
2
|
short
|
比较简单类型
|
15-4-26 下午10:02
|
3
|
long
|
比较详细类型
|
2015年4月26日 下午10时02分30秒
|
3
|
full
|
详细类型
|
2015年4月26日 星期日 下午10时02分30秒 CST
|
4、实例:
<jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
<ul>
<li>默认值:<fmt:formatDate value="${date}"></fmt:formatDate></li>
<li>只显示时间:<fmt:formatDate value="${date}" type="time"></fmt:formatDate></li>
<li>只显示日期:<fmt:formatDate value="${date}" type="date"></fmt:formatDate></li>
<li>两者都显示:<fmt:formatDate value="${date}" type="both"></fmt:formatDate></li>
<li>自定义格式:<fmt:formatDate value="${date}" type="date" pattern="yyyy年MM月dd日"></fmt:formatDate></li>
<li>设置dateStyle和timeStyle(short):<fmt:formatDate value="${date}" type="both" dateStyle="short" timeStyle="short"></fmt:formatDate></li>
<li>设置dateStyle和timeStyle(long):<fmt:formatDate value="${date}" type="both" dateStyle="long" timeStyle="long"></fmt:formatDate></li>
<li>设置dateStyle和timeStyle(full):<fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="full"></fmt:formatDate></li>
<li>设置dateStyle和timeStyle(default):<fmt:formatDate value="${date}" type="both" dateStyle="default" timeStyle="default"></fmt:formatDate></li>
<fmt:formatDate value="${date}" type="date" pattern="yyyy年MM月dd日" scope="session" var="defDate"></fmt:formatDate>
<li>通过var属性访问自定义格式之后的数据:<c:out value="${defDate}"></c:out></li>
<li>访问scope属性指定的范围中的var值:
<c:out value="${sessionScope['defDate']}"></c:out>
<c:out value="${sessionScope.defDate}"></c:out>
</li>
</ul>
效果:
5、代码说明:
(1)首先通过配置JavaBean在页面上实例化java.util.Date对象。实现代码如下:
<jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
(2)对日期对象进行格式化时${date}是一个日期对象,如果给value设的值为String时程序会报错。
(3)设置type为both时,将显示日期和时间,同时示例中依次改变dateStyle和timeStyle的值作为比较。
(4)没有设置var属性,标签中有值或者value属性中有值,加载时会自动显示数据。设置var属性之后,标签中的值不会再显示,只有通过从var中取值手动让它显示出来。
四、<fmt:parseDate>标签
1、作用:< fmt:parseDate >标签用来将字符串类型的时间或日期转化为时间或日期对象,其作用与<fmt:formatDate>标签相反。
2、语法:<fmt:parseDate value="" type="" pattern="" dateStyle="" timeStyle="" parseLocale="" timeZone="" var="" scope=""></fmt:parseDate>
3、属性:
序号
|
属性
|
描述
|
1
|
value
|
将要被格式化的日期,String类型(必须)
|
2
|
type
|
字符串的类型,主要有三个类型:time(只显示时间)、date(只显示日期)、both(显示日期和时间)(可选)
|
3
|
pattern
|
字符串使用的时间样式(可选)
|
4
|
dateStyle
|
字符串使用的日期显示方式,可选值见下表,默认使用default样式(可选)
|
5
|
timeStyle
|
字符串使用的时间显示方式, 可选值见下表,默认使用default样式(可选)
|
6
|
parseLocale
|
取代默认地区设定,默认使用本地区(可选)
|
7
|
timeZone
|
使用的时区,默认使用本时区(可选)
|
8
|
scope
|
变量的作用范围:page、request、session、application。若没有指定,默认为保存于 page 范围中的变量(可选)
|
9
|
var
|
用来存储格式化以后数据的变量,通过该变量访问数据。(可选)
|
4、实例:
<jsp:useBean id="date2" class="java.util.Date"></jsp:useBean>
<ul>
<li>转化之前的值:<fmt:formatDate value="${date2}" type="both" dateStyle="full" timeStyle="full"></fmt:formatDate></li>
<fmt:formatDate value="${date2}" type="both" dateStyle="full" timeStyle="full" var="aa"></fmt:formatDate>
<li>
<fmt:parseDate var="bb" type="both" dateStyle="full" timeStyle="full">${aa}</fmt:parseDate>
通过C标签输出转化之后的值:<c:out value="${bb}"></c:out>
</li>
<li>
通过Java代码输出转化之后的值:<br />
<%
out.println("转化之后的值"+pageContext.getAttribute("bb").toString());
out.println("<br>");
out.println("hashCode:"+pageContext.getAttribute("bb").hashCode());
//
%>
</li>
</ul>
效果:
相关推荐
I18N formatting 标签库就是用于在 JSP 页面中做国际化的动作。在该标签库中的标签一共有 12 个
一个描述了JSP和SERVLET中fmt国际化、格式标签库的实践性文档,可以学习下FMT的使用
JSTL标准标签库的各个标签详细说明,包含了核心标签库(c:),国际化标签库(fmt:)以及函数标签库(fn).注意:SQL标签库(sql:)以及XML标签库(xml:)不应使用,文档中也未提及
JSTL标签库使用方法: 标签库 URI 前缀 使用模式 核心标签库 http://java.sun.com/jstl/core c <c:tagname…> 国际化标签(I18N) http://java.sun.com/jstl/fmt fmt <fmt:tagname…> SQL标签库 ...
JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。但是在即将推出的JSP 2.0中是作为标准支持的。 JSTL目前的最新...
JSTL标签总结-,,,,,,,,,,<fmt>
实现这些功能需要I18N格式标签库(I18N-capable formation tags liberary)。引入该标签库的方法为: <%@ taglib prefix=”fmt” uri=”http://java.sun.com/jsp/jstl/fmt” %> I18N格式标签库提供了11个标签...
jstl标签库依赖的tld文件和jar文件,分享出来,方便他人方便自己。
格式化标签库:http://java.sun.com/jsp/jstl/fmt 用来格式化显示数据的工作,比如:对不同区域的日期格式化等。 XML 标签库:http://java.sun.com/jsp/jstl/xml 用来访问 XML 文件的工作,这是 JSTL 标签库...
进一步将应用程序的显示层和业务层完全分离,更加有利于应用程序的分工协作,jsp开发者指定了 JSTL ,提供了一组统一的通用的自定义标签文件,并将这些文件组合在一起,形成了jsp标准标签库,即JSTL。 1) 定义:包含...
JavaWeb新版教程. JSON和Ajax请求&i18n国际化n-使用JSTL标签库fmt实现国际化.avi
jstl所有标签库sql、xml、core、fmt、functions所有标签的详细运用的代码示例。
JSTL标签主要包含核心标签库、格式标签库、SQL标签库、XML标签库和函数标签库共5种标签库。 在使用JSTL标签之前必须在JSP页面的首行使用指令定义标签库的位置和访问前缀,(jstl 1.1)各个标签库的定义如下: 核心...
FreeCache 是一个 Go 语言的缓存库,无额外的 GC 负荷。数百万对象的垃圾收集延迟仅在数百毫秒。特性:可存储数以百万计条目零垃圾收集负荷高并发而且线程安全的访问纯 Go 语言实现支持对象失效近乎 LRU 的算法严格...
Golang 开发的获取域名顶级后缀的库。 安装 gotld go get github.com/jonsen/gotld 导入 gotld import "github.com/jonsen/gotld" 示例代码: tld, domain, err := gotld.GetTld( *url ) if err != ...
jstl.jar包,添加后在jsp页面中加入<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>,然后在希望显示的时间格式中输入<fmt:formatDate value="${yourobject.time}" pattern="yyyy-MM-dd HH:mm:ss...
0313_JSP标准标签库(JSTL) 0314_AJAX开发技术 0400_第四部分:框架开发 0415_Struts基础开发 0416_Struts常用标签库 0417_Struts高级开发 0500_第五部分:附录 0518_附录A:实用工具 0519_附录B:MyEclipse...
12.5、定义有标签体的标签库 12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 12.9、使用BodyTagSupport开发迭代输出 12.10、简单标签 12.11、DynamicAttributes接口 12.12...
12.5、定义有标签体的标签库 12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 12.9、使用BodyTagSupport开发迭代输出 12.10、简单标签 12.11、DynamicAttributes接口 12.12...
12.5、定义有标签体的标签库 12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 12.9、使用BodyTagSupport开发迭代输出 12.10、简单标签 12.11、DynamicAttributes接口 ...