国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Struts和MVC模式的動態(tài)多語言技術在電子商務網(wǎng)站中的應用

2009-01-20 02:30
中國管理信息化 2009年20期
關鍵詞:電子商務應用

盧 鵬

[摘 要] 隨著經(jīng)濟全球化的深入,電子商務網(wǎng)站對多語言的支持非常必要。常規(guī)的多語言解決方案通常采用靜態(tài)方式,該方式具有實現(xiàn)簡單,訪問快速的優(yōu)點,但是局限性很大,已經(jīng)越來越不適應今天已然變得極為繁雜龐大的電子商務整體解決方案的需要。動態(tài)多語言技術可以有效地解決這些局限性。本文分析了動態(tài)多語言技術的原理和特點,詳細闡述了如何實現(xiàn)基于Struts和MVC模式的Web程序的動態(tài)多語言機制,并且介紹了其在電子商務網(wǎng)站中的具體實現(xiàn)技術。

[關鍵詞] 動態(tài)多語言;Struts;MVC模式;電子商務;應用

doi : 10 . 3969 / j . issn . 1673 - 0194 . 2009 . 20 . 036

[中圖分類號]F724.6;TP31 [文獻標識碼]A[文章編號]1673-0194(2009)20-0097-03

1 靜態(tài)多語言解決方案

隨著電子商務企業(yè)與全球各地客戶的交流和商務往來的頻繁和深入,電子商務網(wǎng)站提供多語言的支持已經(jīng)非常普遍和廣泛。在多語言解決方案的初期,由于業(yè)務需求,系統(tǒng)架構的相對簡單和技術上的約束,企業(yè)一般采用的多語言實現(xiàn)技術是靜態(tài)多語言解決方案。這種方式就是為每種語言分別準備一套頁面文件,用戶選擇了需要的語言后,網(wǎng)站自動跳轉到相應的頁面,其他鏈接也是按照同樣方式處理。

這種靜態(tài)的多語言技術有它的可取之處和產(chǎn)生的時代背景。一方面,早期的電子商務網(wǎng)站業(yè)務相對單一,應用相對簡單,甚至僅僅是采用純粹的靜態(tài)頁面來構建整個網(wǎng)站。另一方面,使用靜態(tài)多語言處理技術實現(xiàn)起來很方便,用戶訪問網(wǎng)站也相對比較快速。但是,它也有很多弊端,尤其是隨著電子商務的飛速發(fā)展,現(xiàn)在的電子網(wǎng)站已經(jīng)遠遠不是簡單的信息展示和商品羅列,而是包含了復雜的交互處理和業(yè)務邏輯,而且需要隨著企業(yè)的發(fā)展進行快速頻繁的變動和調整。在此背景下,靜態(tài)多語言解決方案已經(jīng)越來越不適應當今電子商務網(wǎng)站對于多語言支持的需求,其局限性可以歸納為:①浪費了大量系統(tǒng)空間。很多頁面信息與語言無關,準備多套頁面導致這些信息大量重復,浪費了系統(tǒng)空間。②非常不利于維護和擴展。網(wǎng)站發(fā)生變更時,需要做大量的頁面修改和維護工作。③對于高度動態(tài)的網(wǎng)站很難支持。大量網(wǎng)站的信息和數(shù)據(jù)來自于數(shù)據(jù)庫的動態(tài)支持,很難使用簡單的靜態(tài)頁面來提前做好多語言支持工作。

動態(tài)的多語言解決方案則能有效解決上述局限性。它的工作原理是:在頁面上輸出與語言版本有關的地方采用語言變量來表示,再根據(jù)用戶不同的語言環(huán)境給語言變量賦予不同的值,從而能夠實現(xiàn)在不同的語言環(huán)境下輸出不同的語言提示信息。例如:語言變量“@title”,當用戶選擇的語言是英語時賦值為“Title”, 當用戶選擇的語言是簡體中文時賦值為“標題”,這樣就可以適應不同語言時的輸出。通過以上的分析我們可以看出:采用動態(tài)的多語言支持技術時所有的顯示頁面只有一份,只有與語言相關的信息分成多個文件保存,系統(tǒng)根據(jù)用戶的語言環(huán)境動態(tài)生成頁面的提示信息。這種方法節(jié)省了系統(tǒng)空間,具有良好的可維護性和可擴展性。

2 基于Struts和MVC模式的動態(tài)多語言實現(xiàn)

開源框架Struts是Apache軟件組織提供的一個開放源代碼項目,它為Java Web應用提供了模型-視圖-控制器(Model-View-Controller,MVC)模式,與Java技術最常用的Web服務器Tomcat配合使用。同時它還提供了許多可供擴展和定制的地方,使得應用程序可以方便地擴展框架,以更好地適應用戶的實際需求。此外,Struts還提供了完善的國際化功能,使開發(fā)人員能方便地實現(xiàn)國際化的Web應用程序。目前,Struts和MVC模式由于其技術先進性,性能穩(wěn)定,免費和靈活,已經(jīng)成為基于Java語言的電子商務網(wǎng)站構建的主流技術。本文將以Struts和MVC模式為基礎,詳細闡述動態(tài)多語言解決方案的具體實現(xiàn)。

