一、国际化标签库概述

为了简化WEB应用的国际化开发,JSTL中提供了一个用于实现国际化和格式化功能的标签库,我们将其简称为国际化标签库,JSP规范为国际化标签库建议的前缀名为fmt。国际化标签库中包括了一组用于实现WEB国际化功能的标签,这组标签封装了Java语言中java.util和java.text这两个包中与国际化相关的API类的功能。国际化标签库中提供了绑定资源包和从资源包中的本地资源文件内读取文本内容的标签,也提供了对数值和日期等本地敏感的数据按本地化信息进行显示和解析的标签,还提供了按本地特定的时区来调整时间的标签。

国际化标签库中的标签可以根据客户端浏览器的信息来自动确定本地信息,也可以由JSP页面作者显式地指定本地信息。

二、国际化标签库的应用

1、<fmt:setLocale>标签

功能:

<fmt:setLocale>标签用于在JSP页面中显式地设置用户的本地化信息,并将设置的本地化信息以Locale对象的形式保存在某个Web域中,其在Web域中的属性名称为“javax.servlet.jsp.jstl.fmt.locale”。使用<fmt:setLocale>标签设置本地化信息后,国际化标签库中的其他标签将使用该本地化信息,而忽略客户端浏览器传递过来的本地信息

格式:

<fmt:setLocalevalue="locale"

[variant="variant"] [scope="{page|request|session|application}"]/>

2、<fmt:setBundle>标签

功能:

<fmt:setBundle>标签用于根据<fmt:setLocale>标签设置的本地化信息创建一个资源包(ResourceBundle)实例对象,并将其绑定到一个Web域的属性上。

格式:

<fmt:setBundle basename="basename"

            [var="varName"]

            [scope="{page|request|session|application}"] />

3、<fmt:bundle>标签

功能:

<fmt:bundle>标签与<fmt:setBundle>标签的功能类似,但它创建的ResourceBundle实例对象只在其标签体内有效

格式:

<fmt:bundle basename="basename"

        [prefix="prefix"]>

    body content

</fmt:bundle>

4、<fmt:message>标签

功能:

<fmt:message>标签用于从一个资源包中读取信息并进行格式化输出

格式:

语法1,没有标签体的情况:

<fmt:message key="messageKey"  

            [bundle="resourceBundle"]

            [var="varName"]

            [scope="{page|request|session|application}"] />

语法2,在标签体中指定格式化文本串中的占位符参数的情况:

<fmt:message key="messageKey"

            [bundle="resourceBundle"]

            [var="varName"]

            [scope="{page|request|session|application}"]>

    <fmt:param>subtags

</fmt:message>

语法3,在标签体中指定消息关键字和可选择的占位符参数:

<fmt:message [bundle="resourceBundle"]

            [var="varName"]

            [scope="{page|request|session|application}"]>

    key

    optional<fmt:param>subtags

</fmt:message>

5、<fmt:param>标签

功能:

<fmt:param>标签用于为格式化文本串中的占位符设置参数值,它只能嵌套在<fmt:message>标签内使用

格式:

语法1,用value属性指定参数值:

<fmt:param value="messageParameter" />

语法2,在标签体中指定参数的值的情况:

<fmt:param>

    body content

</fmt:param>

6、<fmt:requestEncoding>标签

功能:

<fmt:requestEncoding>标签用于设置请求消息的字符集编码,该标签内部调用request.setCharacterEncoding()方法,以便Web容器将请求消息中的参数值按该字符集编码转换成Unicode字符串返回

格式:

