首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>java>java企业应用>正文

开发框架:利用STRUTS实现国际化支持

http://www.oklinux.cn  2008-03-07  来源: 赛迪网 reciting   会员收藏  游客收藏  【 】 

一.JSP页面部分


1. 页面文字处理


1.1概述

由于STRUTS提供了很好的国际化的支持,因此JSP页面可以STRUTS的这一特性做到国际化。
STRUTS允许将不同语言的文字写在多个资源文件中,每个资源对应一种语言,而在JSP页面上则通过STRUTS标签< bean:message>来显示文字,该标签可以根据浏览器的当前语言设置确定从对应的语种资源文件中取出字符串,显示在页面上。

1.2资源文件

实现国际化,首先需要准备好资源文件,需要支持的语言各对应一个。资源文件一定要用支持多国语言文字的文本编辑器(如WORD,一定不能用NOTEPAD、UE等)编写,其格式如下:
# Project international
index.title=XX信息系统
index.copyright=XXX有限公司 版权所有
其中以#开头的行是注释,其它的行都是KEY=VALUE的形式,定义了一个KEY对应当前语言下的文字。保存资源文件时,需要在文件类型选项中选择纯文本类型,编码选择其它>>UTF-8,注意资源文件的扩展名为.properties,文件名可以任意取。
这样保存的资源文件还不能直接被STRUTS使用,JDK提供了一个工具native2ascii对编写的资源文件进行转换,该工具位于%JDK%/bin/目录下,一般在JDK正确安装后可以直接在命令行使用。使用native2ascii工具转换的资源的文件的命令行格式如下:
native2ascii -encoding UTF-8 ApplicationResources.properties ApplicationResources_zh_CN.properties
其中-encoding参数指明编写的资源文件的编码格式,这里必须与编辑时选择保存的编码格式一致,后面两个参数分别是需要转换的资源文件名和转换后保存的资源文件名。
转换后的资源文件名都必须以一个特定的前辍开头,该前辍写在struts-config.xml配置中,后辍是对应语言的简称,如
英文(美国) ApplicationResources _en_US.properties
中文(简体)ApplicationResources _zh_CN.properties
中文(繁体)ApplicationResources _tw.properties
泰语 ApplicationResources _th.properties
资源文件的存放目录可以是/WEB-INF/classes/下的任意目录,为了便于管理 ,建议在/WEB-INF/ classes/下建立目录resources,将所有的资源文件都放在该目录下。STRUTS通过配置文件struts-config.xml配置资源文件的所在位置,如:
< message-resources parameter="resources.ApplicationResources" />
其中目录以包的方式表示。

1.3 JSP页面显示

为了支持国际化,JSP页面的编码方式需要设成UTF-8,即在页面的头部加入以下几行:
< %@ page contentType="text/html; charset=UTF-8" %>
< %@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
……(STRUTS及其它标签库引用)
< html:html locale="true">
JSP页面的中文字要全部写到资源文件中,注意每种语言资源文件都要写到,否则在使用某种语言访问系统时可能会报错。JSP中使用STRUTS标签< bean:message key="index.title"/>显示资源文件中定义的字符串。这样当改变浏览器的当前语言后,页面会自动取得与浏览器当前语言对应的资源文件中的字符串显示在页面上。
对于在ACTION的JAVA代码中直接设置的变量,如需要在JSP页面上进行显示,那么在设置变量时也需要从资源文件中通过KEY取到当前语言的字符串,再使用request.setAttribute方法进行设置,这样在JSP页面上使用< bean:write>标签展现设置的变量才会对应不同的语言会呈现不同的字符串。
在JAVA代码中取资源文件的信息的方法是,首先通过Globals.MESSAGES_KEY从request或session变量中取得资源对象(MessageResources),再调用MessageResources.getMessage方法即可取得相应的字符串,该方法需的两个参数是当前语言区域设置(Locale)和字符串的KEY,其中当前语言区域设置(Locale)保存在SESSION变量中,其变量名为Globals.LOCALE_KEY,该变量在下一节手工设置语言时也有提到。

1.4手工设置显示语言

