<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无码成人专区片在线观看| 亚洲尹人九九大色香蕉网站| aa在线免费观看| 亚洲开心婷婷中文字幕| 亚洲欧洲国产视频| 84pao强力永久免费高清| 免费一级毛片清高播放| 猫咪免费人成网站在线观看入口| 国产免费69成人精品视频| 精品亚洲麻豆1区2区3区| 99视频免费播放| 亚洲卡一卡2卡三卡4麻豆| 免费91最新地址永久入口| 久久亚洲精品成人综合| 67pao强力打造高清免费| 亚洲综合久久成人69| 成人特黄a级毛片免费视频| 亚洲av无码偷拍在线观看| 免费一级毛片不卡在线播放| caoporn成人免费公开| 水蜜桃亚洲一二三四在线| 国产成人精品免费视频动漫| 亚洲色大网站WWW永久网站| 亚洲AV无码乱码在线观看牲色| 亚洲国产精品线观看不卡| 日本免费电影一区| 国产精品免费在线播放| 亚洲精品欧洲精品| 国产免费人视频在线观看免费| 国产精品免费视频观看拍拍| 亚洲视频免费在线看| 8x8x华人永久免费视频| 亚洲精品无AMM毛片| 国产成人麻豆亚洲综合无码精品| 91免费福利精品国产| 色五月五月丁香亚洲综合网| 国产亚洲美女精品久久久久狼 | 亚洲av成人综合网| 亚洲国产精品人人做人人爱| 99ee6热久久免费精品6|