用struts框架尝试国际化程序实现

struts是一个MVC框架,据说struts可以轻松实现国际化;于是根据网上的资料,做了一个尝试,因为第一次做多语言程序,还是拐了很多弯路;但所幸,经过不断的尝试,终于成功的实现多语言版本的简单页面;

因为程序非常简单,所以在整个尝试过程中,全部使用手工编码,没有使用任何辅助工具;

1
建立服务器

我使用Tomcat4作为测试环境,建立过程();

2
下载struts

可以到http://jakarta.apache.org/struts/index.html下载,下载后解压,把其中的.war文件拷贝到Tomcatwebapps目录下,启动Tomcat,如果http://localhost:8080/struts-example/ 运行没有问题,说明环境建立成功;这些.war文件在Tomcat启动后会自动展开成文件,里面有源代码,可以作为源码研究;

3
建立工程

webapps目录下建立一个international文件夹,再在international目录下建立WEB-INF文件夹和WEB-INF/classes文件夹,这些都是一个JSP工程必须的;

4
加了struts的类

WEB-INF目录下建立一个lib子目录,把struts-example/WEB-INF/lib目录下将所有.jar文件拷贝到该目录下;这些文件是struts的控制类库和标签类库等;


commons-beanutils.jar 
commons-collections.jar 
commons-digester.jar 
commons-fileupload.jar 
commons-lang.jar 
commons-logging.jar 
commons-validator.jar 
jakarta-oro.jar 
struts.jar



5
加入struts标签定义文件

struts-example/WEB-INF目录下,把.TLD文件拷贝到internationalWEB-INF目录下,这些文件标签库的定义文件;


struts-bean.tld 
struts-html.tld 
struts-logic.tld 
struts-nested.tld 
struts-template.tld 
struts-tiles.tld



6
建立strutsconfig文件

建立strutsconfig文件的struts-config.xml,内容如下:


<?xml version="1.0" encoding="ISO-8859-1" ?> 
<!DOCTYPE struts-config PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" 
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd";> 
<struts-config> 
<message-resources parameter="resources.application"/> 
</struts-config>



message-resources
标签是指message资源的文件,就是我们存放我们的多种语言的提示信息的文件,resources.application表是classes目录下的resources目录用来存放资源文件,默认语言文件名为application.properties,中文为application_zh_CN.properties,其他语言类似;

7
建立web.xml文件


<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE web-app 
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" 
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd";> 
<web-app> 
<display-name>test international</display-name> 
<servlet> 
<servlet-name>action</servlet-name> 
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 
<init-param> 
<param-name>config</param-name> 
<param-value>/WEB-INF/struts-config.xml</param-value> 
</init-param> 
<init-param> 
<param-name>debug</param-name> 
<param-value>2</param-value> 
</init-param> 
<init-param> 
<param-name>detail</param-name> 
<param-value>2</param-value> 
</init-param> 
<load-on-startup>2</load-on-startup> 
</servlet> 
<servlet-mapping> 
<servlet-name>action</servlet-name> 
<url-pattern>*.do</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
<welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 
<taglib> 
<taglib-uri>/tags/struts-bean</taglib-uri> 
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location> 
</taglib> 
<taglib> 
<taglib-uri>/tags/struts-html</taglib-uri> 
<taglib-location>/WEB-INF/struts-html.tld</taglib-location> 
</taglib> 
<taglib> 
<taglib-uri>/tags/struts-logic</taglib-uri> 
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location> 
</taglib> 
<taglib> 
<taglib-uri>/tags/struts-nested</taglib-uri> 
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location> 
</taglib> 
<taglib> 
<taglib-uri>/tags/struts-tiles</taglib-uri> 
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location> 
</taglib> 
</web-app>



上面的web.xml定义了struts的控制类、config文件和标签,因为比较简单,所以不做解释;

8
建立资源文件

classes目录下,建立一个resources目录,用来存放资源文件;

先建立默认的资源文件application.properties和英文(美国)的资源文件application_en_US.properties,内容为:


# -- international test -- 
test.title=international application test 
test.body=This is a international application test



先建立这两个文件,中文的等下一步建立

9
、建立jsp文件

international目录下,建立index.jsp文件,内容为:


<%@ page contentType="text/html;charset=UTF-8" %> 
<%@ taglib uri="/tags/struts-bean" prefix="bean" %> 
<%@ taglib uri="/tags/struts-html" prefix="html" %> 
<%@ taglib uri="/tags/struts-logic" prefix="logic" %> 
<html:html locale="true"> 
<head> 
<title><bean:message key="test.title"/></title> 
<html:base/> 
</head> 
<body bgcolor="white"> 
<p><bean:message key="test.body"/></p> 
</body> 
</html:html>



在这里表示使用浏览器默认的地区和语言;key的意思是取对应资源文件里的test.title项目的内容;

启动Tomcat,在浏览器里输入http://localhost:8080/international/,查看效果,如果浏览器标题显示international application test,页面里显示This is a international application test则说明你的程序成功了;下面只要增加资源文件,你就可以在多种语言的系统里看了;

10
建立简体中文的资源文件

resources目录下建立一个application_cn.properties,输入内容:


# -- international test -- 
test.title=国际化程序测试 
test.body=这是一个国际化程序测试例子



因为java的国际化是通过unicode码来实现,所以要把代码转为unicode码;在Dos下,转到resources目录,执行:


native2ascii application_cn.properties application_zh_CN.properties



转换后的application_zh_CN.properties文件内容为:


# -- international test -- 
test.title=/u56fd/u9645/u5316/u
        
        
         
         7a
        
        0b/u5e
        
        
         
         8f
        
        /u6d4b/u8bd5 
test.body=/u8fd9/u
        
        
         
         662f
        
        /u4e00/u4e
        
        
         
         2a
        
        /u56fd/u9645/u5316/u
        
        
         
         7a
        
        0b/u5e
        
        
         
         8f
        
        /u6d4b/u8bd5/u
        
        
         
         4f
        
        8b/u5b50



这就是上面的中文的unicode码;

重新启动Tomcat, 在浏览器里输入http://localhost:8080/international/,你看,标题和内容是不是变成中文了;

11
建立繁体中文的资源文件

resources目录下建立一个application_tw.properties,输入内容:


# -- international test -- 
test.title=???H化程式?y?? 
test.body=這是一個國際化程式測試例子



因为java的国际化是通过unicode码来实现,所以要把代码转为unicode码;在Dos下,转到resources目录,执行:


native2ascii application_tw.properties application_zh_TW.properties



转换后的application_zh_TW.properties文件内容为:


# -- international test -- 
test.title=/u570b/u969b/u5316/u
        
        
         
         7a
        
        0b/u
        
        
         
         5f
        
        
        
        
         
         0f
        
        /u6e
        
        
         
         2c
        
        /u
        
        
         
         8a
        
        66 
test.body=/u9019/u
        
        
         
         662f
        
        /u4e00/u500b/u570b/u969b/u5316/u
        
        
         
         7a
        
        0b/u
        
        
         
         5f
        
        
        
        
         
         0f
        
        /u6e
        
        
         
         2c
        
        /u
        
        
         
         8a
        
        66/u
        
        
         
         4f
        
        8b/u5b50



这就是上面的繁体中文的unicode码;

12
测试多语言

打开IE工具”->“Internet选项菜单,常规选项卡,点击其中的语言按钮,添加英语(美国)-[en-us]”语言,将其他的语言删除,重新启动IE后,输入http://localhost:8080/international/index.jsp,你会发现内容已经变成英文;

用同样的方法,可以测试简体中文和繁体中文。

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值