用浏览器的语言设置来决定系统采用哪种语言展现可能会出现一个问题,就是用户的浏览器语言与他想要使用系统的语言不一致的情况,如某客户浏览器的语言设置为英文,但他还是在使用主站系统时看到的是中文界面。该问题可以通过手工选择语言来解决,在程序中可以通过设置名为Globals.LOCALE_KEY(Globals.LOCALE_KEY 是 struts的常量)的SESSION变量,也能改变系统中当前语言的设置,代码类似于:
Locale newLocale = new Locale( language, country );
session.setAttribute( Globals.LOCALE_KEY, newLocale );
其中变量language, country 可以通过用户的选择设置相应的值,各种语言的对应值参考http://www.unicode.org/unicode/onlinedat/countries.html。

2. 带有文字的图片处理
2.1静态图片
带有文字的图片应该也要根据语言的不同而显示不同的图片,但图片本身不是文本信息,无法直接用< bean:message>标签来完成国际化操作。但由于页面上显示图片取决于< image>标签的src属性,因此可以为每个图片对应各种语言的都准备一个版本,文件名或路径有所差异,然后将每种语言对应的图片的路径及文件名放在资源文件中,而在JSP页面上< image>标签的src属性由< bean:message>标签指定,这样即可以完成图片的国际化。

2.2 JAVA生成动态图片

由于生成动态图片是在服务器端进行,因此同样需要将生成图形字符的静态部分放在资源文件中,如图形名称等,从资源文件中取字符串的方法在JSP页面显示部分已有说明;从数据库中取出的部分可以不用做任何处理,直接从数据库取出与静态部分拼装成图形字符串即可,数据库相关设置在数据库部分有详细说明。

3. 页面提交参数处理

页面上向WEB服务器提交参数有两种方式,一是在访问URL后面附加上request变量,这样的变量在服务器端可以通过request.getParameter方法得到,另一种方式是在JSP页面上用FORM表单方式提交,这种方法提交的变量在服务器端可以通过form的getXXX方法取到变量的值。
当WEB系统需要国际化时,JSP页面的编码方式被指定为UTF-8(前面已有说明),也就是说页面上可以处理各国文字,在使用URL传递变量时需要将变量用JS方法encodeURI方法处理过,才能在服务器端得到正确的值,如

共2页: 上一页 1 [2] 下一页

上一篇:开发框架:深入了解 Struts Validator   下一篇:开发框架:一篇关于SSH架构的简单总结


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·开发框架:深入了解 Struts Validator
·开发框架:一篇关于SSH架构的简单总结
·开发工具:在Eclipse中报错的解决方案
·jboss4.0下使用MySql数据源的设置方法
·Commons-logging Log4j 的入门指南
·Hibernate源码中几个包的作用简要介绍
·开发框架:深入分析JSF与Struts的异同
·Java语言:敏捷开发技巧-消除代码异味
·多线程设计模式:了解wait/notify机制
·开发框架--谈谈对struts多模块的认识
·数据库相关:hibernate O/R映射之基础
·框架:struts的tiles框架应用的一些体会
·visitor模式概念-- visitor模式进一步
·设计及设计模式--设计模式之事务处理
·设计及设计模式--设计模式之Factory
·开发框架--Hibernate事务处理的机制
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Java SE6调用Java编译器的两种新方法
·表现层框架Struts/Tapestry/JSF比较
·在Web项目中用到JNI时应该注意的问题
·JBuilder7 Weblogic7 mysql开发EJB配置
·进阶:Java Reflection (JAVA反射)详解
·以全局的固定顺序获取多个锁来避免死锁
·JAVA高级:Java中限时线程回调方式的实
·超线程多核心下Java多线程编程彻底分析
·开发JAVA编程中字符串分割的两种方法
·Java理论和实践:用软引用阻止内存泄漏
·JAVA入门基础:区分引用类型和原始类型
·学习心得 - JSP处理异常及一些高级主题
  阅读排行
·Commons-logging Log4j 的入门指南
·进阶:Java Reflection (JAVA反射)详解
·服务器及中间件:TomCat 多虚拟站点配置
·开发框架:一篇关于SSH架构的简单总结
·jboss4.0下使用MySql数据源的设置方法
·Java语言:敏捷开发技巧-消除代码异味
·Java SE6调用Java编译器的两种新方法
·使用JAVA中的动态代理实现数据库连接池
·架构与模式:多线程有几种常用的编程模
·数据库相关:Log4j和JDBMonitor的比较
·开发框架-Struts里过滤器的简单使用
·表现层框架Struts/Tapestry/JSF比较
·在Web项目中用到JNI时应该注意的问题
·Java 安全:Java 语言的 XML 验证 API
·开发框架:深入了解 Struts Validator
网摘收藏: