JSTL标签库学习笔记 六、I18N格式化标签库的数字日期格式化、读取消息资源、国际化

数字日期格式化

数字日期格式化标签共有6个,用来将数字或日期转换成设定的格式。

formatNumber标签、formatData标签、parseNumber标签、parseDate标签、timeZone标签、setTimeZone标签。


2.1、标签

【功能】:该标签依据特定的区域将数字改变为不同的格式来显示。

【语法1】:

                                               [pattern=”pattern”]
                                               [currencyCode=”code”]
                                               [currencySymbol=”symbol”]
                                               [groupingUsed=”true|false”]
                                               [maxIntergerDigits=”maxDigits”]
                                               [minIntergerDigits=”minDigits”]
                                               [maxFractionDigits=”maxDigits”]
                                               [minFractionDigits=”minDigits”]
                                               [var=”name”]
                                               [scope=page|request|session|application]
/>

【语法2】:

                                               [pattern=”pattern”]
                                               [currencyCode=”code”]
                                               [currencySymbol=”symbol”]
                                               [groupingUsed=”true|false”]
                                               [maxIntergerDigits=”maxDigits”]
                                               [minIntergerDigits=”minDigits”]
                                               [maxFractionDigits=”maxDigits”]
                                               [minFractionDigits=”minDigits”]
                                               [var=”name”]
                                               [scope=page|request|session|application]
>
被格式化的数据

表2-1-1 标签参数说明

名称

说明

EL

类型

必须

默认值

value

要格式化的数据

String

type

指定类型(单位、货币、百分比等)见表

String

number

pattern

格式化的数据样式

String

currencyCode

货币单位代码

String

cuttencySymbol

货币符号($、¥)

String

groupingUsed

是否对整数部分进行分组如(9999

boolean

true

maxIntergerDigits

整数部分最对显示多少位数

int

minIntergerDigits

整数部分最少显示多少位

int

maxFractionDigits

小数部分最多显示多少位

int

minFractionDigits

小数部分最少显示多少位

int

var

存储格式化后的数据

String

scope

varJSP范围

String

page


Type 属性的类型应用见表 2-2.

2-1-2 Type的属性类型

类型

说明

示例

number

数字格式

0.8

currency

当地货币

0.80

percent

百分比格式

80%


【示例代码】:标签示例:fmtdemo01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>



I18N标签库































































类型 使用数据 结果 说明
数字格式化 11108.754 11108.756 使用pattern可以定义显示的样式。本例设定为###.#小数部分将使用四舍五入法。
数字格式化 9557 9557 使用科学计数法。
数字格式化 219557 219557 使用默认分组。
数字格式化 9557 9557 不使用分组。
数字格式化 9557 9557 使用位数限定,根据指定的位数显示,其他数字忽略。例如:9不被显示。
百分比格式化 0.98 0.98 用百分比形式显示一个数据。
货币格式化 188.88 188.8 将一个数据转化为货币形式输出。
存储数据 188.88 188.8
存储的money的值为${money}



【代码说明】:

1)从应用角度可以把属性分为三类:数字格式化(number)、货币格式化(currency)、百分比格式化(percent)。使用type指定类型。

2)应用于数字格式化的属性有:

       partten属性、maxIntegerDigits属性、minIntegerDigits属性、maxFractionDigits属性和minFactionDigits属性。

     其中partten属性在设定格式化样式时会比较准确如:四舍五入、科学计数法的使用。

     而使用maIntegerDirgits等属性时,只把设定位数以外的数字舍去。

3)货币格式化可以使用数字格式化的所有属性。如果有必要建议使用partten属性。

     currencyCode属性和currencySymbol只用于货币格式化。

4)百分比格式化使用到的属性为type属性、partten属性,设定type属性的类型为percent即可。

5)使用var属性时,会将格式化后的值存在JSP的某个范围内(一个String类型的字符串包括符号等)。

        将不再输出格式化后的值可以使用EL表达式输出。

6)通用属性:type属性、partten属性、var属性和scope属性。

程序运行结果】:

标签的使用


