spring + jstl 实现java国际化的配置步骤
1. 搭建好tomcat服务器,并且加入spring的相关lib。实现此步骤的参考文章很多,我的环境是以前搭建好的,就直接那来用了。
2.下载jstl需要的包jstl.jar和standard.jar,并且放入WEB-INF/lib目录下。
3.修改web.xml,注册国际化需要的tag标签。在web.xml文件中加入如下的标签注册信息<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/tld/jstl/fmt.tld</taglib-location>
</taglib>
顺便提示一下,上述上一段话,我开始忘记加了,结果试了半天都出不来。我们用rar软件打开jstl.jar文件,以此进入目录javax\servlet\jsp\jstl\,可以看到tlv、sql、fmt和core四个文件夹,突然发现上述的<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
中的fmt与四个文件夹中的一个同名,如果要使用另外三个标签库,也可以相应的配置。这里国际化只用到fmt标签库,所以这里只导入这一个。
在web.xml文件中加入国际化资源文件的配置,如下:
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-val>message</param-val>
</context-param>
注意message为资源文件的名称。在此我的资源文件为message_zh_CN.properties和message_en_US.properties。
4.创建资源文件message_zh_CN.properties和message_en_US.properties,这里只做英文和中文的示例,如果还需要支持其他的语言,只需要增加相应的资源文件即可,具体的后缀可以通过ie浏览器看到,如何看?“Internet选项”--“语言...”--“添加”,应该看到了,就是那个语言列表中的后缀。
中文的资源message_zh_CN.properties的内容为:
name = \张\三
sex = \男
country = \中\国
看起来很奇怪是吧,我一开始也觉得奇怪,怎么放了这么写乱七八糟的东西,后来一查才知道,中文必须要用ascii码的方式来记录,麻烦。头大了,这不是要写死我,哪记得住?不过庆幸的是,jdk自带了一个转码工具native2ascii,专门将本地文件转换为ascii码来表示。我们在C盘根目录下新建一个message_zh_CN_src.properties文件,存放内容如下:
name = 张三
sex = 男
country = 中国
然后cmd,打开命令行窗口,敲入:native2ascii -encoding gbk C:\messages_zh_CN_src.properties C:\messages_zh_CN.properties,这样messages_zh_CN.properties文件就存放的是转码后的内容了,还比较简单。
英文资源message_en_US.properties不需要转码,内容就很简单,我这里的内容为:
name = zhangsan
sex = male
country = china
上述两个文件均放置在WEB-INF/classes目录下。
5. 编写测试页面message.jsp,内容如下: <%@ page lang ge="java" contentType="text/html;charset=GBK"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%><!--导入注册的标签库-->
<fmt:message key="name"/><!--name为properties文件中的key值->
6.启动tomcat。如果配置一切ok的话,启动成功,然后在地址栏中访问message.jsp页面。可以正常看到“张三”。在工具--Internet选项--语言...---添加...---英语(美国) [en-us],并将该选择项上移到 中文(中国) [zh-cn]的上方,重新刷新页面,可以看到zhangsa,国际化配置成功。