有人会问了什么是国际化?国际化的含义是指将应用程序中那些随着地理区域的不同而不同的东西确定下来,并提供一些方法,使得在应用程序中可以根据情况使用这些东西的不同版本,而不是使用硬编码的值。这些的哦你喜可以是标签和消息,在线帮助文本,图像,日期和时间的格式,注意我们通常国家化的缩写是I18N,而不必拼写完整的“internationalization”单词。I18N意思是以I开头,中间18的字母,并以一个N结尾。
。比如说不同的语言访问同一个页面的时候,可以显示不同的国家的语言,那么其实这也是个国际化。方法是,在不同国家的浏览器的字符可能不同,通过自动验证浏览器字符,去找到响应的properties文件。这里我们主要介绍这种方式,虽然看起来很麻烦,但是使用jstl提供的一点都不麻烦。
但是网页不可能做200多个吧为了适应200种语言,那么对于一个大型的项目来说的代码的维护是多么的不利啊。所以我们就得想办法来解决这个问题,我们jsp已经给我们提供了一种定制标签ftm标签,我们这个标签就可以实现一个jsp网页的国际化。我先给大家讲一个国际化的小例子:
首先大家在tomcat的安装目录下webapps下创建一个jstlinter文件夹。里面放有一个WEB-INF和index.jsp,我们在WEB-INF目录下有前面我们所讲到的8个tld,lib文件夹里放入jstl.jar和standard.jar,这个两个jar包都是jstl那节所讲到的。还有web-xml。接下来我们讲讲各个包里的具体内容。在classes文件夹里的文件,我们先建立一个属性文件,属性文件的后缀名为properties。命名为rs.properties,然后进入DOS敲 native2ascii -encoding gb2312 源文件 目标文件。这就是转换为gb2312编码格式,编译成另一个属性文件rs_zh_CN.properties。我们用写字板将这个两个属性文件打开。里面都写入hello=hi {0}\!。这个讲在前台的index.jsp中使用。
与这俩个文件并列的还有个文件夹,我们双击进入这个org\apache\jsp文件夹下,我会发现一个.class文件。这就是tomcat容器已经给我生成好的文件。
在web-xml里我们写入以下代码:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
<taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
<taglib-location>/WEB-INF/c-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
<taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
<taglib-location>/WEB-INF/x.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
<taglib-location>/WEB-INF/x-rt.tld</taglib-location>
</taglib>
</web-app>
其实这段代码已经在jstl那节讲到了,这就不再重复了,就是为了配置jstl标签。
下面我们就可以在index.jsp里写入我们的代码了,代码如下:
<%@ page contentType="text/html;charset=utf-8" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt"%>
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
<!--设置消息资源文件为rs.properties-->
<fmt:setBundle basename ="rs" var ="rs" />
<fmt:setBundle basename ="rs1" var ="rs1" />
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
<head>
<title>jsp page</title>
</head>
<body>
jsp page
<br />
<!—制定消息的关键字和制定信息的使用文件-->
<fmt:message key ="hello" bundle ="${rs}" >
<fmt:param value ="100jq" />
</fmt:message>
</body>
</html>
我们具体讲一讲jstl为我们提供的ftm实现国际化的各个功能。
<fmt:bundle> 功能:指定消息资源使用的文件
<fmt:message>功能:显示消息资源文件中指定key的消息,支持带参数消息
<fmt:param> 功能:给带参数的消息置参数值
<fmt:setBundle> 功能:设置消息资源文件
。
最后,你在浏览器里敲入http://localhost:8080/jstlinter/index.jsp 你会看到jsp page
hi 100jq!的字样说明你运行成功了 ,这也正根据我们的浏览器的中文字符而实现了国际化。
例子下载
这只是一个简单的例子,大家可以更深的研究。这里我就不详细讲了,希望大家能受到启发。下一节,我们讲一讲jsp如何处理xml文件。