类型 使用数据 结果 说明
数字格式化 11108.754 11108.76 使用pattern可以定义显示的样式。本例设定为###.#小数部分将使用四舍五入法。
数字格式化 9557 9.557E3 使用科学计数法。
数字格式化 219557 219,557 使用默认分组。
数字格式化 9557 9,557 不使用分组。
数字格式化 9557 557 使用位数限定,根据指定的位数显示,其他数字忽略。例如:9不被显示。
百分比格式化 0.98 98% 用百分比形式显示一个数据。
货币格式化 188.88 ¥188.80 将一个数据转化为货币形式输出。
存储数据 188.88 ¥188.80 存储的money的值为¥188.80

提示:如果给定的数据类型有错误将或产生异常。例如:给定的数据为aa进行类型转化,将使应用程序无法显示。

因此在实际应用中显示的格式化应该放入语句中。

2.2、<frm:parseNumber/>标签

【功能】:将格式化后的数字、货币、百分比都转化为数字类型。

【语法1】:

                                                        [pattern=”pattern”]

                                                        [parseLocale=”locale”]                       

                                                        [intergerOnly=”true|false”]

                                                        [scope=”page|request|session|application”]

/>

【语法 2 】:

                                                        [pattern=”pattern”]

                                                        [parseLocale=”locale”]

                                                        [intergerOnly=”true|false”]

                                                        [scope=”page|request|session|application”]

Number

2-2-1 标签参数说明

名称

说明

EL

类型

是否必须

默认值

value

被解析的字符串

String

type

指定单位(数字、货币、百分比)

String

number

pattern

格式样式

String

parseLocale

用来替代默认区域的设定

String

Java.util.

Locale

默认本地样式

var

存储已经格式化的数据

String

scope

var变量的作用域

String

page


可以看作是 的逆运算。

相应的参数和类型的配置和使用格式化时相同。

【示例代码】:标签示例:fmtdemo02.jsp

实现了从字符串中提取数据,并用合适的数据类型进行存储(浮点性、整型等)。可以对转换后的数据进行加法运算。

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>



I18N标签库








188.8

  • 格式化前的数据为:
        
       ${money}
  • 格式化后的数据为:
  • 可以对格式化的后的数据进行运算:
  • 对百分比进行格式化98%为: 98%



【代码解析】:

1)首先使用188.8转换为字符串¥188.8并在page范围内存储一个String类型的变量,变量名为money

2)使用将¥188.8转化为浮点型的数据188.8并赋值为变量money,

则变量money转变为一个浮点型的值188.8,对188.8进行加运算。

3)直接对一个百分比数98%进行转化。

程序运行结果】:

标签的使用


  • 格式化前的数据为: ¥188.80
  • 格式化后的数据为:188.8
  • 可以对格式化的后的数据进行运算: 388.8
  • 对百分比进行格式化98%为: 0.98 
提示: 属性参数的配置和使用同 标签使用的方式一样。

同时,在进行类型转换时如果给出的类型不正确将会出现异常。

例如在进行百分比转化时如果没有给type类型或者给出type类型但提供的数据中没有%都会产生异常。

因此在实际应用中用捕获异常。

2.3、<fmt:formatDate/>标签

【功能】:该标签主要用来格式化日期和时间。

【语法】:

                                     [pattern=”pattern”]

                                     [dateStyle=”default|short|medium|long|full”]

                                     [timeStyle=”default|short|medium|long|full”]

                                     [timeZone=”timeZone”]

                                     [var=”name”]

                                     [scope=”page|request|session|application”]

/>

2-3-1 标签属性说明

属性名

说明

EL

类型

必须

默认值

value

将要格式化的日期对象。

Java.util.Date

type

显示的部分(日期、时间或者两者)。

String

date

partten

格式化的样式。

String

dateStyle

设定日期的显示方式。

String

default

timeStyle

设定时间的显示方式。

String

default

timeZone

设定使用的时区。

String

当地所用时区

var

存储已格式化的日期或时间。

String

scope

指定var存储的JSP范围。

String


2-3-2 type属性参数说明

参数名

说明

time

只显示时间

date

只显示时期

both

显示日期和时间


【示例代码】:标签示例:fmtdemo03.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>




I18N标签库


















timeStyle="default">


timeStyle="short">


timeStyle="long">


timeStyle="full">


timeStyle="full">




【代码解析】:

1)首先通过配置JavaBean在页面上实例化java.util.Date对象。实现代码如下:

2)对日期对象进行格式化时${date}是一个日期对象,如果给value设的值为String时程序会报错。

3)设置typeboth时,将显示日期和时间,同时示例中依次改变dateStyletimeStyle的值作为比较。

程序运行结果 】:

