<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 70,comments - 408,trackbacks - 0

    萬維網World Wide Web的迅猛發展推動了跨國業務的發展,為了使企業的Web應用能支持全球客戶,軟件開發應用發出了支持多國語言,國際化的Web應用.國際化簡稱I18N指的是在軟件設計階段,就應該使軟件具有支持多種語言和地區的功能.這樣當需要在應用中添加對一種新的語言和國家的支持的時候,不需要對自己的軟件返工,無需修改應用的程序代碼.簡單的說,本地化意味著針對不同的語言的客戶,發出不同的軟件版本.國際化意味著同一個軟件可以面向使用不同語言的客戶.如果一個應用支持國際化,應該具備以下特征:

    1)???? 當應用需要支持一種新的語言時,無需修改應用源代碼.

    2)???? 文本,消息和圖片從源程序代碼中抽取出來,存儲在外部.

    3)???? 應該根據用戶語言和地理位置,對于特定文化和相關的數據,如日期,時間,貨幣進行格式轉換.

    4)???? 支持非標準字符集.

    5)???? 可以方便快捷的對應用做出調整,使它適應新的語言和地區.

    Web應用使用本地化或者國際化都會涉及字符編碼轉換的問題,默認的情況下IE瀏覽

    器發送請求的時候采用ISO-8859-1字符編碼,如果Web應用程序要正確的讀取用戶發送的中文數據,則需要進行編碼轉換.一種方式是在處理請求前,先設置HttpServletRequest對象的字符編碼,如下:

    request.setCharacterEncoding(“gb2312”);

    還有一種方法是對用戶輸入的請求數據進行編碼轉換如下:

    String data=request.getParameter(“data”);

    ? If(data!=null)

    Data=new String(data.getBytes(“ISO-8859-1”),”GB2312”);

    如果數據庫系統的字符編碼是GB2312,那么可以直接讀取數據庫的中文數據,如果數據庫的字符集是ISO-8859-1那么必須先對來自數據庫的數據進行編碼轉換,然后才能使用.如果在XML文件中包含中文,可以將XML文件的字符編碼設置為GB2312,例如:

    還可以設置相應對象的字符編碼.例如:

    ?Servlet:response.setContentType(“text/html;charset=GB2312”);

    ?JSP:<%@page contentType=”text/html;charset=GB2312”%>

    ?HTML:

    JAVA在其核心庫中提供了支持I18N的類和接口,java.util.Locale類是重要的JAVA的支持I18N的類,在JAVA語言中幾乎所有對國際化和本地化的支持都依賴與這個類.關于這個類的詳細介紹應參閱JAVA語言的API.ResourceBundle類也是在java.util包中,這個類提供和存放了管理與Locale相關的資源的功能,這些資源包括文本或者按鈕的,狀態信息圖片名,錯誤信息,網頁標題等.Struts框架并沒有直接使用JAVA語言提供的ResourceBundle類,在Struts框架中提供了兩個類,他們都在org.apache.struts.util包中.這兩個類具有ResourceBundle相似的功能,分別是MessageResources和PropertyMessageResources類.

    說了半天自己感覺我闡述的很亂,因為都是一些需要了解的知識所以我大略說了一下,下面我詳細的介紹一下Struts框架對國際化的支持.主要是體現在能夠輸出和用戶Locale相符合的文本和圖片上.當Struts配置文件的元素的locale屬性為truts的時候,Struts框架把用戶的Locale實例保存在Session范圍內,這樣Struts礦局愛能夠根據這個實例來從ResourceBundle中選擇合適的資源文本.最簡單的說就是用戶如果是cn就去cn的本地資源文件中讀取信息,如果是ch就去ch的本地資源文本文件中讀取數據.首先要創建Struts的ResourceBundle,對于多個應用模塊的Struts應用,可以為每一個子應用配置一個或者多個ResourceBundle應用中的每一個模塊都可以訪問這些Bundle,配置文件中每個元素定義了一個ResourceBundle,當應用包含多個的時候,用Key屬性來區別它們.這只好的.properties文件一般放在Web應用的classes目錄下,其實配置沒什么就是按照固定的套路,重點要研討的應該是如何訪問ResourceBundle.Struts應用,子應用模塊,ResourceBundle和資源文件之間存在以下的關系:

    1)???? 一個Struts應用可以有多個子應用模塊,必須有一個默認的子應用模塊.只能一個.

    2)???? 一個子應用模塊可以有多個ResourceBundle,必須有一個默認的Bundle,只能一個.

    3)???? 一個ResourceBundle可以有多個資源文件,必須有一個默認的文件,只能有一個.

    Action類中定義了getResources(request)方法,可以返回默認的MessageResources

    對象,代表當前應用模塊使用默認的ResourceBundle.如果要獲得特定的MessageResources對象可以調用Action基類的getResources(request.key)方法,其中參數key和Struts配置文件中的元素的key屬性對應.得到MessageResources對象后,可以通過方法來訪問消息文本.例如:

    public ActionForward execute(ActionMapping mapping,

    ???????????????????????????? ActionForm form,

    ???????????????????????????? HttpServletRequest request,

    ???????????????????????????? HttpServletResponse response)

    throws Exception{

    Locale locale = getLocale(request);

    MessageResources messages = getResources(request);

    String msg = messages.getMessage(locale,”hello.error”);

    ……

    }

    org.apache.struts.util.MessageResources的getMessage()方法有好幾種重載的形式,下面列出常用的幾種:

    1)???? 根據參數指定的Locale檢查對應的資源文件,然后返回參數的key對應的消息文本getMessage(java.util.Locale locale,String key)

    2)???? 根據參數指定的Locale檢查對應的資源文件,然后返回參數和key對應的文本args參數用于替換符合消息文本的參數:

    getMessage(java.util.Locale locale,String key,Object[] args)

    使用ResourceBundle綁定的Struts組件例如:

    1)???? ActionMessage類和標簽.

    2)???? StringBean標簽庫和標簽.

    3)???? Validator驗證框架中訪問ResourceBundle.

    4)???? 在聲明類型異常處理中訪問ResourceBundle.

    國際化應用的問題感覺理解上不是很容易,可以查閱相關的資料百度和Google可是中

    國和世界的大寶箱哦. (網友們的支持,是我繼續寫技術文章的動力!)
    posted on 2005-10-28 16:23 我心依舊 閱讀(2046) 評論(1)  編輯  收藏

    FeedBack:
    # re: Struts框架國際化(原創)
    2009-10-06 10:48 | amen
    你把人家第九章的內容(哪本書就不用我提了吧?)摘抄一下,就號稱是自己的原創??讓我這個一貫潛水,看帖不回的人都忍不住。。。。。bs~  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产高清国产拍精品| 亚洲三级电影网站| 亚洲av无码不卡私人影院| 99精品视频在线观看免费播放 | 一级毛片免费不卡| 免费在线观看黄网站| 羞羞漫画在线成人漫画阅读免费| 成全视频免费高清| 亚洲国产精品美女久久久久| 日韩一品在线播放视频一品免费| 亚洲1区2区3区精华液| 国产成人3p视频免费观看| 亚洲欧美在线x视频| 亚洲精品tv久久久久| 国产精品午夜免费观看网站| 亚洲精品亚洲人成在线观看| 久久免费线看线看| 亚洲春色另类小说| 国产卡一卡二卡三免费入口| 亚洲国产成人精品无码区花野真一| 国产一精品一aⅴ一免费| 一区二区三区视频免费观看| 亚洲人成在线播放网站岛国| 日韩免费一区二区三区在线| 亚洲日本VA午夜在线影院| 四虎精品亚洲一区二区三区| 中国在线观看免费的www| 亚洲妓女综合网99| 日韩高清在线高清免费| 一级女人18片毛片免费视频| 亚洲av无码片在线播放| 99在线视频免费观看视频| 青青青视频免费观看| 亚洲AV无码国产丝袜在线观看| 久久国产免费福利永久| 亚洲AV无码成人网站在线观看 | 4虎1515hh永久免费| 亚洲av永久无码精品网址| 亚洲人成精品久久久久| 免费无码又爽又刺激聊天APP| 免费人成在线观看播放a|