2.1 服務器端的設置(Server)

目前,最常使用的數(shù)據(jù)傳送方式有兩種:第一種是GET,它將表單內(nèi)容附加URL之后,中間用問號連接,然后傳送至指定的程序作處理;第二種傳送方式為POST,這個方法是將表單內(nèi)容作為一個數(shù)據(jù)體而不是URL的一部分傳送給服務器的,所以URL中看不到表單內(nèi)容。Tomcat Web Server對這兩種參數(shù)處理的方法都采用了缺省的ISO-8859-1編碼,當在服務器端用Request的getParameter( )方法獲得非英文的數(shù)據(jù)時返回的是亂碼,因此應將ISO-8859-1改為UTF-8以支持多種語言。如果在JSP文件中未指定,則取Java虛擬機(JVM)中的默認設置file.encoding,一般情況下,這個值是ISO-8859-1,所以首先要在所有JSP網(wǎng)頁中指定char set為UTF-8。

在Tomcat 5中,兩種參數(shù)傳遞方法的編碼方式修改是不一樣的:

(1)POST方法的設置。把Webappsservlets-examplesWeb-INFclassesfiltersSetCharacterEncodingFilter. class文件拷到Webapp目錄/filters下,再在Web.xml里加入對過濾器的調用即可。SetCharacterEncodingFilter類接受一個encoding參數(shù),用來指定編碼方式。加入這個過濾器之后,用戶所有的HTTP請求都先經(jīng)過編碼方式過濾后再進行處理,保證了編碼的一致性。

(2)GET方法的設置。打開Tomcat的server.xml文件,找到Connector區(qū)塊,加入如下一行:URLEncoding= “UTF-8”,來解決用GET方式提交請求時出現(xiàn)亂碼的情況。

至此Tomcat服務器端的編碼設置工作完成。

2.2 視圖層的設計(View)

要實現(xiàn)Web程序的國際化,在網(wǎng)頁中不能出現(xiàn)和特定語言相關的信息,網(wǎng)頁中的提示信息必須都放在相應的資源文件中。在Struts-config.xml中配置message-resources,指定資源文件。例如:ApplicationResources.properties (英文資源文件)中存放系統(tǒng)使用英文環(huán)境時使用的提示信息,而ApplicationResources_zh.properties(簡體中文資源文件)中存放的是系統(tǒng)使用簡體中文環(huán)境時使用的提示信息。在前端視圖層中使用Struts提供的bean:message標簽來從資源文件中獲得提示信息。Struts會根據(jù)用戶終端的Locale信息調用相應的資源文件,而達到支持多種語言的目的。

2.3 控制層的實現(xiàn)(Controller)

Java虛擬機在啟動的時候會查詢操作系統(tǒng),為運行環(huán)境設置默認的Locale。Web Server在其本地環(huán)境中通常會使用以上的Locale;而對于特定的終端用戶,Web Server會從HTTP請求中獲取Locale信息。由于Web服務器并不和客戶端瀏覽器保持長期連接,因此每個發(fā)送到Web容器的HTTP請求中都包含了Locale信息。Struts配置文件的元素的locale屬性指定是否把locale對象保存在session范圍中,默認值為true。

編寫一個LocaleAction.java類,LocaleAction類接受兩個參數(shù)language和country,分別表示轉換語言后的語言和國家。在需要添加改變語言的網(wǎng)頁中添加發(fā)出執(zhí)行LocaleAction.java的動作,并傳入language和country的值,以實現(xiàn)支持動態(tài)改變顯示語言的功能。

2.4 模型層的設計(Model)

(1)常規(guī)數(shù)據(jù)庫的設計。因為要支持多語言信息,所以數(shù)據(jù)庫表的組織對于系統(tǒng)的維護也是影響相當大的。由于系統(tǒng)中有大量和語言環(huán)境無關的信息,如果在數(shù)據(jù)庫級別上支持多語言就會造成大量信息冗余,浪費系統(tǒng)空間,并且多數(shù)據(jù)庫的訪問也會增加系統(tǒng)的復雜性。在字段級別上支持多語言會使數(shù)據(jù)庫表的結構嚴重依賴系統(tǒng)的語言設置,當需要修改或增加語言時,會造成數(shù)據(jù)庫中表字段的改變,可擴展性不好。所以在常規(guī)數(shù)據(jù)庫設計中,一般采用“表級別”的多語言支持。在表級別上支持多語言,把所有與語言無關的信息都保存在一張表中,只有和語言相關的信息才保存到相應的表中。這樣做不但節(jié)省了空間,并且在增加語言時只需要再建立一份相應語言表的信息即可,可維護性和可擴展性都非常好。