标签的使用


2013-9-2
2013-9-2 17:36:17
2013-09-02 17:36:17
2013-9-2 17:36:17
13-9-2 下午5:36
2013年9月2日 下午05时36分17秒
2013年9月2日 星期一 下午05时36分17秒 CST
2013年9月2日 星期一 下午05时36分17秒 CST 

2.4、标签

【功能】:标签主要将字符串类型的时间或日期转化为时间或日期对象。

语法1】:

                                                        [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”]

/>


【语法2】:

                                                        [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


2-4-1 标签属性说明

属性名

说明

EL

类型

必须

默认值

value

将要格式化的日期时间

String

type

字符串的类型(日期、时间或全部)

EL

String

date

pattern

字符串使用的时间样式

String

parseLocale

取代默认地区设定

String

默认地区

dateStyle

字符串使用的日期显示方式

String

default

timeStyle

字符串使用的时间显示格式

String

default

timeZone

使用的时区

String

当地区时

var

使用var定义的名字保存对象

String

scope

varJSP范围

String

page



【示例代码】:标签示例:fmtdemo04.jsp

首先,使用了把一个日期对象格式化成一个日期的字符串,并把该字符串以参数名为a存储page范围内。

其次,使用方法把a的值(字符串)格式化成一个Date并以参数名为b存储在page范围内。

最后,使用Java脚本证明生成的b为对象。

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>




I18N标签库






${a}



${aa}


   <%
   out.println(pageContext.getAttribute("b").toString());
   out.println("
");
   out.println(pageContext.getAttribute("b").hashCode());
   out.println("
");
   out.println("
");
   out.println(pageContext.getAttribute("aa").toString());   
   out.println("
");
   out.println(pageContext.getAttribute("c").toString());
   %>


【代码解析】:

1)使用把日期对象格式化成字符串。

2)使用把字符串对象转化为日期对象,注意同(1)中的参数对比,可以发现两者是一个互逆的过程。

3)使用Java脚本进行测试Date对象的toString()方法可以输出时间字符串。hashCode()可以得到一个对象的hashCode

该方法只能应用于对象,因此可以证明得到的是一个日期对象。

程序运行结果 】:

标签的使用


Mon Sep 02 17:53:58 CST 2013
-568863824

2013-09-02 17:53:58
Mon Sep 02 17:53:58 CST 2013 

2.5、<fmt:setTimeZone/>标签

功能】: 该标签用于设定默认时区或者将时区存储在指定的 JSP 范围内。
语法】:

 标签属性说明

参数名

说明

EL

类型

必须

默认值

value

使用的时区

String

Java.util.TimeZone

var

使用var定义的参数名保存值

String

scope

存储varJSP范围

String

page

value用来设定使用的时区,例如中国使用的时区为CST,其他的还有ESTPST等。

可以把时区存储在指定的JSP范围内,例如存储在session中,用户访问的所有页面都可以显示使用的设定的时区下对应的时间。

【示例代码】

提示:有关TimeZone的说明见JDK帮助文档的java.util.TimeZone类。


2.6、标签

功能】:该标签主要用于设置标签体内使用的时区。

语法】:

…..

使用只会应用到标签体内使用的时区,对标签外部将不产生影响。



读取消息资源

主要用于从资源文件中读取信息。
读取消息资源用到的标签主要有 4 个: 标签、 标签、 标签和 标签。

2.7、标签

功能 】:该标签主要用于将资源文件绑定于它的标签体中的显示。

语法】:

….标签主题


【参数说明】:标签属性说明

参数名

说明

EL

类型

必须

默认值

basename

指定使用的资源文件的名称

String

prefix

前置关键字

String


2.8、标签

功能】:该标签主要用于绑定资源文件或者把资源文件保存在指定的JSP范围内。

语法】:

                                     [scope=”page|request|session|application”]

参数说明】: 标签属性说明

参数名

说明

EL

类型

必须

默认值

basename

指定使用的资源文件的名称

String

var

指定将资源文件保存的名称

String

scope

设定将资源文件保存的JSP范围

String

page


2.9、标签

功能】:该标签主要负责读取本地资源文件,从指定的消息文本资源文件中读取键值,并且可以将键值保存在指定的JSP范围内。

【语法1】:

                                     [scope=”page|request|session|application”]

/>

【语法2】:

                                     [scope=”page|request|session|application”]

【语法3】:

                                                        [scope=”page|request|session|application”]

key

参数说明】:标签属性说明

参数名

说明

EL

类型

必须

默认值

key

指定键值的名称(索引)

String

bundle

指定消息文本的来源

LocalizationContext

var

指定存储键值的变量名

String

scope

指定var的作用域

String

page


提示:建议此处的 bundle 使用 EL 表达式,因为属性 bundle 的类型为 LocalizationContext ,而不是一个 String 类型的 URL
示例代码】:实现从指定的资源文件中读取对应key的值。

首先编写一个资源文件message.properties,内容下

name=olive

password=01234

使用标签从资源文件中读取相应的值。


标签示例: fmtdemo05.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>




I18N标签库















${m}


【代码解析】:

1)使用标签指定从message.properties文件中读取值。

2)使用标签读取资源文件中keyname的值。标签放在标签体内使用。

