本章目标
理解国际化的主要操作;
可以使用国际化进行文本、日期的格式化操作。
国际化标签库
国际化是程序的重要组成部分,一个程序可以根据所在的区域进行相应信息显示,例如:各个地区的数字、日期显示风格都是不一样的,在JSTL中使用fmt.tld作为格式化标签库的定义文件。
格式化标签库提供的标签
<fmt:setLocale>标签
<fmt:setLocale>标签的主要功能是用来设定用户所在的区域,语法如下:
<fmt:setLocale value="区域编码" [variant="浏览器"] [scope="[page | request | session | application]"]/>
<fmt:setLocale>标签的属性
设置Locale显示
<%@page import="java.util.Date"%> <%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <html> <head> <title>设置 Locale 显示</title> </head> <body> <%//设置一个 page 范围的属性 pageContext.setAttribute("date", new Date()); %> <h3>中文日期显示: <fmt:setLocale value="zh_CN"/> <fmt:formatDate value="${date}"/> </h3> <h3>英文日期显示: <fmt:setLocale value="en_US"/> <fmt:formatDate value="${date}"/> </h3> </body> </html>
效果图:
<fmt:requestEncoding>标签
<fmt:requestEncoding>标签的主要功能是用于设置所有的请求编码,功能与setCharacterEncoding()一样,语法如下:
<fmt:requestEncoding [value="字符集"]/>
范例:设置统一编码
<fmt:requestEncodingvalue="GBK"/>
读取资源文件
在国际化中最重要的组成部分就是资源文件的读取,在JSTL中提供了四个标签用于资源的读取和操作:<fmt:message>、<fmt:param>、<fmt:bundle>、<fmt:setBundle>。
所有的资源文件都是以*.properties为后缀的,所有的内容要按照“key=value”的格式进行编写,在WEB中,资源文件要保存在/WEB-INF/classes文件夹之中。
定义资源文件 —— /WEB-INF/classes/Message.properties
name = chaoyi
# info = 欢迎{0}光临!
info = \u6b22\u8fce{0}\u5149\u4e34\uff01
效果图:
<fmt:bundle>
<fmt:bundle>设置要读取的资源文件名称,语法如下:
<fmt:bundle basename="资源文件名称" [prefix="前置标记"]>
标签体内容
</fmt:bundle>
<fmt:message>
当通过<fmt:bundle>标签指定好了资源文件名称后,就可以使用<fmt:message>标签按照key读取value,语法如下:
<fmt:message key="资源文件的指定key" [bundle="资源文件名称"] [var="存储内容的属性名称"] [scope="[page | request | session | application]"]/>
<fmt:message key="资源文件的指定key" [bundle="资源文件名称"] [var="存储内容的属性名称"] [scope="[page | request | session | application]"]>
<fmt:param value="设置占位符内容"/>
</fmt:message>
读取资源文件
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <html> <head> <title>读取资源文件</title> </head> <body> <fmt:bundle basename="Message"> <fmt:message key="name" var="nameref"></fmt:message> </fmt:bundle> <h3>姓名:${nameref}</h3> <fmt:bundle basename="Message"> <fmt:message key="info" var="inforef"> <fmt:param value="yike"></fmt:param> </fmt:message> </fmt:bundle> <h3>信息:${inforef}</h3> </body> </html>
效果图:
<fmt:setBundle>
在进行资源文件读取的时候也可以通过<fmt:setBundle>标签设置一个默认的读取资源名称,这样每次在使用<fmt:message>进行信息读取的时候,直接通过bundle设置要读取的资源的属性即可,语法如下:
<fmt:setBundle basename="资源文件名称" [var="保存资源文件内容的属性名称"] [scope="[page | request | session | application]"]/>
设置要读取的资源文件
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <html> <head> <title>设置要读取的资源文件</title> </head> <body> <fmt:setBundle basename="Message" var="msg" /> <fmt:message key="name" var="nameref" bundle="${msg}"></fmt:message> <h3>姓名:${nameref}</h3> <fmt:message key="info" var="inforef" bundle="${msg}"> <fmt:param value="yike"></fmt:param> </fmt:message> <h3>信息:${inforef}</h3> </body> </html>
效果图:
数字格式化标签
在JSTL中进行数字格式化的操作可以使用<fmt:formatNumber>和<fmt:parseNumber>两个标签完成。<fmt:formatNumber>标签会根据所设置的区域将一个数字进行格式化,语法如下:
<fmt:formatNumber value="数字" [type="[number | currency | percent]"] [pattern="格式化格式"] [currencyCode="货币的ISO代码"] [currencySymbol="货币符号"] [groupingUsed="[true | false]"] [maxIntegerDigits="整数位的最大显示长度"] [minIntegerDigits="整数位的最小显示长度"] [maxFractionDigits="小数位的最大显示长度"] [minFractionDigits="小数位的最小显示长度"] [var="格式化数字的保存属性"] [scope="[page | request | session | application]"]/>
<fmt:formatNumber [type="[number | currency | percent]"] [pattern="格式化格式"] [currencyCode="货币的ISO代码"] [currencySymbol="货币符号"] [groupingUsed="[true | false]"] [maxIntegerDigits="整数位的最大显示长度"] [minIntegerDigits="整数位的最小显示长度"] [maxFractionDigits="小数位的最大显示长度"] [minFractionDigits="小数位的最小显示长度"] [var="格式化数字的保存属性"] [scope="[page | request | session | application]"]> 要格式化的数字</fmt:formatNumber>
<fmt:formatNumber>标签的属性
格式化数字显示
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <html> <head> <title>格式化数字显示</title> </head> <body> <fmt:formatNumber value="15764865.4484576" maxIntegerDigits="7" maxFractionDigits="3" groupingUsed="true" var="num"></fmt:formatNumber> <h3>格式化数字:${num}</h3> <fmt:formatNumber value="15764865.4484576" pattern="##.###E0" var="num"></fmt:formatNumber> <h3>格式化数字:${num}</h3> </body> </html>
效果图:
<fmt:formatNumber>
<fmt:formatNumber>标签的作用是将一个数字进行格式化,而使用<fmt:parseNumber>可以将一个被格式化的数字进行还原,语法如下:
<fmt:parseNumber value="格式化好的数字" [type="[number | currency | percent]"] [pattern="格式化样式"] [parseLocale="区域编码"] [integerOnly="[true | false]"] [var="存储结果的属性名称"] [scope="[page | request | session | application]"]/>
<fmt:parseNumber value="格式化好的数字" [type="[number | currency | percent]"] [pattern="格式化样式"] [parseLocale="区域编码"] [integerOnly="[true | false]"] [var="存储结果的属性名称"] [scope="[page | request | session | application]"]>
已格式化好的数字
</fmt:parseNumber>
<fmt:parseNumber>标签的属性
数字的反格式化
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <html> <head> <title>数字的反格式化</title> </head> <body> <fmt:parseNumber value="5,764,865.448" var="num"></fmt:parseNumber> <h3>反格式化数字:${num}</h3> <fmt:parseNumber value="15.765E6" pattern="##.###E0" var="num"></fmt:parseNumber> <h3>反格式化数法:${num}</h3> <fmt:parseNumber value="3.5%" pattern="00%" var="num"></fmt:parseNumber> <h3>反百分比:${num}</h3> </body> </html>
效果图:
日期时间格式化标签
<fmt:formatDate>标签的主要功能是用于日期时间的格式化显示,语法如下:
<fmt:formatDate value="date" [type="[time | date | both]"] [pattern="格式化样式"] [dateStyle="[default | short | medium | long | full]"] [timeStyle="[default | short | medium | long | full]"] [timeZone="时区"] [var="存储结果的属性名称"] [scope="[page | request | session | application]"]/>
<fmt:formatDate>标签的属性
格式化日期时间
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <html> <head> <title>格式化日期时间</title> </head> <body> <% //在 page 属性范围中保存一个日期 pageContext.setAttribute("dateref", new java.util.Date()); %> <fmt:formatDate value="${dateref}" type="both" dateStyle="default" timeStyle="default" var="date"/> <h3>default 显示日期时间:${date}</h3> <fmt:formatDate value="${dateref}" type="both" dateStyle="short" timeStyle="short" var="date"/> <h3>short 显示日期时间:${date}</h3> <fmt:formatDate value="${dateref}" type="both" dateStyle="medium" timeStyle="medium" var="date"/> <h3>medium 显示日期时间:${date}</h3> <fmt:formatDate value="${dateref}" type="both" dateStyle="long" timeStyle="long" var="date"/> <h3>long 显示日期时间:${date}</h3> <fmt:formatDate value="${dateref}" type="both" dateStyle="full" timeStyle="full" var="date"/> <h3>full 显示日期时间:${date}</h3> <fmt:formatDate value="${dateref}" type="both" pattern="yyyy 年 MM 月 dd 日 mm分 ss秒 SSS 毫秒" var="date"/> <h3>自定义格式显示日期时间:${date}</h3> </body> </html>
效果图:
<fmt:parseDate>
<fmt:formatDate>标签的功能是将一个日期型的对象变为了字符串,而<fmt:parseDate>是将一个字符串的数据变回日期型数据,语法如下:
<fmt:parseDate value="date" [type="[time | date | both]"] [pattern="格式化样式"] [dateStyle="[default | short | medium | long | full]"] [timeStyle="[default | short | medium | long | full]"] [timeZone="时区"] [var="存储结果的属性名称"] [scope="[page | request | session | application]"]/>
<fmt:parseDate>标签的属性
日期的反格式化
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <html> <head> <title>日期的反格式化</title> </head> <body> <fmt:parseDate value="2014年6月1日 星期日 下午04时41分04秒 CST" type="both" dateStyle="full" timeStyle="full" var="date"></fmt:parseDate> <h3>字符串变为日期:${date}</h3> <fmt:parseDate value="2014 年 06 月 01 日 41分 04秒 477 毫秒" pattern="yyyy 年 MM 月 dd 日 mm分 ss秒 SSS 毫秒" var="date"></fmt:parseDate> <h3>字符串变为日期:${date}</h3> </body> </html>
效果图:
设置时区
<fmt:setTimeZone>标签可以设置显示的时区或者将设置的时区储存到一个属性范围中,语法如下:
<fmt:setTimeZone value="设置的时区" [var="存储时区的属性名称"] [scope="[page | request | session | application]"]/>
设置CCT时区 —— timezone_set.jsp
设置成CCT(中国沿海时间)、HST(夏威夷标准时间)
<fmt:setTimeZone value="CCT" var="tz"/>
<fmt:timeZone>
<fmt:timeZone>可以设置时区,语法如下:
<fmt:timeZone value="设置的时区">
标签体内容
</fmt:timeZone>
设置时区显示
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <html> <head> <title>设置时区显示</title> </head> <body> <% //在 page 属性范围中保存一个日期 pageContext.setAttribute("dateref", new java.util.Date()); %> <fmt:timeZone value="HST"> <fmt:formatDate value="${dateref}" type="both" dateStyle="full" timeStyle="full" var="date"/> </fmt:timeZone> <h3>full 显示日期时间是:${date}</h3> </body> </html>
效果图:
小结
通过国际化显示标签可以方便的完成资源文件的读取,以及对文字、日期、数字的格式化操作。
相关推荐
JSTL标准标签库的各个标签详细说明,包含了核心标签库(c:),国际化标签库(fmt:)以及函数标签库(fn).注意:SQL标签库(sql:)以及XML标签库(xml:)不应使用,文档中也未提及
struts2标签库和国际化的使用,你会了吗?如果还不懂请看这里。
一个描述了JSP和SERVLET中fmt国际化、格式标签库的实践性文档,可以学习下FMT的使用
Struts2标签库的组成 ...数据访问标签:主要包含用于输出值栈(ValueStack)中的值,完成国际化等功能的标签。 流程控制标签:主要包含用于实现分支,循环等流程控制的标签。 AJAX标签:用于支持Ajax效果
JSTL 1.0 发布于 2002 年 6 月,由四个定制标记库(core、...它还支持使用本地化资源束进行 JSP 页面的国际化。xml 库包含一些标记,这些标记用来操作通过 XML 表示的数据,而 sql 库定义了用来查询关系数据库的操作。
通过定制jsp标签库,实现如下功能: 1.支持语言国际化(类似struts text标签) 2.支持图片文件、JS文件国际化
struts2 标签 国际化 文件上传 校验 拦截器 struts2.0的标签库(简介) 用过struts1.x的人都知道,标签库有html、bean、logic、tiles, 而struts2.0里的标签却没有分类,只用在jsp头文件加上 就能使用struts2.0...
java jsp 自定义标签开发 在JSTL提供了四个标签库(核心标签库、国际化标签库、数据库标签库和XML标签库)
大家下载下来之后 ,照着里面的代码写下去就行了。里面的内容包括了以下: Struts2的拦截器 Struts2整合JSF ...Struts2的国际化(Internationalization) Struts2标签库 Struts2整合Hibernate及Spring
13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取资源文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签库 13.5.1、<sql:setDataSource> ...
13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取资源文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签库 13.5.1、 13.5.2、数据库操作标签 13.5.3、...
13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取资源文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签库 13.5.1、 13.5.2、数据库操作标签 13.5.3、...
13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取资源文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签库 13.5.1、<sql:setDataSource> ...
13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取资源文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签库 13.5.1、 13.5.2、数据库操作标签 13.5.3、...
13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取资源文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签库 13.5.1、<sql:setDataSource> ...
JSTL全名JspServer Pages Standdard Tag Library(Jsp标准标签库),它是sun公司发布的一个针对JSP开发的新组件,它允许... 如:基本输入输出、流程控制、循环、XML文件剖析、数据库查询及国际化和文字格式标准化的应用等。
13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取资源文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签库 13.5.1、<sql:setDataSource> ...
13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取资源文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签库 13.5.1、 13.5.2、数据库操作标签 13.5.3、...