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