3)使用标签在page范围绑定一个配置文件,以m为参数名存储。

4)使用标签得到keypassword的值,此处指定资源文件的方式为使用标签的bundle属性来设定。

5)输出参数m的值,加深对bundle的理解。

程序运行结果 】:

资源文件读取示例


从message资源文件中得到的key为name的值为: olive
01234
javax.servlet.jsp.jstl.fmt.LocalizationContext@60bb1ee 

标签中有一个prefix属性,该标签用来指明前缀。例如配置文件内容如下:

org.person.name=olive

org.personpassword=01234

如果不使用prefix标签,在取值是要指明前缀。例如:

使用prefix属性可以简化取值时的代码。


2.10、标签

功能】:该标签主要用于当中资源文件中获得键值时,动态的为资源文件中的变量赋值。

语法1】:

语法2】:

标签主体

示例代码】:

1)创建资源文件。在message.properties文件中增加一个keyvalue

news={0} welcome to out website!
today is :{1,date}

表达的含义是键news对应的是一个字符串,字符串中还有动态变量{0}表示第一个动态变量,

{1,date}表示第二个动态变量并且该变量是一个日期类型的对象。

2 )通过标签从资源文件中取出键值,并给动态变量赋值显示在页面。
 标签示例:fmtdemo06.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>




I18N标签库
















【代码解析】:

1)使用标签把资源文件绑定在标签体内。

2)在标签体内使用得到键值。

3)使用为资源文件中的动态变量赋值。

程序运行结果 】:

标签的使用


olive welcome to out website!

today is :2013-9-3 

国际化

国际化这个分类中共包含两个标签:用于设定语言地区和用于设定请求的字符编码的标签。

2.11、标签

功能】:用来设定用户语言区域。

【语法】:

                            [scope=”page|request|session|application”]>

【参数说明】:标签属性说明

参数名

说明

EL

类型

必须

默认值

value

指定区域代码

String

java.util.Locale

variant

操作系统的类型

String

scope

设定时区的作用范围

String

page

value 属性用来指定使用的语言代码,可以从浏览器的【工具】 --- Internet 选项】 --- 【语言】 --- 【添加】
中查看浏览器支持的语言种类及语言代码。
例如:中文(zh_cn)、台湾(zh_tw)、香港(zh_mo)等。
【示例代码】:实现了设定不同的区域代码,根据不同的区域代码浏览将显示不同格式的日期。
标签示例:fmtdemo07.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>




I18N标签库













   
   
   
   

   
   


【代码解析】:

1)浏览器默认跟您使用的操作系统的语言相同,因此默认值zh_cn。使用标签设置使用的语言为en_us(英语)。

     使用格式化输出的时间字符串,该标签会根据不同的语言输出不同的日期格式。

2)使用的语言修改为zh_cn,再次用格式化输出。

3)使用语言修改为zh_TW,输出格式化后的时间。

程序运行结果 】:

标签的使用


2013年9月3日 星期二 上午10时07分29秒 CST
2013年9月3日 星期二 上午10时07分29秒 CST
2013年9月3日 星期二 上午10时07分29秒 CST 

2.12、标签

功能】:用于设定请求的编码格式。功能同servletRequest.setCharacterEncoding()方法相同。

【语法】:

【参数说明】:

value 属性用来指定使用的编码集例如: gbk gb2312 等。当没有给出 value 的值时将会自动搜索取寻找合适的编码方式,因此能够很好的解决中文乱码问题。

你可能感兴趣的:(JSTL)