`
zxlj2ee
  • 浏览: 35385 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

struts国际化

阅读更多
一.JSP页面部分
1. 页面文字处理
   1.1概述
由于STRUTS提供了很好的国际化的支持,因此JSP页面可以STRUTS的这一特性做到国际化。

STRUTS允许将不同语言的文字写在多个资源文件中,每个资源对应一种语言,而在JSP页面上则通过STRUTS标签来显示文字,该标签可以根据浏览器的当前语言设置确定从对应的语种资源文件中取出字符串,显示在页面上。

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配置资源文件的所在位置,如:

其中目录以包的方式表示。

1.3 JSP页面显示

为了支持国际化,JSP页面的编码方式需要设成UTF-8,即在页面的头部加入以下几行:

<%@ page contentType="text/html; charset=UTF-8" %>

……(STRUTS及其它标签库引用)

JSP页面的中文字要全部写到资源文件中,注意每种语言资源文件都要写到,否则在使用某种语言访问系统时可能会报错。JSP中使用STRUTS标签显示资源文件中定义的字符串。这样当改变浏览器的当前语言后,页面会自动取得与浏览器当前语言对应的资源文件中的字符串显示在页面上。

对于在ACTION的JAVA代码中直接设置的变量,如需要在JSP页面上进行显示,那么在设置变量时也需要从资源文件中通过KEY取到当前语言的字符串,再使用request.setAttribute方法进行设置,这样在JSP页面上使用标签展现设置的变量才会对应不同的语言会呈现不同的字符串。

在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静态图片

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

2.2 JAVA生成动态图片

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

3. 页面提交参数处理

页面上向WEB服务器提交参数有两种方式,一是在访问URL后面附加上request变量,这样的变量在服务器端可以通过 request.getParameter方法得到,另一种方式是在JSP页面上用FORM表单方式提交,这种方法提交的变量在服务器端可以通过form 的getXXX方法取到变量的值。

当WEB系统需要国际化时,JSP页面的编码方式被指定为UTF-8(前面已有说明),也就是说页面上可以处理各国文字,在使用URL传递变量时需要将变量用JS方法encodeURI方法处理过,才能在服务器端得到正确的值,如

location.href="int/do/common/queryUserInfo.do?sqlcode=QUERY0001&hh="+encodeURI(document.all.hh.value)+"&hm="+encodeURI(document.all.hm.value)+"&bmbh="+encodeURI(document.all.bmbh.value);


由于这种方式需要对每个request变量调用encodeURI方法,处理起来比较麻烦,但用FORM表单提交的方式即不需要进行任何处理,因此在开发时应尽量使用FORM表单提交的方式进行数据传递。

如果需要JAVA代码中生成URL,则其中传递的参数也需要调用URLEncoder.encode方法进行处理,并指定编码方式为"UTF-8"。

在服务器端取得客户端传递的参数时也需要对参数进行字符集的转换后才可以下确使用,如

strString = new String(strString.getBytes("ISO-8859-1"), "GBK");

但如此对每个变量都需要这样处理也是非常麻烦,实际上可以利用servlet的Filter机制进行统一处理。在调用servlet(包括struts)时,在到达实际的servlet类前,会首先调用指定的Filter进行处理,Filter处理完成后再决定是否交给实际请求的servlet类处理。

利用这一点,我们可以新建一个类继承自Filter基类,重载doFilter方法,并在该方法中加入

request.setCharacterEncoding(“UTF-8”);

指定客户端的字符集为UTF-8(默认客户端的字符集为ISO8859),这样在ACTION类中取得的参数就不需要进行任何的转换处理了。

配置Filter的地方在web.xml,在web.xml文件中加入类似这样的配置即可以使自定义的Filter生效:

charsetfilter

international.CharsetFilter

encoding UTF-8

charsetfilter

/*

二.数据库设置

在数据库建库时需要将数据库的字符集指定为unicode编码类型,以支持多种语言。
分享到:
评论

相关推荐

    struts国际化(项目)

    在“struts国际化(项目)”中,我们关注的是如何使应用程序支持多种语言,即国际化(Internationalization,通常缩写为i18n)。这个主题包括了资源包的创建、配置文件的设置以及在Struts中如何调用这些资源来显示...

    struts国际化struts国际化

    以下是对Struts国际化进行详细解释的知识点: 1. **i18n的基本概念**:i18n代表的是“国际化”,之所以称为i18n是因为从'i'到'n'共有18个字母。这个术语用于描述软件或Web应用的设计和实现,使其能够轻松地适应不同...

    struts中文问题,struts国际化问题——终极解决方案

    ### Struts中文问题与国际化问题——终极解决方案深度解析 #### 引言 在Web应用开发中,特别是使用Struts框架时,中文显示和国际化(Internationalization,简称i18n)问题是开发者常遇的挑战。本文将深入探讨解决...

    Struts国际化完整dome

    "Struts国际化完整dome"是一个示例项目,它演示了如何在Struts应用中实现国际化功能。 1. **国际化基础** 国际化是软件开发中的一个关键概念,目的是使软件能够适应不同地区的语言和文化习惯。在Java中,主要通过`...

    Struts国际化录象教程

    通过本“Struts国际化录象教程”,你将学习如何创建资源包,配置Struts以支持国际化,以及如何在JSP页面上使用这些资源。同时,教程也将涵盖如何处理用户选择的语言偏好,确保应用的多语言支持功能顺畅运行。通过...

    struts国际化小工具

    "Struts国际化小工具"可能是一个辅助工具,帮助开发者更方便地管理这些资源束文件,进行翻译和测试。这个小工具可能具有以下功能: 1. **资源文件管理**:工具可能提供了图形用户界面(GUI),允许用户创建、编辑和...

    java struts国际化 struts 源码 演示

    通过这个Java Struts国际化演示项目,你可以深入理解Struts如何处理不同语言的用户请求,以及如何设计和组织资源包。实践操作将帮助你更好地掌握这一技能,从而在实际项目中为用户提供更好的多语言支持。

    2009MLDN魔乐科技Struts课堂05-Struts_Struts国际化处理.rar

    "Struts国际化处理"是指在Struts框架中实现应用程序的多语言支持。这通常涉及到以下几个关键概念和步骤: 1. **资源文件**:在Struts中,我们使用.properties文件来存储不同语言的文本资源。例如,`messages_en....

    struts国际化的使用

    ### Struts国际化的使用 #### 一、Struts框架简介 Struts是一个开源的MVC(Model-View-Controller)框架,它简化了Java Web应用的开发过程,并且支持多种功能,包括表单验证、国际化等。对于需要支持多语言的应用...

    MyI18N-struts国际化实例

    本实例“MyI18N-struts国际化实例”将指导我们如何在Struts项目中实现国际化。下面我们将深入探讨Struts的国际化实现过程、关键组件和步骤。 首先,理解“i18n”的概念,它是“Internationalization”的缩写,i18n...

    struts国际化程序尝试

    ### Struts国际化程序尝试 #### 一、Struts与国际化简介 Struts是一个基于MVC(Model-View-Controller)模式的开源Java Web应用框架,它可以帮助开发者构建可扩展、结构清晰的应用系统。Struts提供了丰富的功能来...

    struts国际化的问题

    在处理Struts国际化问题时,开发者通常需要考虑以下几个关键知识点: 1. **资源文件**:在Struts中,国际化的核心是资源文件,通常命名为`Messages.properties`,它们存储了应用程序中的所有可本地化的字符串。每个...

    struts国际化注册登录验证

    本项目“struts国际化注册登录验证”是基于Struts实现的一个实例,涵盖了用户注册、登录及验证功能,并结合了MySQL数据库来存储用户信息。 1. **Struts框架基础** Struts是一个开源的Java框架,它基于Model-View-...

    struts国际化例子

    在"struts国际化例子"中,我们看到的是如何在Struts框架中实现国际化功能的一个实例。 首先,我们需要理解i18n的基本概念。"i18n"是“国际化”的缩写,这里的数字18代表单词"internationalization"中的字母数量。...

    struts国际化示例代码

    在压缩包文件`jvaee上机struts国际化`中,很可能包含了上述步骤的示例代码。这些代码可能包括了资源文件、Struts配置文件、ActionForm或Action类以及展示本地化内容的JSP页面。通过分析和运行这些示例,你可以更深入...

    Struts国际化源代码

    在这个"Struts2国际化源代码"资源中,我们可以深入理解如何在Struts2应用中实现国际化功能。 首先,国际化的核心在于资源文件,通常命名为`Messages.properties`,其中包含了应用程序中的所有可本地化的字符串。...

    Struts国际化处理的配置

    下面将详细介绍Struts国际化处理的配置步骤和关键知识点。 首先,我们需要了解什么是国际化和本地化。国际化(Internationalization,简称i18n,i与n之间有18个字母)是指设计一个软件或系统,使其能够适应不同的...

    2009MLDN魔乐科技Struts课堂05-Struts_Struts国际化处理

    2009 MLDN魔乐科技 Struts课堂实战视频教程 全6讲 01-Struts_简介与登陆...02-Struts_工作原理与核心配置 03-Struts_对于输入参数的处理 04-Struts_Bean标签功能 05-Struts_Struts国际化处理 非常经典,适合初学者!

    SSH分页小列子,Struts国际化

    标题中的“SSH分页小例子,Struts国际化”涉及到两个主要的Java Web开发技术:Struts框架和SSH(Spring、Struts、Hibernate)集成。SSH是流行的企业级应用开发框架,其中Struts处理表现层,Spring负责业务逻辑,...

Global site tag (gtag.js) - Google Analytics