JavaWeb框架_Struts2_(八)----->Struts2的國際化
這一篇博文拖了蠻久了,現在先把它完成,結束struts2這個版塊,當然這只是最基礎的部分,做項目還需要更深的理解。下一個web後端的版塊準備做Spring框架的學習~嗯,加油!
目錄:
- 程序國際化概述
- 國際化思想
- 國際化步驟
- Struts2中加載全局資源文件
- 國際化信息輸出
- properties文件配置
1. 具體內容
1.1 程序國際化概述
程序國際化已成為Web應用的基本要求。也就是為了方便來自世界各地的瀏覽者。Struts2國際化主要有JSP頁面國際化、校驗信息國際化以及Action信息國際化等。
1.1.1 java國際化的思想
Java國際化的思想是將程序中的信息放在資源文件中,程序根據支持的國家以及語言環境,讀取相應的資源文件。資源文件是key-value對,每個資源文件中的key是不變的,但是value則隨不同的國家/語言變化。
Java程序國際化主要通過兩個類來完成:
- java.util.Locale:用於提供本地信息,通常稱它為語言環境。不同的語言,不同的國家和地區采用不同的Locale對象來表示;
- java.util.ResourceBundle:該類稱為資源包,包含特定的語言環境的資源對象。
為了實現java程序國際化,必須事先提供程序所需要的資源文件。其中key是程序使用的部分,而value是程序界面的顯示
資源文件的命名可以有以下3種方式:
- baseName.properties;
- baseName_language.properties;
- baseName_language_country.properties(一般用這種);
baseName是資源文件的基本名稱,有用戶自由定義。但是language和country就必須為java語言所支持的語言和國家/地區代碼。例如:中國大陸為:baseName_zh_CN.properties,美國為baseName_en_US.properties。
1.2 國際化步驟
1.2.1 Struts2中加載全局資源文件
加載全局的資源文件的方式是通過在struts.xml文件中配置常量struts.custom.il8n.resources實現,該常量值為全局資源文件的baseName。
一旦指定了全局資源文件,既可實現程序國際化。假設baseName為messageResource,則在struts.xml文件中配置如下一個常量:
<constant name="struts.custom.i18n.resources" value="messageResouce"/>
通過這種方式加載全局資源文件後,struts2應用就可以在所有地方取得這些資源文件了,包括JSP頁面、Action和校驗文件。
1.2.2 國際化信息輸出
(1) 輸出方式
國際化信息輸出主要有以下幾種方式:
- 在JSP頁面中輸出
在JSP頁面中為了輸出國際化信息,可以使用Struts2的<s:text.../>標簽,該標簽可以指定一個name屬性,用以指定國際化資源文件中的key。
- 在表單標簽中輸出
通過key屬性指定資源文件中的key,如:
<s:textfield name="realname" key="username"/> <!--或者如下方法--> <s:textfield name="realname" label="%{getText(‘username‘)}"/>
- 在Action類中輸出
Action類可以繼承ActionSupport,使用getText()方法取得國際化信息,該方法的第一個參數用於指定資源文件中的key。
- 在校驗文件中輸出
在校驗文件中,可以通過message的key屬性指定資源文件中的key,如:
<message key="login.error.username"/>
1.2.3 properties文件配置
properties文件的配置,直接在src文件夾下面新建配置即可,註意是key-value形式存在的,
歸根到底,sturts2框架的最大特點還是在攔截器這一塊,把攔截器配置和原理弄明白是很重要的。
JavaWeb框架_Struts2_(八)----->Struts2的國際化