(2)數(shù)據(jù)庫的編碼設置。由于數(shù)據(jù)庫要存儲多語言的數(shù)據(jù),前臺的網(wǎng)頁和程序選用的編碼方式是UTF-8,因此后臺數(shù)據(jù)庫的編碼方式也應該是UTF-8。在建立數(shù)據(jù)庫時要聲明數(shù)據(jù)庫以及數(shù)據(jù)庫中表所采用的編碼方式為UTF-8,這樣就避免了出現(xiàn)前后編碼不一致的現(xiàn)象。

3 應用實例

某旅游電子商務網(wǎng)站需要實現(xiàn)對簡體中文、繁體中文、英語、日語共4種語言的支持。它采用了Apache Tomcat 5.5作為Web服務器,以Jakarta—Struts1.2.7來實現(xiàn)MVC框架。使用基于Struts和MVC模式的多語言解決方案。

(1) 視圖層。對Struts提供4種語言的資源文件,以供實現(xiàn)多語言。分別為:

ApplicationResources-en.properties(英語),

ApplicationResources-zh.properties(簡體中文)

ApplicationResources-tw.properties(繁體中文)

ApplicationResources-jp.properties(日語)。

系統(tǒng)的視圖層應用的是JSP技術,在顯示語言信息的時候用bean:message標簽引用相應資源文件。例如要顯示標題則使用

(2)控制層。使用SetCharacterEncodingFilter和LocaleFilter這兩個過濾器來完成編碼方式的轉換和Action信息的保存,使用LocaleAction類來實現(xiàn)語言環(huán)境的改變。

(3)模型層。由于該系統(tǒng)采用的數(shù)據(jù)庫是Mysql,所以定義數(shù)據(jù)庫和表時應采用如下方式:

CREATE DATABASE table_name DEFAULT CHARACIER SET UTF8;

CREATE TABLE ′table_name′(……)ENGINE=InnoDB DEFAULT CHARSET=UTF8;并且還要使用set names UTF-8來聲明在使用mysql時接受客戶端連接、查詢和返回結果的字符集均為UTF-8。

(4)增加新的語言支持。在視圖層中添加新的資源文件;在控制層對LocaleAction類進行擴展;在模型層,增加新的表結構來存儲新語言的數(shù)據(jù)記錄。這樣可以很方便和清晰地增加對新語言的支持。

(5)修改與語言有關的信息內(nèi)容。只需要修改視圖層的資源文件和模型層的相關表數(shù)據(jù)即可,大大降低了網(wǎng)站的維護工作量,提高了系統(tǒng)的可維護性。

4 結 語

Web應用程序的多語言化支持是電子商務技術發(fā)展的必然結果,動態(tài)多語言技術相比傳統(tǒng)的靜態(tài)方案有著許多的優(yōu)點。在未來的發(fā)展中,動態(tài)多語言技術將會得到更廣泛的應用。但是在動態(tài)多語言技術中,語言信息是動態(tài)生成的,所以會占用系統(tǒng)資源,導致系統(tǒng)執(zhí)行的速度減慢。這個缺點可以結合其他網(wǎng)站構建技術和性能優(yōu)化技術予以解決。在實際應用過程中,應綜合考慮多種因素,制訂出切實、有效、可行的多語言支持解決方案。

主要參考文獻

[1] 孫衛(wèi)琴. 精通Struts:基于MVC的JavaWeb設計與開發(fā)[M]. 北京:電子工業(yè)出版社,2004.

猜你喜歡
電子商務應用
2025年我國農(nóng)村電子商務交易額達到2.8萬億元
《電子商務法》如何助力直銷
電子商務
多媒體技術在小學語文教學中的應用研究
分析膜技術及其在電廠水處理中的應用
GM(1,1)白化微分優(yōu)化方程預測模型建模過程應用分析
煤礦井下坑道鉆機人機工程學應用分析
氣體分離提純應用變壓吸附技術的分析
會計與統(tǒng)計的比較研究
關于加快制定電子商務法的議案
阳江市| 沿河| 砀山县| 大理市| 兰溪市| 通化市| 新郑市| 诸暨市| 会东县| 家居| 开化县| 筠连县| 兴海县| 靖宇县| 惠东县| 普定县| 新源县| 龙井市| 安乡县| 宁远县| 石首市| 滨州市| 根河市| 轮台县| 开江县| 长海县| 麻江县| 磴口县| 宜阳县| 嵩明县| 乐亭县| 柘城县| 贡嘎县| 衡水市| 崇阳县| 云安县| 荔波县| 奉节县| 新和县| 贡觉县| 阆中市|