<fmt:requestEncoding[value="charsetName" />

7、<fmt:timeZone>标签

功能:

<fmt:timeZone>标签用于设置时区,但它的设置值只对其标签体部分有效

格式:

<fmt:timeZonevalue="timeZone">

bodycontent

</fmt:timeZone>

8、<fmt:setTimeZone>标签

功能:

<fmt:setTimeZone>标签用于在JSP页面中显示地设置时区,并将设置的时区信息以TimeZone对象的形式保存在某个Web域中,其在Web域中的属性名称为javax.servlet.jsp.jstl.fmt.timeZone

格式:

<fmt:setTimeZonevalue="timeZone"

[var="varName"]

[scope="{page|request|session|application}"]/>

9、<fmt:formatDate>标签

功能:

<fmt:formatDate>标签用于对日期和时间按本地化信息进行格式化,或对日期和时间按化为JSP页面作者自定义的格式进行格式化

格式:

<fmt:formatDatevalue="date"

[type="{time|date|both}"]

[dateStyle="{default|short|medium|long|full}"]

[timeStyle="{default|short|medium|long|full}"]

[pattern="customPattern"]

[timeZone="timeZone"]

[var="varName"]

[scope="{page|request|session|application}"]/>

10、<fmt:parseDate>标签

功能:

<fmt:parseDate>标签与<fmt: formatDate >标签的作用正好相反,它用于将一个表示日期和时间的字符串解析成java.util.Date实例对象

格式:

语法1,没有标签体的情况:

<fmt:parseDate value="dateString"

[type="time|date|both"]

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

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

[pattern="customPattern"]

[timeZone="timeZone"]

[parseLocale="parseLocale"]

[var="varName"]

[scope="{page|request|session|application}"]/>

语法2, 有标签体的情况,在标签体中指定要被解析的日期和/或时间值:

<fmt:parseDate [type="time|date|both"]

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

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

[pattern="customPattern"]

[timeZone="timeZone"]

[parseLocale="parseLocale"]

[var="varName"]

[scope="{page|request|session|application}"]>

date value to be parsed

</fmt:parseDate>

11、<fmt:formatNumber>标签

功能:

<fmt:formatNumber>标签用于将数值、货币或百分数按本地化信息进行格式化,或者按JSP页面作者自定义的格式进行格式化

格式:

语法1,没有标签体的情况:

<fmt:formatNumbervalue="numericValue"

[type="{number|currency|percent}"]

[pattern="customPattern"]

[currencyCode="currencyCode"]

[currencySymbol="currencySymbol"]

[groupingUsed="{true|false}"]

[maxIntegerDigits="maxIntegerDigits"]

[minIntegerDigits="minIntegerDigits"]

[maxFractionDigits="maxFractionDigits"]

[minFractionDigits="minFractionDigits"]

[var="varName"]

[scope="{page|request|session|application}"] />

语法2,有标签体的情况,在标签体中指定要被格式化的数值:

<fmt:formatNumber[type="{number|currency|percent}"]

[pattern="customPattern"]

[currencyCode="currencyCode"]

[currencySymbol="currencySymbol"]

[groupingUsed="{true|false}"]

[maxIntegerDigits="maxIntegerDigits"]

[minIntegerDigits="minIntegerDigits"]

[maxFractionDigits="maxFractionDigits"]

[minFractionDigits="minFractionDigits"]

[var="varName"]

[scope="{page|request|session|application}"]>

要被格式化的数值

</fmt:formatNumber>

12、<fmt:parseNumber>标签

功能:

<fmt:parseDate>标签与<fmt: formatNumber >标签的作用正好相反,它用于将一个按本地化方式被格式化后的数值、货币或百分数解析为数值

格式:

语法1,没有标签体的情况:

<fmt:parseNumbervalue="numericValue"

[type="{number|currency|percent}"]

[pattern="customPattern"]

[parseLocale="parseLocale"]

[integerOnly="{true|false}"]

[var="varName"]

[scope="{page|request|session|application}"]/>

语法2,有标签体的情况,在标签体中指定要被解析的数值:

<fmt:parseNumber[type="{number|currency|percent}"]

[pattern="customPattern"]

[parseLocale="parseLocale"]

[integerOnly="{true|false}"]

[var="varName"]

[scope="{page|request|session|application}"]>

numericvalue to be parsed

</fmt:parseNumber>

:JSTL格式化标签又称为I18N标签库,主要用来编写国际化的WEB应用,使用此功能可以对一个特定的语言请求做出合适的处理。

例如:中国内地用户将显示简体中文,台湾地区则显示繁体中文,使用I18N格式化标签库还可以格式化数字和日期,例如同一数字或日趋,在不同国家可能有不同的格式,使用I18N格式标签库可以将数字和日期格式为当地的格式。

二:格式化标签

<fmt:fromatNumber>

<fmt:formatDate>

<fmt:parseDate>

<fmt:parseNumber>

<fmt:setTimeZone>

<fmt:timeZone>

国际化标签

<fmt:setLocale>

<fmt:requestEncoding>

<fmt:bundle>

<fmt:message>

<fmt:param>

<fmt:setBundle>

三:<fmt:formatNumber>

此标签会根据区域定制的方式将数字格式化成数字,货币,百分比。

此标签的属性:

value:要格式化的数字

type:按照什么类型格式化

pattern:自定义格式化样式

currencyCode:ISO-4721货币代码,只适用于按照货币格式化的数字

currencySymbol: 货币符号,如¥,只适用于按照货币格式化的数字
groupingUsed: 是否包含分隔符
maxIntegerDigits: 整数部分最多显示多少位
mixIntegerDigits: 整数部分最少显示多少位
maxFractionDigits: 小数部分最多显示多位位
minFractionDigits: 小数部分最少显示多位位
var:存储格式化后的结果
scope: 存储的范围

实例

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<fmt:setLocale value="zh_cn"/>

<fmt:formatNumber value="123456789.012"/>

<fmt:formatNumber value="0.3" type="number"/><br /> 
<fmt:formatNumber value="0.3" type="currency"/><br /> 
<fmt:formatNumber value="0.3" type="percent"/><br />

注意:如果要实现国际化,那么编码格式要设置为utf-8.

currencyCode为货币代码,例如美元为USD,人民币为CNY等
currencySymbol为货币符号例如,人民币为¥,美元为$。

如果不指定区域,则会根据语言区域自动选择currencySymbol

currencySymbol属性还可以自定义要显示的头标识,但是一定得type="currency"才会生效

<fmt:formatNumber value="0.3" type="currency" currencySymbol="#"/>

自定义数字样式
<fmt:formatNumber value="12.31" pattern=".0000"/><br/>
<fmt:formatNumber value="1234" pattern="###.##E0"/>
会显示:
12.3100
1.234E3

<fmt:parseNumber>

此标签用来将字符串类型的数字,货币或百分比转换成数字类型,和<fmt:formatNumber>标签的作用正好相反.

value: 要转换的字符串
type: 指定要转换的字符串为什么类型,可取值:number,percent,currency
pattern: 自定义格式化样式
parseLocale: 指定区域来转换字符串
IntegerOnly: 转换后的数字是否只显示整数部分
var: 存储转换后的结果
scope: 存储的范围

<fmt:parseNumber value="500,800,200"/>
显示: 500800200

<fmt:parseNumber value="123.333" type="number" /><br/>
<fmt:parseNumber value="123.333" type="number" integerOnly="true"/><br/>
显示:
123.333
123
integerOnly确定是否只显示整数部分.

<fmt:formatDate />

此标签可以将日期格式化.
属性介绍:
value 用来格式化的时间或日期
type 指定格式化的是日期还是时间,或者两者都是取值范围:date,time,both
pattern 自定义格式化样式
dateStyle 日期的格式化样式
timeStyle 时间的格式化样式
timeZone 指定使用的时区
var 存储格式化后的结果
scope 指定存储的范围

dateStyle用来设定日期显示的样式,其值可以是default, short, medium, long, full

fmt:setLocale value="zh_cn" />
<fmt:formatDate value="<%=new Date()%>" type="both" dateStyle="default" />
<br />
<fmt:formatDate value="<%=new Date()%>" type="both" dateStyle="short" />
<br />
<fmt:formatDate value="<%=new Date()%>" type="both" dateStyle="medium" />
<br />
<fmt:formatDate value="<%=new Date()%>" type="both" dateStyle="long" />
<br />
<fmt:formatDate value="<%=new Date()%>" type="both" dateStyle="full" />
<br /> 显示结果如下:
2009-12-7 21:30:49
09-12-7 21:30:49
2009-12-7 21:30:49
2009年12月7日 21:30:49
2009年12月7日 星期一 21:30:49

timeStyle用来显示时间部分的样式,取值范围同上

Java代码
<fmt:setLocale value="zh_cn" /> 
<fmt:formatDate value="<%=new Date()%>" type="both" timeStyle="default" /> 
<br /> 
<fmt:formatDate value="<%=new Date()%>" type="both" timeStyle="short" /> 
<br /> 
<fmt:formatDate value="<%=new Date()%>" type="both" timeStyle="medium" /> 
<br /> 
<fmt:formatDate value="<%=new Date()%>" type="both" timeStyle="long" /> 
<br /> 
<fmt:formatDate value="<%=new Date()%>" type="both" timeStyle="full" /> 
<br />

输出:
2009-12-7 21:35:52
2009-12-7 下午9:35
2009-12-7 21:35:52
2009-12-7 下午09时35分52秒
2009-12-7 下午09时35分52秒 CST

<fmt:setLocale value="zh_cn" /> 
<fmt:formatDate value="<%=new Date()%>" type="both" pattern="yyyy/MM/dd hh:mm:ss" />

<fmt:parseDate>

将字符串类型的时间转换为日期类型.

value 用来格式化的时间或日期的字符串
type 指定格式化的是日期还是时间,或者两者都是取值范围:date,time,both
pattern 自定义格式化样式
dateStyle 日期的格式化样式
timeStyle 时间的格式化样式
timeZone 指定使用的时区
var 存储格式化后的结果
scope 指定存储的范围

<fmt:setLocale value="zh_cn" />
<fmt:parseDate type="date" value="2008-4-5"/>
输出: Sat Apr 05 00:00:00 CST 2008,
这里已经将字符串” 2008-4-5”转换为了日期对象了.转换一定得注意,类似于2008-4-5这样的字符串,type必须为date,类似于12:34:56的字符串,type必须为time类似于2008-4-5 12:34:56这样的字符串,type必须为both还要注意浏览器的语言环境的设置,如果为zh_tw,那么字符串就必须得符合当地的标准,如为2009/12/7 下午 09:24:26就正确转换为日期对象,否则就会报错.

<fmt:setTimeZone>

value 设定时区
var 存储设定的时区
scope 存储的范围

value用来设定时区,可以是EST,CST,MST,PST等,如果有var属性,则将结果存储在所设定的范围之内.在属性范围内的页面都会使用该时区为默认时区.

fmt:setLocale value="zh_cn" /> 
<fmt:setTimeZone value="EST" /> 
<fmt:formatDate value="<%=new Date()%>" type="time" timeStyle="full" /><br />

<fmt:timeZone>

用来暂时设置时区.

Java代码
<fmt:setLocale value="zh_cn" /> 
<fmt:timeZone value="EST"> 
<fmt:formatDate value="<%=new Date()%>" type="time" timeStyle="full" /> 
<br /> 
<fmt:formatDate value="<%=new Date()%>" type="time" timeStyle="full" /> 
<br /> 
</fmt:timeZone> 
<fmt:formatDate value="<%=new Date()%>" type="time" timeStyle="full" />

<fmt:setLocale value="zh_cn" />
<fmt:timeZone value="EST">
<fmt:formatDate value="<%=new Date()%>" type="time" timeStyle="full" />
<br />
<fmt:formatDate value="<%=new Date()%>" type="time" timeStyle="full" />
<br />
</fmt:timeZone>
<fmt:formatDate value="<%=new Date()%>" type="time" timeStyle="full" /> 此标签的时区只是部分,在标签开始至标签结束内有效,其它地方无效,其它地方还是会使用默认时区

jsp国际化/格式化标签库相关推荐

  1. jsp导入jstl标签库_EE JSP:使用JSTL标记库生成动态内容

    jsp导入jstl标签库 除了在JSP中编写自己的定制标记之外,您还将发现Java EE实际上提供了一组Java标准标记库(JSTL)供您使用. 这些内置标签包括重复(for-loop)标签,条件标签 ...

  2. JSP→JSTL标准标签库简介与环境搭建、JSTL助手EL表达式EL隐式对象、标签→out、set、if、多选择配合、foreach、redirect、格式化、JSTL函数标签、自定义标签、标签类架构

    JSTL标准标签库简介与环境搭建 EL表达式与EL隐式对象 out标签 set标签 remove标签 catch标签 if标签 choose.when.otherwise配合标签 foreach标签 ...

  3. 使用JSP的标准标签库JSTL处理XML格式的数据

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. 下载地址:https://archive.apache.org/dist/jakarta/taglibs/stan ...

  4. JSP~~JSTL~~XML标签库

    XML 提供了非常灵活的方式来表示结构化的数据,可以创建自己的标记来识别数据,不仅仅人可以看懂,而且计算机也可以读懂.并且 XML 可以在不兼容的系统之间进行数据的交换,所以 XML 必定将称为最普遍 ...

  5. JSP标准标签库、通用标签

    JSP标准标签库.通用标签 JSP标准标签库(JSP Standard Tag Library,JSTL)是实现Web应用程序中常见的通用功能的定制标签库集,程序员使用JSTL标签来避免在JSP页面中 ...

  6. JSP标准标签库——JSTL

    JSP标准标签库--JSTL JSTL是实现Web应用程序中常见的通用功能的定制标签库集. JSTL分为5大类: 1. 核心标签库 2. 国际化/格式化标签库 3. 数据库标签库 4. XML标签库 ...

  7. Javaweb学习笔记(JSP标准标签库)

    Javaweb学习笔记(JSP标准标签库) JSTL入门 安装和测试JSTL JSTL中的Core标签库 < c:out>标签 标签 标签 < c:catch>标签 标签 标签 ...

  8. JavaWeb(五)之JSTL标签库

    前言 前面介绍了EL表达式,其实EL表达式基本上是和JSTL核心标签库搭配一起使用才能发挥效果的.接下来让我们一起来认识一下吧! 在之前我们学过在JSP页面上为了不使用脚本,所以我们有了JSP内置的行 ...

  9. (forEach url out set catch 等)javaweb中JSTL的Core 核心标签库知识点

    JSTL 标签库的基本知识复习 导读{ 1]什么是 JSTL 标签库 ? [2]如何在我们的项目中使用JSTL ? [3]介绍Core 核心标签库 [3.1]URL标签 作用:  可以在JSP页面中构 ...

最新文章

  1. python_cookies
  2. 算法基础课-搜索与图论-spfa-AcWing 852. spfa判断负环:spfa求负环板子
  3. php 发那科,FANUC发那科CNC数据采集教程连接CNC
  4. 简而言之,JUnit:另一个JUnit教程
  5. php怎么更新多条数据,PHP中批量更新数据表中多条记录
  6. Tyvj 1176 火焰巨魔的惆怅
  7. zookeeper 原理
  8. Atitit hi dev eff topic by use dsl sql coll op 提升开发效率sql dsl查询内存集合列表 目录 1.1. Dsl api lib 1 1.2. R
  9. hdoj2050折线分割平面(递推,找规律)
  10. python-snap7使用说明
  11. LTE下行物理层传输机制(5)-DCI格式的选择和DCI1A
  12. java 风能玫瑰图,施用java awt画风向玫瑰图及风能玫瑰图程序
  13. MySQL JSON_EXTRACT()、JSON_UNQUOTE() 函数获取JSON串的值
  14. ROS实战(二) 科大讯飞语音合成模块
  15. javascript之动态时钟
  16. ERROR 2002 HY000 Can't connect to local MySQL server thro
  17. 正斜杠 “/” 与反斜杠 “\”辨析
  18. 软件测试 - 测试用例常见面试题
  19. 魏文王问扁鹊的注释_《魏文王问扁鹊》及翻译
  20. 对PES NALU 帧的疑惑

热门文章

  1. ARFoundation☀️四、AR图片识别
  2. 戴尔霄龙服务器销售商,dell霄龙服务器_大篆科技
  3. [C大程] 研讨题 CAD
  4. 「家电观察室」 4K与VR能否占据客厅娱乐?
  5. 【BUG】@JsonIgnore注解引发的java.sql.SQLException【已解决】
  6. 游龙传说服务器维护,炉石传说服务器维护故障补偿方案详细内容
  7. 小型办公室出租,创新办公领域
  8. idea怎么查看svn历史记录
  9. Python人脸识别两种方法
  10. 实在不好意思!我的发音让你恶心了!盘点这些让百万年薪老码农都读错的单词!