鄧容
摘要:電子政務(wù)網(wǎng)站面對(duì)著全球經(jīng)濟(jì)一體化和政府上網(wǎng)業(yè)務(wù)的逐步深入,需要向多語(yǔ)言和國(guó)際化發(fā)展。靜態(tài)的多語(yǔ)言解決方案雖然具有操作簡(jiǎn)單,瀏覽高速的優(yōu)點(diǎn),然而其缺點(diǎn)很大,越來(lái)越不適應(yīng)當(dāng)今紛繁復(fù)雜的電子政務(wù)系統(tǒng)的整體解決的需求。國(guó)際化動(dòng)態(tài)技術(shù)可以解決靜態(tài)語(yǔ)言解決方案在這些方面的不足。該文重點(diǎn)介紹國(guó)際化動(dòng)態(tài)技術(shù)在廣州市政府政務(wù)網(wǎng)站中的設(shè)計(jì)與實(shí)現(xiàn),闡述其特征和原理,描述其如何在廣州市政府政務(wù)網(wǎng)站中實(shí)現(xiàn)基于MVC架構(gòu)的WEB程序的國(guó)際動(dòng)態(tài)設(shè)計(jì)方案和具體實(shí)現(xiàn)機(jī)制。
關(guān)鍵詞:電子政務(wù);多語(yǔ)言;動(dòng)態(tài)國(guó)際化;MVC架構(gòu)
中圖分類號(hào):TP302 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)01-0263-03
Research and Apply in GZ E-Government Website with Dynamic Internationalization Technology based on MVC Architecture
DENG Rong
(Guangdong Marine Vocational and Technical School,Guangzhou 510320,China )
Abstract: With the development of GZ E-Government Website Project and economic globalization, the internationalization technology support is efficient for the e-government website. Dynamic muli-language solution is take over the static mode. The traditional static technology cannot meet the requirements for e-government website as this approach has many limitations. But Dynamic internationalization technology may solve it.The article design the principle of muli-language dynamic mechanism, analyzes how to implement the GZ E-Government Website Project based on Struts and MVC pattern, and the advantage of simple implements and fast access.
Key words:E-government;multi-language;Dynamic internationalization;MVC architecture
1 多語(yǔ)言的靜態(tài)解決方案
由于廣州市政府政務(wù)網(wǎng)站上網(wǎng)工程的深入和系統(tǒng)越發(fā)繁雜龐大,以及廣州作為國(guó)際化大都市,需要在國(guó)際間信息全球化交互,廣州市政府政務(wù)網(wǎng)站的多語(yǔ)言版本需求具有必要性和廣泛性。初期,業(yè)務(wù)需求要求不高,技術(shù)水平低下,平臺(tái)架構(gòu)處于簡(jiǎn)單階段,對(duì)于多語(yǔ)言解決方案,企業(yè)通常會(huì)采用靜態(tài)方案來(lái)解決業(yè)務(wù)需求,其工作基本思想是根據(jù)每一種場(chǎng)景語(yǔ)言開(kāi)發(fā)一套頁(yè)面文件,當(dāng)用戶切換語(yǔ)言場(chǎng)景時(shí),頁(yè)面中轉(zhuǎn)到相應(yīng)的語(yǔ)言場(chǎng)景中。
多語(yǔ)言靜技術(shù)支持在技術(shù)水平不高,平臺(tái)結(jié)構(gòu)簡(jiǎn)單的初期還是具有一定的優(yōu)勢(shì)。一方面,廣州市政府電子政務(wù)網(wǎng)站的業(yè)務(wù)量不大,功能相對(duì)單一,技術(shù)上約束,系統(tǒng)架構(gòu)就采用了靜態(tài)方案來(lái)完成系統(tǒng)多語(yǔ)言功能。另一方面,這種靜態(tài)技術(shù)支持在一定情況下處理瀏覽頁(yè)面能高速高效,用戶體驗(yàn)好,開(kāi)發(fā)實(shí)現(xiàn)起來(lái)也簡(jiǎn)單方便,但是當(dāng)遇到復(fù)雜的業(yè)務(wù)邏輯問(wèn)題,尤其是廣州政府政務(wù)網(wǎng)站的資訊的擴(kuò)展,不但要求資訊的展示和公告的發(fā)布,還要求有復(fù)雜的數(shù)據(jù)交互和業(yè)務(wù)的邏輯處理。在這種需求下,多語(yǔ)言靜態(tài)支持已經(jīng)越來(lái)越達(dá)不到當(dāng)今廣州政府政務(wù)網(wǎng)站國(guó)際化的多語(yǔ)言的需求。它的不足之處有:①難以支持動(dòng)態(tài)網(wǎng)站的需求變動(dòng):現(xiàn)在絕大多數(shù)的網(wǎng)站的數(shù)據(jù)從數(shù)據(jù)庫(kù)里動(dòng)態(tài)獲取;②占用太多系統(tǒng)空間:存在大量的無(wú)關(guān)于語(yǔ)言的重復(fù)的頁(yè)面信息,提高導(dǎo)致空間的浪費(fèi)和占用。③一定程度上阻礙了后期的維護(hù)工作和二次開(kāi)發(fā):網(wǎng)站需求發(fā)生變更時(shí),會(huì)導(dǎo)致浪費(fèi)時(shí)間和人力資源在大量頁(yè)面文件修改工作上。
多語(yǔ)言國(guó)際化動(dòng)態(tài)技術(shù)支持則可以高效地解決多語(yǔ)言靜態(tài)技術(shù)上的約束與不足,其工作原理:采用語(yǔ)言變更表示頁(yè)面中與語(yǔ)言版本和頁(yè)面輸出有關(guān)的地方,再通過(guò)不同的語(yǔ)言場(chǎng)景給語(yǔ)言變量賦予不相同的值,然后實(shí)現(xiàn)在不同的語(yǔ)言場(chǎng)景中輸出不相同的語(yǔ)言提示。如:變量“@title”,用戶切換英語(yǔ)環(huán)境時(shí)賦英文值為“Title”,當(dāng)用戶切換中文環(huán)境時(shí)賦簡(jiǎn)體中文值為“標(biāo)題”,這樣就可以根據(jù)不同的語(yǔ)言環(huán)境輸出。歸納總結(jié)分析得出,多語(yǔ)言動(dòng)態(tài)解決方案只有一份頁(yè)面顯示文件,根據(jù)與語(yǔ)言相關(guān)的數(shù)據(jù)保存為不同的文件,當(dāng)用戶切換到相應(yīng)的語(yǔ)言環(huán)境中即可動(dòng)態(tài)生成不同的語(yǔ)言的提示對(duì)話框。此技術(shù)既解決了系統(tǒng)空間浪費(fèi)的問(wèn)題也有利于以后的擴(kuò)展和維護(hù)工作進(jìn)行。
2 廣州政府政務(wù)網(wǎng)站中Struts和MVC架構(gòu)國(guó)際化多語(yǔ)言動(dòng)態(tài)解決方案的實(shí)施
Struts架構(gòu)是一個(gè)開(kāi)源的架構(gòu),其源代碼免費(fèi)開(kāi),提供了Model-View-Controller(模型-視圖-控制器)模式給java 開(kāi)發(fā)程序,Tomcat是WEB服務(wù)器最常用的Java技術(shù),Struts架構(gòu)與Tomcat配合使用。同時(shí)它還能更好地適應(yīng)用戶的需求變動(dòng),如提供定制和擴(kuò)展的地方,使系統(tǒng)進(jìn)一步擴(kuò)展架構(gòu)。而且,Struts框架為開(kāi)發(fā)人員提供便利的Web程序和各種完善的國(guó)際化功能。此外, Struts和MVC模式是基于Java語(yǔ)言的電子政務(wù)網(wǎng)站平臺(tái),其性能技術(shù)優(yōu)秀。本文的實(shí)際案例是在Struts和MVC模式上研究多語(yǔ)言動(dòng)態(tài)技術(shù)支持在廣州政府政務(wù)網(wǎng)站的具體實(shí)現(xiàn)。
2.1 設(shè)置Server端數(shù)據(jù)
當(dāng)前,數(shù)據(jù)傳輸最常用的兩種技術(shù),第一種是POST傳送方式,這種方式的原理不把表單數(shù)據(jù)放在URL中,而且是作為數(shù)據(jù)體傳送給服務(wù)器,故URL中沒(méi)有表單的數(shù)據(jù)。另一種是GET方式,把表單數(shù)據(jù)使用問(wèn)號(hào)將其相連,并加在URL當(dāng)中,運(yùn)用指定程序進(jìn)行處理。在Tomcat WEB Server中,使用缺省的ISO-8859-1編碼在這兩種參數(shù)中。當(dāng)系統(tǒng)需要獲取非英語(yǔ)字段時(shí),在Server端設(shè)置Request的參數(shù)gdtParameter(),返回的結(jié)果是亂碼,所以經(jīng)改良,使用以下方法來(lái)支持多語(yǔ)言,設(shè)置ISO-ISO-8859-18859-1改為UTF-8。假如發(fā)現(xiàn)JSP中找不到
兩種參數(shù)傳遞的編碼方式在Tomcat5.0中都有不同的設(shè)置
POST方法的數(shù)據(jù)設(shè)置。加入一個(gè)過(guò)濾有器,用戶的全部HTTP請(qǐng)求都要首先經(jīng)過(guò)這個(gè)過(guò)濾器編碼方式過(guò)濾來(lái)保證所編碼的一致性。具體操作如下:在文件夾中的\GZ-WEBapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class文件拷到GZ-WEBapp目錄/filters下,在WEB.Xml中加入對(duì)過(guò)濾器的調(diào)用即可完成過(guò)濾器的添加。
GET方法數(shù)據(jù)的設(shè)置。GET方式提交請(qǐng)求時(shí)出現(xiàn)亂碼問(wèn)題的解決方法:在tomcat中設(shè)置server.xml文件,并加入U(xiǎn)RLEncoding= “UTF-8”在Connector區(qū)域中。這樣操作,亂碼問(wèn)題即可解決。
Tomcat Server端的設(shè)置到此為止可以完成。
2.2 View層的實(shí)現(xiàn)
為實(shí)現(xiàn)國(guó)際化WEB程序系統(tǒng),禁在特定的語(yǔ)言場(chǎng)景中出現(xiàn)非特定語(yǔ)言等不相關(guān)的數(shù)據(jù)信息,網(wǎng)頁(yè)設(shè)計(jì)時(shí)需要把把特定的提示信息放在特定的資源文件里面。以下介紹配置Struts-config.xml中指定資源文件e-resources,如法語(yǔ)資源文件GZ_GOV_ApplicationResources_fr.properties存放有關(guān)法語(yǔ)的提示信息,并在用戶切換到該環(huán)境時(shí)系統(tǒng)在此提取提示信息。Struts會(huì)根據(jù)終端的Locale調(diào)用相對(duì)應(yīng)的資源文件,其中bean:measage標(biāo)簽可以從中獲取到相對(duì)應(yīng)的提示信息。英文,簡(jiǎn)體中文,繁體中文,日語(yǔ)也是同樣原理。最終達(dá)到支持多語(yǔ)言動(dòng)態(tài)技術(shù)的目的。
2.3 Controller層的設(shè)計(jì)
在操作環(huán)境中默認(rèn)設(shè)置Locale,因?yàn)镴VM虛擬機(jī)在開(kāi)啟時(shí)會(huì)查詢操作系統(tǒng)。WEB服務(wù)器在本地環(huán)境會(huì)使用默認(rèn)Locale;而對(duì)于某次指定的終端,WEB服務(wù)器會(huì)在HTTP中獲得Locale的數(shù)據(jù)。因?yàn)閃eb Server不與User端Browser長(zhǎng)時(shí)間連著,故在會(huì)在HTTP請(qǐng)求中每次包含Locale數(shù)據(jù)并發(fā)送到WEB Server。Struts中要把指定locale放在session范圍內(nèi),設(shè)置為
這里特意編寫了一個(gè)LocaleAction.java類,并使用兩個(gè)參數(shù)country和language,用來(lái)表示切換語(yǔ)言場(chǎng)景后的國(guó)家和語(yǔ)言。在要切換語(yǔ)言場(chǎng)景的頁(yè)面中寫入并執(zhí)行LocaleAction.java的動(dòng)作,為達(dá)到實(shí)現(xiàn)動(dòng)態(tài)改變顯示切換語(yǔ)言環(huán)境的功能,再傳入language和country的值。
2.4 Model層的設(shè)計(jì)
標(biāo)準(zhǔn)DB(數(shù)據(jù)庫(kù))設(shè)計(jì)。為了實(shí)現(xiàn)支持切換多語(yǔ)言環(huán)境,在系統(tǒng)維護(hù)中對(duì)數(shù)據(jù)庫(kù)表組織的影響非常大。由于系統(tǒng)環(huán)境中有很多與語(yǔ)言無(wú)關(guān)的數(shù)據(jù), 造成數(shù)據(jù)庫(kù)數(shù)據(jù)冗余,浪費(fèi)資源空間,降低性能,加重負(fù)擔(dān)。倘若采取字段上使用多語(yǔ)言技術(shù)的方法,會(huì)使數(shù)據(jù)表結(jié)構(gòu)依賴系統(tǒng)的語(yǔ)言設(shè)置,當(dāng)系統(tǒng)需要擴(kuò)展時(shí),如語(yǔ)言進(jìn)行增刪改時(shí),會(huì)導(dǎo)致數(shù)據(jù)表字段的變化。所以更好更標(biāo)準(zhǔn)的數(shù)據(jù)設(shè)計(jì)采用“表級(jí)別”上使用多語(yǔ)言技術(shù),具體設(shè)計(jì)思路是只允許與語(yǔ)言有關(guān)的數(shù)據(jù)存放在相應(yīng)的表中,而把所有與語(yǔ)言無(wú)關(guān)的數(shù)據(jù)存放在一張表中。這樣的處理方式即提高性能,節(jié)省資源空間,在增加語(yǔ)言再建立一個(gè)與之對(duì)應(yīng)的語(yǔ)言表,加大了維護(hù)和擴(kuò)展的力度。
DB(數(shù)據(jù)庫(kù))編碼。因?yàn)镈B中前臺(tái)的網(wǎng)頁(yè)頁(yè)面使用UTF-8的編碼方法來(lái)存放著大量的多語(yǔ)言的相關(guān)信息,所以后臺(tái)DB中的編碼方法也是使用UTF-8。在初建數(shù)據(jù)庫(kù)時(shí)應(yīng)該約定數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)表中使用的編碼方法是UTF-8,以防出現(xiàn)以前的編碼方式和以后的編碼方式不一樣的問(wèn)題。
3 廣州政府政務(wù)電子網(wǎng)站系統(tǒng)應(yīng)用的實(shí)際案例
廣州政府政務(wù)電子網(wǎng)站業(yè)務(wù)擴(kuò)大國(guó)際化范圍,要求實(shí)現(xiàn)英文、簡(jiǎn)體中文,繁體中文,法文,日本五種語(yǔ)言。系統(tǒng)采用了以Jakarta—Struts1.2.7來(lái)實(shí)現(xiàn)MV框架,實(shí)現(xiàn)基于Struts和MVC模式的多語(yǔ)言技術(shù)支持,并使用Apache Tomcat 5.5為Web Server。
1)model層。系統(tǒng)使用Mysql數(shù)據(jù)庫(kù),SQL語(yǔ)句如下:
CREATE DATABASE GZ_GOV_table_name DEFAULT CHARACIER SET UTF8;
CREATE GZ_GOV_table table_name()ENGINE=InnoDB DEFAULT CHARSET=UTF8
并且用set names UTF-8來(lái)聲明使用Mysql連接user端,搜索和輸出結(jié)果的字符集都是UTF-8。
2) Controller層。Controller(控制)層中,在處理編碼轉(zhuǎn)換和Action數(shù)據(jù)保存上,使用兩個(gè)過(guò)濾器來(lái)完成,分別是SetCharacterEncoding系統(tǒng)Filter和LocaleFilter,同時(shí)使用LocaleAction類執(zhí)行多語(yǔ)言技術(shù)的轉(zhuǎn)變。
3)View層。Struts提供五種語(yǔ)言的支持多語(yǔ)言的資源文件。如下:
GZ_GOV_ApplicationResources-zh.properties(簡(jiǎn)體中文資源文件)
GZ_GOV_ApplicationResources-tw.properties(繁體中文資源文件)
GZ_GOV_ApplicationResources-en.properties(英語(yǔ)資源文件)
GZ_GOV_ApplicationResources-fr.properties(法語(yǔ)資源文件)
GZ_GOV_ApplicationResources-jp.properties(日語(yǔ)資源文件)。
用JSP技術(shù)實(shí)現(xiàn)程序的view層,顯示語(yǔ)言數(shù)據(jù)時(shí)使用標(biāo)簽bean:message引用。如顯示標(biāo)題時(shí)使用
4)當(dāng)修改與語(yǔ)言相關(guān)的數(shù)據(jù)時(shí),修改View層的數(shù)據(jù)資源文件和Model表數(shù)據(jù)就可以了,這些處理的優(yōu)勢(shì)是維護(hù)起來(lái)方便。
5)在View層中會(huì)新增對(duì)應(yīng)的數(shù)據(jù)文件在新添語(yǔ)言的支持上;在Control層中對(duì)LocaleAction類進(jìn)行擴(kuò)充;在Model層中,新增表結(jié)構(gòu)以存放新語(yǔ)言數(shù)據(jù)內(nèi)容。這樣很方便地對(duì)新添語(yǔ)言進(jìn)行技術(shù)支持和提供解決方案。
4 結(jié)束語(yǔ)
廣州政府政務(wù)電子網(wǎng)站W(wǎng)EB應(yīng)用多語(yǔ)言國(guó)際化動(dòng)態(tài)解決方案和全球國(guó)際化業(yè)務(wù)是業(yè)務(wù)發(fā)展的趨勢(shì)。靜態(tài)多語(yǔ)言技術(shù)已經(jīng)不適合當(dāng)今電子政務(wù)網(wǎng)站的發(fā)展,取而代之的是國(guó)際化多語(yǔ)言動(dòng)態(tài)解決方案。而且在長(zhǎng)遠(yuǎn)的時(shí)代發(fā)展中,國(guó)際多語(yǔ)言技術(shù)必然得到更為廣泛的應(yīng)用與推廣。然后動(dòng)態(tài)多語(yǔ)言技術(shù)自身還沒(méi)存在一定的缺點(diǎn),比如動(dòng)態(tài)產(chǎn)生語(yǔ)言信息會(huì)導(dǎo)致性能降低。可以使用性能優(yōu)化和其他網(wǎng)站搭建等方法來(lái)解決。本文就不一一細(xì)講了。在各大應(yīng)用程序中,需要考慮多方面的因素,制定切實(shí)可行,方便維護(hù)和拓展的多語(yǔ)言動(dòng)態(tài)技術(shù)支持方案。
參考文獻(xiàn):
[1] 孫衛(wèi)琴.精通Struts:基于MVC的JavaWEB設(shè)計(jì)與開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2OO4.
[2] 多語(yǔ)言網(wǎng)站開(kāi)發(fā)[EB/OL].http://www.cnbruce.com/blog,20O5-5-18.
[3] The Apache Software Foundation, Struts相關(guān)文檔. http://struts.apache.org.
[4] 張正禮. ASP.NET MVC4架構(gòu)實(shí)現(xiàn)與項(xiàng)目實(shí)戰(zhàn)[M].清華大學(xué)出版社,2014.
[5] 王新. 基于MVC和EF架構(gòu)的監(jiān)理信息系統(tǒng)開(kāi)發(fā)實(shí)踐[M].冶金工業(yè)出版社,2015.
[6] 沈文軒. 軟件工程基礎(chǔ)與實(shí)用教程——基于架構(gòu)與MVC模式的一體化開(kāi)發(fā)[M].清華大學(xué)出版社,2012.
[7] 孫衛(wèi)琴. TOMCAT與JAVA WEB開(kāi)發(fā)技術(shù)詳解[M].電子工業(yè)出版社,2009.
[8] 賈森· 布里泰恩,伊恩· 達(dá)爾文. Tomcat權(quán)威指南[M].中國(guó)電力出版社,2009.
[9] 林龍. JSP+Servlet+Tomcat應(yīng)用開(kāi)發(fā)從零開(kāi)始學(xué)[M].清華大學(xué)出版社,2010.
[10] 賈蓓,鎮(zhèn)明敏,杜磊. Java Web整合開(kāi)發(fā)實(shí)戰(zhàn)——基于Struts 2+Hibernate+Spring[M].清華大學(xué)出版社,2013.
[11] 段鵬松,李占波. 輕量級(jí)Java Web整合開(kāi)發(fā)入門——Struts2+Hibernate4+Spring3[M].清華大學(xué)出版社,2015.
[12] 張洪偉.Java開(kāi)發(fā)利器:Tomcat Web開(kāi)發(fā)及整合應(yīng)用[M].清華大學(xué)出版社,2006.
[13] 孫衛(wèi)琴,李洪成.開(kāi)發(fā)專家之Sun ONE:Tomcat與Java Web開(kāi)發(fā)技術(shù)詳解[M].清華大學(xué)出版社,2008.
[14] 蔡劍,景楠.Java Web應(yīng)用開(kāi)發(fā):J2EE和Tomcat.Java Web應(yīng)用開(kāi)發(fā):J2EE和Tomcat,2005.
[15] 希賽IT發(fā)展研究中心組.貫通Java Web開(kāi)發(fā)三劍客:Eclipse+Tomcat+Ant整合開(kāi)發(fā)[M].電子工業(yè)出版社,2008.
[16] 劉中兵.精通Tomcat——Java Web應(yīng)用開(kāi)發(fā)、框架分析與組件配置、系統(tǒng)集成與案例實(shí)戰(zhàn)[M].清華大學(xué)出版社,2007.
[17] 陳菁菁.程序員突擊——Tomcat原理與Java Web系統(tǒng)開(kāi)發(fā)[M].清華大學(xué)出版社,2009.
[18] 封超,晁陽(yáng).Tomcat與Java Web開(kāi)發(fā)技術(shù)詳解[M].清華大學(xué)出版社,2008.
[19] 楊曉軍. MVC Web開(kāi)發(fā)學(xué)習(xí)實(shí)錄[M].清華大學(xué)出版社,2011.
[20] 伊雯雯. 基于MVC的Java Web開(kāi)發(fā)項(xiàng)目式教程[M].人民郵電出版社,2014.