J2ee系統(tǒng)中的語言加載方法及裝置制造方法
【專利摘要】本發(fā)明提供一種J2EE系統(tǒng)中的語言加載方法及裝置,所述方法包括如下步驟:獲取客戶端的IP,并根據(jù)所述IP得到客戶端的地址信息;獲取與所述地址信息相對應的使用語言;讀取客戶端上一次連接服務器時保存在cookie中的語言值,并在所述語言值不為空的情況下,判斷所述語言值與所述使用語言是否相同;若是,則根據(jù)所述使用語言讀取相應的資源文件并加載到J2EE系統(tǒng)中。本發(fā)明的J2EE系統(tǒng)中的語言加載方法及裝置,有效提高了語言加載的效率,保證用戶能夠正常使用J2EE系統(tǒng),而且節(jié)省了系統(tǒng)運行的內存,使系統(tǒng)的運行速度更快,并且增加或減少系統(tǒng)語言或語言種類更加簡單、方便。
【專利說明】J2EE系統(tǒng)中的語言加載方法及裝置
【技術領域】
[0001]本發(fā)明涉及計算機網(wǎng)絡領域,特別是涉及一種J2EE系統(tǒng)中的語言加載方法以及一種J2EE系統(tǒng)中的語言加載裝置。
【背景技術】
[0002]目前,J2EE (Java2Platform, Enterprise Edition, Java2 平臺企業(yè)版)實現(xiàn)的系統(tǒng)多是單語言系統(tǒng),即系統(tǒng)語言等只以一種語言顯示,且語言設置是在系統(tǒng)程序文件里面,用戶連接系統(tǒng)只能選擇開發(fā)者默認的那種語言。這樣的系統(tǒng)是不科學的,也是不便捷的,因為使用的人群會因為語言的限制而變得狹窄。
[0003]隨著近年來國際化合作越來越普遍,對J2EE多語言系統(tǒng)的要求越來越多。事實上,無論是單語言系統(tǒng)還是多語言系統(tǒng),他們共同的特點就是:系統(tǒng)在完成的時候要默認加載一種語言,比如漢語或者英語。只不過在多語言系統(tǒng)下,用戶可以找到修改語言的地方,通過自己手動進行修改從而更換系統(tǒng)語言。但是這樣有一個很不好的地方,例如系統(tǒng)當前默認加載的是漢語,那么漢語不好的外國用戶初次連接J2EE系統(tǒng)時,該外國用戶將根本就看不懂甚至找不到修改語言的地方,從而無法正常使用J2EE系統(tǒng);同理,如果當前默認加載語言為英語,此時英語不好的用戶也無法正常使用J2EE系統(tǒng)。
[0004]因此,在J2EE多語言系統(tǒng)環(huán)境下,如何更高效的加載用戶真正想要展現(xiàn)的語言,從而保證用戶正常使用J2EE系統(tǒng),成為一個亟待解決的問題。
【發(fā)明內容】
[0005]基于此,本發(fā)明提供一種J2EE系統(tǒng)中的語言加載方法及裝置,能夠提高語言加載效率。
[0006]為實現(xiàn)上述目的,本發(fā)明采用如下的技術方案:
[0007]一種J2EE系統(tǒng)中的語言加載方法,包括如下步驟:
[0008]獲取客戶端的IP,并根據(jù)所述IP得到客戶端的地址信息;
[0009]獲取與所述地址信息相對應的使用語言;
[0010]讀取客戶端上一次連接服務器時保存在cookie中的語言值,并在所述語言值不為空的情況下,判斷所述語言值與所述使用語言是否相同;
[0011]若是,則根據(jù)所述使用語言讀取相應的資源文件并加載到J2EE系統(tǒng)中。
[0012]一種J2EE系統(tǒng)中的語言加載裝置,包括:
[0013]地址信息獲取模塊,用于獲取客戶端的IP,并根據(jù)所述IP得到客戶端的地址信息;
[0014]使用語言獲取模塊,用于獲取與所述地址信息相對應的使用語言;
[0015]判斷模塊,用于讀取客戶端上一次連接服務器時保存在cookie中的語言值,并在所述語言值不為空的情況下,判斷所述語言值與所述使用語言是否相同;
[0016]第一加載模塊,用于在所述判斷模塊的判斷結果為是的情況下,根據(jù)所述使用語言讀取相應的資源文件并加載到J2EE系統(tǒng)中。
[0017]由以上方案可以看出,本發(fā)明的J2EE系統(tǒng)中的語言加載方法及裝置,通過獲取客戶端的連接ip地址以及上次連接服務器時保存在cookie中的語言值,自動分析出用戶常用的語言,然后選擇相應的資源文件進行加載,讓用戶連接J2EE系統(tǒng)就可以很自然的看到自己熟悉的語言,這樣一來不僅給用戶一個親切的操作界面,還省去了多語言環(huán)境下需要自己動手去選擇語言的麻煩,有效提高了語言加載的效率,保證用戶能夠正常使用J2EE系統(tǒng);而且本發(fā)明通過使用資源文件來讀取語言信息,避免了通過系統(tǒng)程序文件調用語言信息的方式,從而節(jié)省了系統(tǒng)運行的內存,使系統(tǒng)的運行速度更快;此外,本發(fā)明把系統(tǒng)語言通過資源文件存儲而不是在系統(tǒng)程序文件中讀取,當增減語言時只要更改資源文件即可,這樣一來增加或減少系統(tǒng)語言或語言種類更加簡單、方便。
【專利附圖】
【附圖說明】
[0018]圖1為本發(fā)明一種J2EE系統(tǒng)中的語言加載方法的流程示意圖;
[0019]圖2為本發(fā)明一種J2EE系統(tǒng)中的語言加載裝置的結構示意圖。
【具體實施方式】
[0020]下面結合附圖以及具體的實施例,對本發(fā)明的技術方案作進一步的描述。
[0021]參見圖1所示,一種J2EE系統(tǒng)中的語言加載方法,包括以下步驟:
[0022]步驟S101,獲取客戶端的IP (Internet Protocol,互聯(lián)網(wǎng)協(xié)議),并根據(jù)所述IP得到客戶端的地址信息。
[0023]獲取客戶端的IP的方法有很多,本發(fā)明實施例中,可以使用如下代碼來獲取客戶端的IP:`[0024]public String getlpAddr(HttpServletRequestrequest){
[0025]String ip=request.getHeader("χ-forwarded-for");
[0026]if (ip==null ip.length () ==0 !"unknown' equalsIgnoreCase (ip)) {
[0027]ip=request.getHeader("Proxy-Client-1P");
[0028]}
[0029]if (ip==null ip.length () ==0 !"unknown' equalsIgnoreCase (ip)) {
[0030]ip=request.getHeader("WL-Proxy-Client-1P");
[0031]}
[0032]if (ip==null ip.length () ==0 !"unknown' equalsIgnoreCase (ip)) {
[0033]ip=request.getRemoteAddr ();
[0034]}
[0035]return ip;
[0036]}
[0037]另外,本發(fā)明實施例中,可以預先準備一個完整的IP地址庫,該IP地址庫具備各個國家、地區(qū)的IP地址段,在獲得客戶端的IP后,將所述IP在IP地址庫中進行匹配,即可得到客戶端的地址信息(如該客戶端屬于哪個國家、哪個地區(qū))。
[0038]步驟S102,獲取與所述地址信息相對應的使用語言。如假設地址信息顯示為美國,則可知與該地址信息相對應的使用語言是英語。
[0039]步驟S103,讀取客戶端上一次連接服務器時保存在cookie中的語言值,如“漢語”、“英語”等;并在所述語言值不為空的情況下(只要存在某種語言則說明語言值不為空),判斷所述語言值與所述使用語言是否相同;如果相同則進入步驟S104。
[0040]步驟S104,若步驟S103中判斷的結果為所述語言值與所述使用語言相同,則根據(jù)所述使用語言讀取相應的資源文件并加載到J2EE系統(tǒng)中。
[0041]需要說明的是,傳統(tǒng)方案中通過系統(tǒng)程序文件來調用語言信息,而本發(fā)明中則通過使用資源文件來讀取語言信息。本發(fā)明中所預先編寫好的資源文件的文件類型為piOterties,系統(tǒng)需要幾種語言就預先創(chuàng)建幾個資源文件,并且文件名稱需要標示(比如英語的資源文件名稱為xitong_en.proterties,漢語的資源文件名稱為xitong_ch.proterties),資源文件可以使用myeclipse工具編寫,資源文件編寫有兩個屬性:一個是name (資源文件名),一個是value (系統(tǒng)語目信息)。name值是我們在程序中調用的,在系統(tǒng)顯示的是后面的value值,所以name值在各個語言資源文件中是不變的,value值則是不同語言的系統(tǒng)。資源文件加載之后,J2EE系統(tǒng)從中根據(jù)name讀取value信息,并將value信息應用到J2EE系統(tǒng)中,即可實現(xiàn)系統(tǒng)的語言顯示。
[0042]作為一個較好的實施例,若步驟S103中判斷的結果為所述語言值與所述使用語言不相同,如cookie中的語言值為漢語,而根據(jù)客戶端的IP所獲取到的使用語言卻是英語,此時由于發(fā)生了沖突,因此可以根據(jù)所述語言值與所述使用語言生成一個雙語言選擇框,如在這個生成的雙語言選擇框中將漢語、英語列出來供用戶選擇,讓用戶在這兩種語言選擇一種;用戶完成選擇后會有一個返回結果,此時,客戶端可以根據(jù)所述雙語言選擇框的返回結果讀取對應的資源文件并加載到J2EE系統(tǒng)中。
[0043]采用本發(fā)明的方案,J2EE系統(tǒng)默認語言是不固定的,是根據(jù)用戶的連接IP地址來準確的匹配到用戶的IP是哪個國家或地區(qū),然后又根據(jù)用戶上次連接服務器時保存在cookie中的語言值進行二次驗證,采用這兩種方式的混合判斷,保證J2EE系統(tǒng)最終為用戶選擇最舒適的語言,這樣可以給用戶帶來良好的體驗,也省去了因為語言不懂的麻煩。例如,有個別特殊情況,如一個中國人拿著自己的電腦到英國出差,我們若只根據(jù)IP進行判斷,則必定給用戶自動選擇英語進行加載,但是實際上最適合該用戶的應該是漢語;所以,我們通過將cookie中保存的上一次語言值和IP地址分析出來的值進行匹配,如果不相同的話,就讓用戶自己選擇其中一種,從而保證了用戶能夠正常使用J2EE系統(tǒng)。
[0044]作為一個較好的實施例,在步驟S103中,若所述語言值為空,則可以直接根據(jù)步驟S102中獲取到的使用語言來讀取相應的資源文件并加載到J2EE系統(tǒng)中。
[0045]另外,作為一個較好的實施例,在步驟S103讀取相應的資源文件并加載到J2EE系統(tǒng)之后,還可以包括如下步驟:根據(jù)所述資源文件中的系統(tǒng)語言信息更新所述cookie中的語言值。通過將用戶本次所使用的語言保存在cookie中,方便和下次連接作對比。
[0046]與上述一種J2EE系統(tǒng)中的語言加載方法相對應,本發(fā)明還提供一種J2EE系統(tǒng)中的語言加載裝置,如圖2所示,包括:
[0047]地址信息獲取模塊101,用于獲取客戶端的IP,并根據(jù)所述IP得到客戶端的地址
信息;
[0048]使用語言獲取模塊102,用于獲取與所述地址信息相對應的使用語言;[0049]判斷模塊103,用于讀取客戶端上一次連接服務器時保存在cookie中的語言值,并在所述語言值不為空的情況下,判斷所述語言值與所述使用語言是否相同;
[0050]第一加載模塊104,用于在所述判斷模塊的判斷結果為是的情況下,根據(jù)所述使用語言讀取相應的資源文件并加載到J2EE系統(tǒng)中。
[0051]作為一個較好的實施例,所述地址信息獲取模塊可以包括:
[0052]IP匹配模塊,用于將所述IP在IP地址庫中進行匹配,得到客戶端的地址信息。
[0053]作為一個較好的實施例,所述J2EE系統(tǒng)中的語言加載裝置還可以包括:
[0054]第二加載模塊,用于在所述語言值為空的情況下,根據(jù)所述使用語言讀取相應的資源文件并加載到J2EE系統(tǒng)中。
[0055]作為一個較好的實施例,所述J2EE系統(tǒng)中的語言加載裝置還可以包括:
[0056]雙語言選擇框生成模塊,用于在所述判斷模塊的判斷結果為否的情況下,根據(jù)所述語言值與所述使用語言生成一個雙語言選擇框;
[0057]第三加載模塊,用于根據(jù)所述雙語言選擇框的返回結果讀取對應的資源文件并加載到J2EE系統(tǒng)中。
[0058]作為一個較好的實施例,所述J2EE系統(tǒng)中的語言加載裝置還可以包括:
[0059]cookie更新模塊,用于在讀取相應的資源文件加載之后,根據(jù)所述資源文件中的系統(tǒng)語言信息更新所述cookie中的語言值。通過將用戶本次所使用的語言保存在cookie中,方便和下次連接作對比。
[0060]可以理解,本發(fā)明所使用的術語“第一”、“第二”等可在本文中用于描述各種元件,但這些元件不受這些術語限制。這些術語僅用于將第一個元件與另一個元件區(qū)分。舉例來說,在不脫離本發(fā)明的范圍的情況下,可以將第一加載模塊稱為第二加載模塊,且類似地,可將第二加載模塊稱為第一加載模塊。第一加載模塊和第二加載模塊兩者都是加載模塊,但其不是同一加載模塊。
[0061]上述一種J2EE系統(tǒng)中的語言加載裝置的其它技術特征與本發(fā)明的一種J2EE系統(tǒng)中的語言加載方法相同,此處不予贅述。
[0062]除非上下文另有特定清楚的描述,本發(fā)明中的元件和組件,數(shù)量既可以單個的形式存在,也可以多個的形式存在,本發(fā)明并不對此進行限定。本發(fā)明中的步驟雖然用標號進行了排列,但并不用于限定步驟的先后次序,除非明確說明了步驟的次序或者某步驟的執(zhí)行需要其他步驟作為基礎,否則步驟的相對次序是可以調整的。
[0063]通過以上方案可以看出,本發(fā)明的J2EE系統(tǒng)中的語言加載方法及裝置,通過獲取客戶端的連接ip地址以及上次連接服務器時保存在cookie中的語言值,自動分析出用戶常用的語言,然后選擇相應的資源文件進行加載,讓用戶連接J2EE系統(tǒng)就可以很自然的看到自己熟悉的語言,這樣一來不僅給用戶一個親切的操作界面,還省去了多語言環(huán)境下需要自己動手去選擇語言的麻煩,有效提高了語言加載的效率,保證用戶能夠正常使用J2EE系統(tǒng);而且本發(fā)明通過使用資源文件來讀取語言信息,避免了通過系統(tǒng)程序文件調用語言信息的方式,從而節(jié)省了系統(tǒng)運行的內存,使系統(tǒng)的運行速度更快;此外,本發(fā)明把系統(tǒng)語言通過資源文件存儲而不是在系統(tǒng)程序文件中讀取,當增減語言時只要更改資源文件即可,這樣一來增加或減少系統(tǒng)語言或語言種類更加簡單、方便。
[0064]以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發(fā)明專利范圍的限制。應當指出的是,對于本領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應以所附權利要求為準。
【權利要求】
1.一種J2EE系統(tǒng)中的語言加載方法,其特征在于,包括如下步驟: 獲取客戶端的IP,并根據(jù)所述IP得到客戶端的地址信息; 獲取與所述地址信息相對應的使用語言; 讀取客戶端上一次連接服務器時保存在cookie中的語言值,并在所述語言值不為空的情況下,判斷所述語言值與所述使用語言是否相同; 若是,則根據(jù)所述使用語言讀取相應的資源文件并加載到J2EE系統(tǒng)中。
2.根據(jù)權利要求1所述的J2EE系統(tǒng)中的語言加載方法,其特征在于,根據(jù)所述IP得到客戶端的地址信息的過程包括: 將所述IP在IP地址庫中進行匹配,得到客戶端的地址信息。
3.根據(jù)權利要求1所述的J2EE系統(tǒng)中的語言加載方法,其特征在于,若所述語言值為空,則直接根據(jù)所述使用語言讀取相應的資源文件并加載到J2EE系統(tǒng)中。
4.根據(jù)權利要求1或2或3所述的J2EE系統(tǒng)中的語言加載方法,其特征在于,若判斷的結果為所述語言值與所述使用語言不相同,則根據(jù)所述語言值與所述使用語言生成一個雙語言選擇框; 根據(jù)所述雙語言選擇框的返回結果讀取對應的資源文件并加載到J2EE系統(tǒng)中。
5.根據(jù)權利要求4所述的J2EE系統(tǒng)中的語言加載方法,其特征在于,在讀取相應的資源文件并加載之后,還包括步驟: 根據(jù)所述資源文件中的系統(tǒng)語言信息更新所述cookie中的語言值。
6.一種J2EE系統(tǒng)中的語言加載裝置,其特征在于,包括: 地址信息獲取模塊,用于獲取客戶端的IP,并根據(jù)所述IP得到客戶端的地址信息; 使用語言獲取模塊,用于獲取與所述地址信息相對應的使用語言; 判斷模塊,用于讀取客戶端上一次連接服務器時保存在cookie中的語言值,并在所述語言值不為空的情況下,判斷所述語言值與所述使用語言是否相同; 第一加載模塊,用于在所述判斷模塊的判斷結果為是的情況下,根據(jù)所述使用語言讀取相應的資源文件并加載到J2EE系統(tǒng)中。
7.根據(jù)權利要求6所述的J2EE系統(tǒng)中的語言加載裝置,其特征在于,所述地址信息獲取模塊包括: IP匹配模塊,用于將所述IP在IP地址庫中進行匹配,得到客戶端的地址信息。
8.根據(jù)權利要求6所述的J2EE系統(tǒng)中的語言加載裝置,其特征在于,還包括: 第二加載模塊,用于在所述語言值為空的情況下,根據(jù)所述使用語言讀取相應的資源文件并加載到J2EE系統(tǒng)中。
9.根據(jù)權利要求6或7或8所述的J2EE系統(tǒng)中的語言加載裝置,其特征在于,還包括: 雙語言選擇框生成模塊,用于在所述判斷模塊的判斷結果為否的情況下,根據(jù)所述語言值與所述使用語言生成一個雙語言選擇框; 第三加載模塊,用于根據(jù)所述雙語言選擇框的返回結果讀取對應的資源文件并加載到J2EE系統(tǒng)中。
10.根據(jù)權利要求9所述的J2EE系統(tǒng)中的語言加載裝置,其特征在于,還包括: cookie更新模塊,用于在讀取相應的資源文件加載之后,根據(jù)所述資源文件中的系統(tǒng)語言信息更新所述cookie中的語言值。
【文檔編號】G06F9/445GK103645913SQ201310573846
【公開日】2014年3月19日 申請日期:2013年11月15日 優(yōu)先權日:2013年11月15日
【發(fā)明者】林世魁, 林尉銘, 劉元進 申請人:廣州杰賽科技股份有限公司