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

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

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

    posts - 78, comments - 34, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
     

             今日的課程內容是JavaWEB國際化和EL表達式,EL表達式在之前的課程中有使用過,但并未深入。今日的內容整體上比較輕松,當我看到JavaWEB國際化時,還以為內容很多。國際化嗎!以為在某些編寫操作上有什么國際化的特殊要求?呵呵,其實我們的編寫方式本身就已經是國際化的了。這里的國際化是指WEB應用國際化,跟桌面應用國際化沒什么區別。EL表達式使用起來到是方便許多。

     

             今日每位同學的學習效果整體上感覺不錯!可能是學習完了WEB基礎,學習高級部分都相對容易些吧!不過方老師為了讓大家吸收的好,對課程內容進行了調整,沒有講基礎時那么緊縮,拿出了些時間給學生們做練習。明天就開始講數據庫了,之后就是JSP自定義標簽,等這些講完了,終于可以進行高級開發了!學習基礎是枯燥的,學習應用才有樂趣。這是正常現象,比如我在學校時特別不喜歡學習語文,學習完不知做什么用。話我說的不差勁!直到參加工作時,發現寫作是很重要的,這時我開始喜歡上了語文。哎,枯燥的教育好煩!我與其為此而煩,還不如為此做些事情!

     

             國際化開發就是,為了應對不同國家用戶。將軟件的語言,數據,使用習慣等,適合相應的國家。

                      我們在實際的軟件使用中,桌面軟件的語言設置選項也比較常見,這就是國際化。WEB被廣泛應用后,一些國際化的網站也有針對不同國家訪問的本地語言。

              一個合格的國際化軟件,必須對程序中固定使用的文本元素,例如:菜單、提示信息、錯誤信息等以用戶本地使用的語言進行顯示。也必須對程序中的一些動態信息以用戶本地語言進行顯示,例如:日期時間、貨幣等。

              WEB應用的國際化實現方式與桌面軟件的國際化實現方式類同。但是JAVA將應用做的比較完美,JAVA提供的類可以方便軟件國際化的工作。下面讓我們看一下桌面軟件國際化的實現原理。

              將桌面軟件國際化,比如將菜單國際化顯示:

    1.               編寫一個配置文件(*.ini)。

    2.               在配置文件中設置節點名為國家或語言的名字,比如“中文簡體”、“中文繁體”、“English。

    3.               在各語言節點中添加配置項,各節點的配置項名稱必須相同,比如在“中文簡體”中添加“open=文件”節點,在“中文繁體”節點中添加“open=打開”,在“Englis”節點中添加“open=open”。

    4.               軟件在啟動時,根據用戶選擇的語言,去對應的節點下讀取指定的配置項,并使用配置項的值做為菜單顯示。

    上面就是桌面軟件國際化的實現過程。接下來讓我們看一下WEB應用中,國際化的實現方法。

    WEB應用國際化,比如將登錄頁面國際化:

    1.        根據WEB應用面向的重點區域,編寫相應的的配置文件(*.properties)。比如中國的配置文件“login_zh.properties”、美國的配置文件“login_en.properties”。注意:配置文件的命名,必須是“文件名+語言代碼.properties”。

    2.        所有的配置文件必須使用相同的鍵名稱,比如“name=用戶名”、“name=name”。

    3.        JAVA提供了一個類ResourceBundle,專門用于讀取這種用于特定語言環境的資源。調用ResourceBundle.getBundle方法時,我們只需要傳遞參數一“配置文件所在WEB應用下的目錄+login”和參數二本地信息(Locale)即可!ResourceBundle類會自動根據Locale信息中的語言代碼,去讀取指定的配置文件。

    4.        在登錄頁面,使用ResourceBundleobj.getString(“鍵名稱”),讀取相應該的值并顯示到頁面上。

    可見JAVA將應用做的如此完美,將配置文件分開這樣有助于減小文件的大小。并且ResourceBundle會自動根據Locale設置的信息,去讀取相應的配置文件。

             以上我們說的都是對靜態數據的國際化,那動態數據應該如何實現國際化呢?動態數據,比如數值,貨幣,時間,日期等數據。JAVA對此也做了相應的工作,處理時間有DateFormat類,處理數值有NumberFormat類。關于這兩個類的使用,我也不做練習了十分簡單,查看JDK文檔,已經說明的很詳細了。

             動態文本(MessageFormat),用于處理一個字符串包含了多個與國際化相關的數據。看下面的代碼:

    import java.text.MessageFormat;

    import java.util.Date;

     

    public class MessageFormatTest {

     

        public static void main(String[] args) {

          

           //比如有這樣一片段文字:在20091128我來到了北京,我買的是打折機票,票價¥330.00。

           String str = "{0,date,long}我來到了北京,我買的是打折機票,票價{1, number, currency}。";

           Object[] reargs = {new Date(), 330};

           MessageFormat mf = new MessageFormat(str);

          

           StringBuffer sb = new StringBuffer();

           System.out.println(mf.format(reargs));

        }

     

    }

     

             DateFormat NumberFormat相比,MessageFormat使用起來復雜一點。但功能比較強大,對于它的國際化應用,我還不明朗。在學習框架時,我想可能會明朗些吧!

    下午重點學習EL表達式,使用上并不復雜。只過JAVA應用總是搞出來這么多名堂,其實就是為了簡化開發。這也是可以理解的!

    EL——ExpressionLanguage,它是用于替換JSP頁面中的腳本表達式。之前也有提到過,在JSP頁面中使用腳本表達式進行數據顯示是一件痛苦的事。若想使用EL表達式,WEB服務器必須支持Servlet2.4/JSP2.0技術。EL都有哪些功能呢?比如${標識符}EL拿到標識符后會到自己的隱式對象中去查找,如果隱式對象中不存在,則到page域、request域、session域、application域中去查找。

    舉例:${abcd},abcd不是EL的隱式對象。但它在request域中(request.setAttribute (“abcd”,”hi”);),所以會調用pageContext.findAttribute方法進行查找,${abcd}代表的就是request.getAttribute(“abcd”);,EL都具有哪些隱式對象呢?

    pageContextpageScope、requestScope、sessionScopeapplicationScopeparam、paramValuesheader、headerValues、cookieinitParam。這些都是Servlet中相關的作用域對象,比如${requestScope.abcd}就是獲取request中的abcd屬性。既然${abcd}${requestScope.abcd}有什么區別,使用${abcd}不是更簡單嗎?咱們來看一下這種情況:request.setAttribute(“abcd”,”hiRequest”); session.setAttribute(“abcd”,”hiSession”);,${abcd},獲取的是request中的abcd,如果request中沒有abcd它獲取的就是sessionabcd。這下明白了吧!如果兩個域中具有相同的屬性,那么些時EL的隱式對象就發揮了作用。EL中的隱式對象完全可以操作相應域的數據。

    EL也具有基本的運算處理能力:算術運算、邏輯運算和關系運算。在此就不一一列舉了!

    EL中也可以編寫自己的函數:

    1.        編寫一個類,定義靜態方法:

    public class MyEl {

        public static String getMessage(){

           return "HI,我是EL自定義函數?。?!";

        }

    }

     

    2.        WEB-INF目錄中添加一個*.tld配置文件:

    <?xml version="1.0" encoding="UTF-8" ?>

    <taglib xmlns="http://java.sun.com/xml/ns/j2ee"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

        version="2.0">

        <description>A tag library exercising SimpleTag handlers.</description>

        <tlib-version>1.0</tlib-version>

        <short-name>SimpleTagLibrary</short-name>

        <uri>/SimpleTagLibrary</uri>

       

        <function>

            <name>print</name>

           <function-class>cn.itcast.cc.el.MyEl</function-class>

           <function-signature>java.lang.String getMessage()</function-signature>

        </function>

    </taglib>

     

    3.        在要調用本函數的JSP頁面中添加引用:

    %@taglib prefix="cc" uri="/SimpleTagLibrary" %

    4.調用方法:${cc:print()}

    上面就是編寫自定義EL函數的過程,Apache組織為EL提供了一些比較常用的函數。比如文件處理函數,老師說這一點要注意,以后不需要在Servlet中把處理好的文本傳遞給頁面,可以在頁面中直接使用Apache提供的函數來方便快捷的處理文本。

    Apache提供的EL常用函數在Standard.jar包中的“org.apache.taglibs.standard.functions.Functions”包中。UIRhttp://localhost:8080/jsp/jstl/functions。

            


    評論

    # re: 2009-11-28 傳智播客 java web——國際化、EL表達式  回復  更多評論   

    2012-10-08 20:02 by breaknull
    每天寫一次日記心得真是一件特別好的事??!

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


    網站導航:
     
    主站蜘蛛池模板: xx视频在线永久免费观看| a毛片在线免费观看| 一个人免费高清在线观看| 亚洲视频在线免费播放| 久草免费手机视频| 亚洲黑人嫩小videos| 无人在线直播免费观看| 亚洲国产系列一区二区三区| 57PAO成人国产永久免费视频| avtt天堂网手机版亚洲| 女人让男人免费桶爽30分钟| 国产精品无码亚洲精品2021| 国产精品色午夜免费视频| 免费一级毛片在线播放视频免费观看永久 | 精品无码国产污污污免费| 亚洲综合色一区二区三区| 国产片免费在线观看| 一本久久A久久免费精品不卡| 亚洲欧洲美洲无码精品VA| 日本xxxx色视频在线观看免费| 亚洲第一成年网站大全亚洲| 91精品国产免费久久久久久青草 | 亚洲变态另类一区二区三区| 亚洲AV无码不卡在线观看下载| 羞羞视频免费网站在线看| 久久亚洲国产成人亚| 无码一区二区三区AV免费| 久久精品熟女亚洲av麻豆| 亚洲人色婷婷成人网站在线观看| 99国产精品视频免费观看| 亚洲日本成本人观看| 久久久久亚洲av毛片大| 69av免费视频| 永久免费精品影视网站| 91亚洲导航深夜福利| 国产精品va无码免费麻豆| 成全视频在线观看免费| 亚洲日韩精品无码专区加勒比| 国产亚洲精品福利在线无卡一| 免免费国产AAAAA片| 一区二区3区免费视频|