论文部分内容阅读
[摘 要] 随着经济全球化的深入,电子商务网站对多语言的支持非常必要。常规的多语言解决方案通常采用静态方式,该方式具有实现简单,访问快速的优点,但是局限性很大,已经越来越不适应今天已然变得极为繁杂庞大的电子商务整体解决方案的需要。动态多语言技术可以有效地解决这些局限性。本文分析了动态多语言技术的原理和特点,详细阐述了如何实现基于Struts和MVC模式的Web程序的动态多语言机制,并且介绍了其在电子商务网站中的具体实现技术。
[关键词] 动态多语言;Struts;MVC模式;电子商务;应用
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2009 . 20 . 036
[中图分类号]F724.6;TP31 [文献标识码]A[文章编号]1673-0194(2009)20-0097-03
1 静态多语言解决方案
随着电子商务企业与全球各地客户的交流和商务往来的频繁和深入,电子商务网站提供多语言的支持已经非常普遍和广泛。在多语言解决方案的初期,由于业务需求,系统架构的相对简单和技术上的约束,企业一般采用的多语言实现技术是静态多语言解决方案。这种方式就是为每种语言分别准备一套页面文件,用户选择了需要的语言后,网站自动跳转到相应的页面,其他链接也是按照同样方式处理。
这种静态的多语言技术有它的可取之处和产生的时代背景。一方面,早期的电子商务网站业务相对单一,应用相对简单,甚至仅仅是采用纯粹的静态页面来构建整个网站。另一方面,使用静态多语言处理技术实现起来很方便,用户访问网站也相对比较快速。但是,它也有很多弊端,尤其是随着电子商务的飞速发展,现在的电子网站已经远远不是简单的信息展示和商品罗列,而是包含了复杂的交互处理和业务逻辑,而且需要随着企业的发展进行快速频繁的变动和调整。在此背景下,静态多语言解决方案已经越来越不适应当今电子商务网站对于多语言支持的需求,其局限性可以归纳为:①浪费了大量系统空间。很多页面信息与语言无关,准备多套页面导致这些信息大量重复,浪费了系统空间。②非常不利于维护和扩展。网站发生变更时,需要做大量的页面修改和维护工作。③对于高度动态的网站很难支持。大量网站的信息和数据来自于数据库的动态支持,很难使用简单的静态页面来提前做好多语言支持工作。
动态的多语言解决方案则能有效解决上述局限性。它的工作原理是:在页面上输出与语言版本有关的地方采用语言变量来表示,再根据用户不同的语言环境给语言变量赋予不同的值,从而能够实现在不同的语言环境下输出不同的语言提示信息。例如:语言变量“@title”,当用户选择的语言是英语时赋值为“Title”, 当用户选择的语言是简体中文时赋值为“标题”,这样就可以适应不同语言时的输出。通过以上的分析我们可以看出:采用动态的多语言支持技术时所有的显示页面只有一份,只有与语言相关的信息分成多个文件保存,系统根据用户的语言环境动态生成页面的提示信息。这种方法节省了系统空间,具有良好的可维护性和可扩展性。
2 基于Struts和MVC模式的动态多语言实现
开源框架Struts是Apache软件组织提供的一个开放源代码项目,它为Java Web应用提供了模型-视图-控制器(Model-View-Controller,MVC)模式,与Java技术最常用的Web服务器Tomcat配合使用。同时它还提供了许多可供扩展和定制的地方,使得应用程序可以方便地扩展框架,以更好地适应用户的实际需求。此外,Struts还提供了完善的国际化功能,使开发人员能方便地实现国际化的Web应用程序。目前,Struts和MVC模式由于其技术先进性,性能稳定,免费和灵活,已经成为基于Java语言的电子商务网站构建的主流技术。本文将以Struts和MVC模式为基础,详细阐述动态多语言解决方案的具体实现。
2.1 服务器端的设置(Server)
目前,最常使用的数据传送方式有两种:第一种是GET,它将表单内容附加URL之后,中间用问号连接,然后传送至指定的程序作处理;第二种传送方式为POST,这个方法是将表单内容作为一个数据体而不是URL的一部分传送给服务器的,所以URL中看不到表单内容。Tomcat Web Server对这两种参数处理的方法都采用了缺省的ISO-8859-1编码,当在服务器端用Request的getParameter( )方法获得非英文的数据时返回的是乱码,因此应将ISO-8859-1改为UTF-8以支持多种语言。如果在JSP文件中未指定,则取Java虚拟机(JVM)中的默认设置file.encoding,一般情况下,这个值是ISO-8859-1,所以首先要在所有JSP网页中指定char set为UTF-8。
在Tomcat 5中,两种参数传递方法的编码方式修改是不一样的:
(1)POST方法的设置。把Webappsservlets-examplesWeb-INFclassesfiltersSetCharacterEncodingFilter. class文件拷到Webapp目录/filters下,再在Web.xml里加入对过滤器的调用即可。SetCharacterEncodingFilter类接受一个encoding参数,用来指定编码方式。加入这个过滤器之后,用户所有的HTTP请求都先经过编码方式过滤后再进行处理,保证了编码的一致性。
(2)GET方法的设置。打开Tomcat的server.xml文件,找到Connector区块,加入如下一行:URLEncoding= “UTF-8”,来解决用GET方式提交请求时出现乱码的情况。
至此Tomcat服务器端的编码设置工作完成。
2.2 视图层的设计(View)
要实现Web程序的国际化,在网页中不能出现和特定语言相关的信息,网页中的提示信息必须都放在相应的资源文件中。在Struts-config.xml中配置message-resources,指定资源文件。例如:ApplicationResources.properties (英文资源文件)中存放系统使用英文环境时使用的提示信息,而ApplicationResources_zh.properties(简体中文资源文件)中存放的是系统使用简体中文环境时使用的提示信息。在前端视图层中使用Struts提供的bean:message标签来从资源文件中获得提示信息。Struts会根据用户终端的Locale信息调用相应的资源文件,而达到支持多种语言的目的。
2.3 控制层的实现(Controller)
Java虚拟机在启动的时候会查询操作系统,为运行环境设置默认的Locale。Web Server在其本地环境中通常会使用以上的Locale;而对于特定的终端用户,Web Server会从HTTP请求中获取Locale信息。由于Web服务器并不和客户端浏览器保持长期连接,因此每个发送到Web容器的HTTP请求中都包含了Locale信息。Struts配置文件的元素的locale属性指定是否把locale对象保存在session范围中,默认值为true。
[关键词] 动态多语言;Struts;MVC模式;电子商务;应用
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2009 . 20 . 036
[中图分类号]F724.6;TP31 [文献标识码]A[文章编号]1673-0194(2009)20-0097-03
1 静态多语言解决方案
随着电子商务企业与全球各地客户的交流和商务往来的频繁和深入,电子商务网站提供多语言的支持已经非常普遍和广泛。在多语言解决方案的初期,由于业务需求,系统架构的相对简单和技术上的约束,企业一般采用的多语言实现技术是静态多语言解决方案。这种方式就是为每种语言分别准备一套页面文件,用户选择了需要的语言后,网站自动跳转到相应的页面,其他链接也是按照同样方式处理。
这种静态的多语言技术有它的可取之处和产生的时代背景。一方面,早期的电子商务网站业务相对单一,应用相对简单,甚至仅仅是采用纯粹的静态页面来构建整个网站。另一方面,使用静态多语言处理技术实现起来很方便,用户访问网站也相对比较快速。但是,它也有很多弊端,尤其是随着电子商务的飞速发展,现在的电子网站已经远远不是简单的信息展示和商品罗列,而是包含了复杂的交互处理和业务逻辑,而且需要随着企业的发展进行快速频繁的变动和调整。在此背景下,静态多语言解决方案已经越来越不适应当今电子商务网站对于多语言支持的需求,其局限性可以归纳为:①浪费了大量系统空间。很多页面信息与语言无关,准备多套页面导致这些信息大量重复,浪费了系统空间。②非常不利于维护和扩展。网站发生变更时,需要做大量的页面修改和维护工作。③对于高度动态的网站很难支持。大量网站的信息和数据来自于数据库的动态支持,很难使用简单的静态页面来提前做好多语言支持工作。
动态的多语言解决方案则能有效解决上述局限性。它的工作原理是:在页面上输出与语言版本有关的地方采用语言变量来表示,再根据用户不同的语言环境给语言变量赋予不同的值,从而能够实现在不同的语言环境下输出不同的语言提示信息。例如:语言变量“@title”,当用户选择的语言是英语时赋值为“Title”, 当用户选择的语言是简体中文时赋值为“标题”,这样就可以适应不同语言时的输出。通过以上的分析我们可以看出:采用动态的多语言支持技术时所有的显示页面只有一份,只有与语言相关的信息分成多个文件保存,系统根据用户的语言环境动态生成页面的提示信息。这种方法节省了系统空间,具有良好的可维护性和可扩展性。
2 基于Struts和MVC模式的动态多语言实现
开源框架Struts是Apache软件组织提供的一个开放源代码项目,它为Java Web应用提供了模型-视图-控制器(Model-View-Controller,MVC)模式,与Java技术最常用的Web服务器Tomcat配合使用。同时它还提供了许多可供扩展和定制的地方,使得应用程序可以方便地扩展框架,以更好地适应用户的实际需求。此外,Struts还提供了完善的国际化功能,使开发人员能方便地实现国际化的Web应用程序。目前,Struts和MVC模式由于其技术先进性,性能稳定,免费和灵活,已经成为基于Java语言的电子商务网站构建的主流技术。本文将以Struts和MVC模式为基础,详细阐述动态多语言解决方案的具体实现。
2.1 服务器端的设置(Server)
目前,最常使用的数据传送方式有两种:第一种是GET,它将表单内容附加URL之后,中间用问号连接,然后传送至指定的程序作处理;第二种传送方式为POST,这个方法是将表单内容作为一个数据体而不是URL的一部分传送给服务器的,所以URL中看不到表单内容。Tomcat Web Server对这两种参数处理的方法都采用了缺省的ISO-8859-1编码,当在服务器端用Request的getParameter( )方法获得非英文的数据时返回的是乱码,因此应将ISO-8859-1改为UTF-8以支持多种语言。如果在JSP文件中未指定
在Tomcat 5中,两种参数传递方法的编码方式修改是不一样的:
(1)POST方法的设置。把Webappsservlets-examplesWeb-INFclassesfiltersSetCharacterEncodingFilter. class文件拷到Webapp目录/filters下,再在Web.xml里加入对过滤器的调用即可。SetCharacterEncodingFilter类接受一个encoding参数,用来指定编码方式。加入这个过滤器之后,用户所有的HTTP请求都先经过编码方式过滤后再进行处理,保证了编码的一致性。
(2)GET方法的设置。打开Tomcat的server.xml文件,找到Connector区块,加入如下一行:URLEncoding= “UTF-8”,来解决用GET方式提交请求时出现乱码的情况。
至此Tomcat服务器端的编码设置工作完成。
2.2 视图层的设计(View)
要实现Web程序的国际化,在网页中不能出现和特定语言相关的信息,网页中的提示信息必须都放在相应的资源文件中。在Struts-config.xml中配置message-resources,指定资源文件。例如:ApplicationResources.properties (英文资源文件)中存放系统使用英文环境时使用的提示信息,而ApplicationResources_zh.properties(简体中文资源文件)中存放的是系统使用简体中文环境时使用的提示信息。在前端视图层中使用Struts提供的bean:message标签来从资源文件中获得提示信息。Struts会根据用户终端的Locale信息调用相应的资源文件,而达到支持多种语言的目的。
2.3 控制层的实现(Controller)
Java虚拟机在启动的时候会查询操作系统,为运行环境设置默认的Locale。Web Server在其本地环境中通常会使用以上的Locale;而对于特定的终端用户,Web Server会从HTTP请求中获取Locale信息。由于Web服务器并不和客户端浏览器保持长期连接,因此每个发送到Web容器的HTTP请求中都包含了Locale信息。Struts配置文件的