999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Struts和MVC模式的動態多語言技術在電子商務網站中的應用

2009-04-29 00:00:00
中國管理信息化 2009年20期

[摘 要] 隨著經濟全球化的深入,電子商務網站對多語言的支持非常必要。常規的多語言解決方案通常采用靜態方式,該方式具有實現簡單,訪問快速的優點,但是局限性很大,已經越來越不適應今天已然變得極為繁雜龐大的電子商務整體解決方案的需要。動態多語言技術可以有效地解決這些局限性。本文分析了動態多語言技術的原理和特點,詳細闡述了如何實現基于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方法的設置。把\\Webapps\\servlets-examples\\Web-INF\\classes\\filters\\SetCharacterEncodingFilter. 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。

編寫一個LocaleAction.java類,LocaleAction類接受兩個參數language和country,分別表示轉換語言后的語言和國家。在需要添加改變語言的網頁中添加發出執行LocaleAction.java的動作,并傳入language和country的值,以實現支持動態改變顯示語言的功能。

2.4 模型層的設計(Model)

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

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

3 應用實例

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

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

ApplicationResources-en.properties(英語),

ApplicationResources-zh.properties(簡體中文)

ApplicationResources-tw.properties(繁體中文)

ApplicationResources-jp.properties(日語)。

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

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

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

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類進行擴展;在模型層,增加新的表結構來存儲新語言的數據記錄。這樣可以很方便和清晰地增加對新語言的支持。

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

4 結 語

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

主要參考文獻

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

主站蜘蛛池模板: a级毛片在线免费| 国产网站免费| 丰满人妻中出白浆| 亚洲国产av无码综合原创国产| 五月婷婷丁香综合| 国产精品亚洲五月天高清| 91啪在线| 国产男女XX00免费观看| 成人91在线| 欧美专区日韩专区| 女同国产精品一区二区| 亚洲综合精品香蕉久久网| 久久夜夜视频| 丝袜国产一区| 国产微拍一区| 97久久人人超碰国产精品| 九色视频最新网址 | 亚洲免费福利视频| 亚洲无码91视频| 日韩欧美中文字幕在线精品| 国产精品无码AV片在线观看播放| 国产美女在线观看| 2022国产无码在线| 四虎成人精品| 欧美亚洲一区二区三区导航| 久久久久久午夜精品| 国产屁屁影院| 欧美黄网在线| 国产精品99r8在线观看| 毛片视频网址| 99久久精品视香蕉蕉| 四虎永久在线视频| 国产一区二区三区视频| 久久婷婷五月综合色一区二区| 欧美午夜在线视频| 国内精品久久久久鸭| 亚洲欧美自拍视频| 国产不卡在线看| 精品视频在线观看你懂的一区| 伊人91在线| 国产福利在线免费| 欧美性精品| 国产一线在线| 亚洲福利片无码最新在线播放| 亚洲aⅴ天堂| 国产综合在线观看视频| 国产va免费精品| AV无码一区二区三区四区| jizz国产视频| 亚洲高清无在码在线无弹窗| 日韩A∨精品日韩精品无码| 亚洲免费黄色网| 亚洲精品欧美日本中文字幕| 亚洲欧美国产视频| 欧美国产综合视频| 无码AV动漫| 在线综合亚洲欧美网站| 欧美精品v| 亚洲熟女偷拍| 亚洲首页在线观看| 国产乱人伦偷精品视频AAA| 午夜国产小视频| 久久久精品国产SM调教网站| 亚洲国产亚综合在线区| 国产精品亚洲精品爽爽| 国产精品蜜芽在线观看| 国产成人无码综合亚洲日韩不卡| 最近最新中文字幕在线第一页| 91蜜芽尤物福利在线观看| 国产一级精品毛片基地| 国产综合网站| 国产人成在线观看| 国产成人亚洲精品无码电影| 亚洲成a∧人片在线观看无码| 婷婷综合在线观看丁香| 亚洲色欲色欲www在线观看| 国产极品嫩模在线观看91| 伊人国产无码高清视频| 国产噜噜噜视频在线观看| 亚洲免费成人网| 狠狠色丁婷婷综合久久| 久久精品视频一|