国际化标签库
理解国际化的主要操作
可以使用国际化进行文本、日期的格式化操作
Locale 是进行国际化操作中最重要的一个内容,通过不同的Locale 可以指定不同的区域,以取得不同的资源文件的信息
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%@ taglib prefix="fmt" uri="http://www.csdn.net/jst/fmt"%>
<html>
<head> <title>欢迎光临</title>
</head>
<body>
<%
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>中文日期显示:2011-11-9
中文日期显示:Nov 9, 2011
此操作是解决乱码的
<%
request.setCharacterEncoding("GBK");
%>
<fmt:requestEncoding value="GBK"/> 两个功能相同
在进行国际化实现中最重要的部分就是资源文件的读取,所有的资源文件的后缀肯定是*.properties 文件,下面定义一个普通的资源文件: Message.properties
文件应该保存在classpath 之中,所以直接在/WEB-INF/classes 中建立即可
name = nihao下面需要通过标签设置资源文件
info = \u6b22\u8fce{0}\u5149\u4e34
现在确实可以设置名称,但是有名称不够,因为要读取的是里面的信息,因为要读取的是里面的信息,所以另外还需标签的支持
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%@ taglib prefix="fmt" uri="http://www.csdn.net/jst/fmt"%>
<html>
<head> <title>欢迎光临</title>
</head>
<body>
<fmt:bundle basename="Message">
<fmt:message key="name" var="nameref"/>
</fmt:bundle>
<h3>姓名:${nameref}</h3>
<fmt:bundle basename="Message">
<fmt:message key="info" var="inforef">
<fmt:param value="ABC"/>
</fmt:message>
</fmt:bundle>
<h3>信息:${inforef}</h3>
</body>
</html>
<%@ page contentType="text/html" pageEncoding="UTF-8"%>此时,实际上也可以根据不同的资源进行划分,如果现在要实现
<%@ page import="java.util.*"%>
<%@ taglib prefix="fmt" uri="http://www.csdn.net/jst/fmt"%>
<html>
<head> <title>欢迎光临</title>
</head>
<body>
<fmt:setBundle basename="Message" var="msg"/>
<fmt:message key="name" var="nameref" bundle="${msg}"/>
<h3>姓名:${nameref}</h3>
<fmt:message key="info" var="inforef" bundle="${msg}">
<fmt:param value="gz"/>
</fmt:message>
<h3>信息:${inforef}</h3>
</body>
</html>
<fmt:setLocale value="zh_CN"/> //中文的资源文件进行读取
<%@ page contentType="text/html" pageEncoding="UTF-8"%>在JST 之中除了可以将数字格式化之外,也可以进行反格式化的操作
<%@ page import="java.util.*"%>
<%@ taglib prefix="fmt" uri="http://www.csdn.net/jst/fmt"%>
<html>
<head> <title>欢迎光临</title>
</head>
<body>
<fmt:formatNumber value="333939.39394" maxIntegerDigits="7"
maxFractionDigits="3" groupingUsed="true" var="num"/>
<h3>格式化数字: ${num}</h3>
<fmt:formatNumber value="333939.39394" pattern="##.###E0" var="num"/>
<h3>科学计数法: ${num}</h3>
</body>
</html>
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%@ taglib prefix="fmt" uri="http://www.csdn.net/jst/fmt"%>
<html>
<head> <title>欢迎光临</title>
</head>
<body>
<fmt:parseNumber value="3,222,438.3803" var="num"/>
<h3>反格式化的数字: ${num }</h3>
<fmt:parseNumber value="3.233E4" pattern="##.###E0" var="num"/>
<h3>反科学计数法: ${num }</h3>
<fmt:parseNumber value="3.3%" pattern="00%" var="num"/>
<h3>反百分比: ${num }</h3>
</body>
</html>
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%@ taglib prefix="fmt" uri="http://www.csdn.net/jst/fmt"%>
<html>
<head> <title>欢迎光临</title>
</head>
<body>
<%
pageContext.setAttribute("dateref",new Date());
%>
<fmt:formatDate value="${dateref}" type="both" dateStyle="medium"
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日 HH时mm分ss秒SSS毫秒"
var="date"/>
<h3>自定义格式显示日期的时间: ${date}</h3>
</body>
</html>default显示日期的时间: 2011-11-10 2:21:54
short显示日期的时间: 11-11-10 上午2:21
medium显示日期的时间: 2011-11-10 2:21:54
long显示日期的时间: 2011年11月10日 上午02时21分54秒
full显示日期的时间: 2011年11月10日 星期四 上午02时21分54秒 CST
自定义格式显示日期的时间: 2011年11月10日 02时21分54秒169毫秒
反日期格式化
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%@ taglib prefix="fmt" uri="http://www.csdn.net/jst/fmt"%>
<html>
<head> <title>欢迎光临</title>
</head>
<body>
<fmt:parseDate value="2011年11月10日 星期四 上午02时21分54秒 CST" type="both" dateStyle="full" timeStyle="full" var="date"/>
<h3>字符串变为日期: ${date}</h3>
<fmt:parseDate value="2011年11月10日 02时21分54秒169毫秒" type="both" pattern="yyyy年MM月dd日 HH时mm分ss秒SSS毫秒" var="date"/>
<h3>字符串变为日期: ${date}</h3>
</body>
</html>字符串变为日期: Thu Nov 10 02:21:54 CST 2011
字符串变为日期: Thu Nov 10 02:21:54 CST 2011
<%@ page contentType="text/html" pageEncoding="UTF-8"%>标签就是对类的封装
<%@ page import="java.util.*"%>
<%@ taglib prefix="fmt" uri="http://www.csdn.net/jst/fmt"%>
<html>
<head> <title>欢迎光临</title>
</head>
<%
pageContext.setAttribute("dateref",new 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>FULL 显示日期的时间: 2011年11月9日 星期三 上午08时34分31秒 HST
小结
通过国际化显示标签可以方便的完成资源文件的读取,以及对文字、日期、数字的格式化操作