欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Struts2講義38

系統(tǒng) 2517 0

9 ? Struts2 國(guó)際化

在第 1 章綜述中筆者已經(jīng)將國(guó)際化的基本概念做了簡(jiǎn)單說(shuō)明。本章擴(kuò)展國(guó)際化內(nèi)容,向讀者展示在 Struts2 中應(yīng)用國(guó)際化的各種范例。

9.1 ? Struts2 國(guó)際化基礎(chǔ)應(yīng)用

本節(jié)首先介紹國(guó)際化在 Struts2 中的基礎(chǔ)使用方法。主要介紹基礎(chǔ)使用方式的原理以及如何使用占位符號(hào)來(lái)實(shí)現(xiàn) Web 項(xiàng)目國(guó)際化功能的開(kāi)發(fā)。

9.1.1 ? 國(guó)際化基礎(chǔ)使用方式

技術(shù)要點(diǎn)

以登錄功能為例,來(lái)介紹如何實(shí)現(xiàn)中文、英文的國(guó)際化。

= ?????? 國(guó)際化屬性文件定義原理。

= ?????? ActionSupport 類(lèi)中 getText 方法基礎(chǔ)說(shuō)明。

= ?????? 視圖界面中如何顯示國(guó)際化信息。

演示代碼

使用的 Action 文件:

Java代碼 復(fù)制代碼
  1. <!-------------文件名:LoginAction.java---------------> ??
  2. public ? class ?LoginAction? extends ?ActionSupport?{ ??
  3. ????……… ??
  4. ???? public ?String?execute()? throws ?Exception?{ ??
  5. ???????username?=?getUsername(); //?屬性值即JSP頁(yè)面上輸入的值 ??
  6. ???????password?=?getPassword(); //?屬性值即JSP頁(yè)面上輸入的值 ??
  7. ??
  8. ??????? try ?{ ??
  9. ??????????? //?判斷輸入值是否是空對(duì)象或沒(méi)有輸入 ??
  10. ??????????? if ?(username?!=? null ?&&?!username.equals( "" )?&&?password?!=? null &&?!password.equals( "" ))?{ ??
  11. ??????????????ActionContext.getContext().getSession().put( "user" ,?getUsername()); ??
  12. ?????????????? //打印getText方法,取得屬性文件中定義的值 ??
  13. ??????????????System.out.println(getText( "username" )+username); ??
  14. ??????????????System.out.println(getText( "password" )+password); ??
  15. ??????????????? //?根據(jù)標(biāo)志內(nèi)容導(dǎo)航到操作成功頁(yè)面 ??
  16. ??????????????FORWARD?=? "success" ; ??
  17. ???????????}? else ?{ ??
  18. ??????????? //?根據(jù)標(biāo)志內(nèi)容導(dǎo)航到操作失敗頁(yè)面 ??
  19. ??????????????FORWARD?=? "input" ; ??
  20. ???????????} ??
  21. ???????}? catch ?(Exception?ex)?{ ??
  22. ???????????ex.printStackTrace(); ??
  23. ???????} ??
  24. ??????? return ?FORWARD; ??
  25. ????} ??
  26. ……… ??
  27. }??
    <!-------------文件名:LoginAction.java--------------->
public class LoginAction extends ActionSupport {
    ………
    public String execute() throws Exception {
       username = getUsername();// 屬性值即JSP頁(yè)面上輸入的值
       password = getPassword();// 屬性值即JSP頁(yè)面上輸入的值

       try {
           // 判斷輸入值是否是空對(duì)象或沒(méi)有輸入
           if (username != null && !username.equals("") && password != null&& !password.equals("")) {
              ActionContext.getContext().getSession().put("user", getUsername());
              //打印getText方法,取得屬性文件中定義的值
              System.out.println(getText("username")+username);
              System.out.println(getText("password")+password);
               // 根據(jù)標(biāo)志內(nèi)容導(dǎo)航到操作成功頁(yè)面
              FORWARD = "success";
           } else {
           // 根據(jù)標(biāo)志內(nèi)容導(dǎo)航到操作失敗頁(yè)面
              FORWARD = "input";
           }
       } catch (Exception ex) {
           ex.printStackTrace();
       }
       return FORWARD;
    }
………
}
  

屬性文件中國(guó)際化定義:

?

Java代碼 復(fù)制代碼
  1. <!--------------文件名:struts.properties--------------> ??
  2. #支持本地化的資源文件名定義 ??
  3. struts.custom.i18n.resources=messageResource??
    <!--------------文件名:struts.properties-------------->
#支持本地化的資源文件名定義
struts.custom.i18n.resources=messageResource
  

?

支持中文的屬性文件內(nèi)容:

?

Java代碼 復(fù)制代碼
  1. <!------------文件名:messageResource_zh_CN.properties-------> ??
  2. #中文屬性定義文件 ??
  3. #用key=value格式定義頁(yè)面上顯示的內(nèi)容 ??
  4. username=用戶(hù)名 ??
  5. password=密??碼 ??
  6. loginSubmit=登錄 ??
  7. loginPage=登錄頁(yè)面 ??
  8. successPage=操作成功頁(yè)面 ??
  9. welcome=歡迎您 ??
  10. user.required=請(qǐng)輸入用戶(hù)名! ??
  11. pass.required=請(qǐng)輸入密碼!??
    <!------------文件名:messageResource_zh_CN.properties------->
#中文屬性定義文件
#用key=value格式定義頁(yè)面上顯示的內(nèi)容
username=用戶(hù)名
password=密  碼
loginSubmit=登錄
loginPage=登錄頁(yè)面
successPage=操作成功頁(yè)面
welcome=歡迎您
user.required=請(qǐng)輸入用戶(hù)名!
pass.required=請(qǐng)輸入密碼!
  

支持英文的屬性文件內(nèi)容:

?

Java代碼 復(fù)制代碼
  1. <!--------文件名:messageResource_en_US.properties-----------> ??
  2. #英文屬性定義文件 ??
  3. #用key=value格式定義頁(yè)面上顯示的內(nèi)容 ??
  4. username=User?Name ??
  5. password=User?Password ??
  6. loginSubmit=login ??
  7. loginPage=login?page ??
  8. successPage=success?page ??
  9. welcome=Welcome?You ??
  10. user.required=please?input?your?name! ??
  11. pass.required=please?input?your?password!??
    <!--------文件名:messageResource_en_US.properties----------->
#英文屬性定義文件
#用key=value格式定義頁(yè)面上顯示的內(nèi)容
username=User Name
password=User Password
loginSubmit=login
loginPage=login page
successPage=success page
welcome=Welcome You
user.required=please input your name!
pass.required=please input your password!
  

?

國(guó)際化的登錄 login.jsp

?

?

Java代碼 復(fù)制代碼
  1. <!-----------------文件名:login.jsp-----------------> ??
  2. ……… ??
  3. <html> ??
  4. <head> ??
  5. ????<title><s:text?name= "loginPage" ></s:text></title> ??
  6. </head> ??
  7. <body> ??
  8. ????<!--?form標(biāo)簽庫(kù)定義,以及調(diào)用哪個(gè)Action聲明?--> ??
  9. ????<s:form?action= "Login" > ??
  10. ????????<table?width= "60%" ?height= "76" ?border= "0" > ??
  11. ????????????????<!--?各標(biāo)簽定義?--> ??
  12. ????????????????<s:textfield?name= "username" ?key= "username" /> ??
  13. ????????????????<s:password?name= "password" ?key= "password" ?/> ??
  14. ????????????????<s:submit?key= "loginSubmit" ??align= "center" />????????????? ??
  15. ????????</table> ??
  16. ????</s:form> ??
  17. </body> ??
  18. </html>??
    <!-----------------文件名:login.jsp----------------->
………
<html>
<head>
	<title><s:text name="loginPage"></s:text></title>
</head>
<body>
	<!-- form標(biāo)簽庫(kù)定義,以及調(diào)用哪個(gè)Action聲明 -->
	<s:form action="Login">
		<table width="60%" height="76" border="0">
				<!-- 各標(biāo)簽定義 -->
				<s:textfield name="username" key="username"/>
				<s:password name="password" key="password" />
				<s:submit key="loginSubmit"  align="center"/>				
		</table>
	</s:form>
</body>
</html>

  

國(guó)際化的登錄成功 success.jsp 文件:

Java代碼 復(fù)制代碼
  1. <!----------------文件名:success.jsp-------------------> ??
  2. ……… ??
  3. <head> ??
  4. ???<title><s:text?name= "successPage" ></s:text></title> ??
  5. </head>?? ??
  6. <body> ??
  7. ?????????<!--?取得session中用戶(hù)名值?--> ??
  8. ????${sessionScope.user},<s:text?name= "welcome" ></s:text> ??
  9. </body> ??
  10. …………??
    <!----------------文件名:success.jsp------------------->
………
<head>
   <title><s:text name="successPage"></s:text></title>
</head>  
<body>
         <!-- 取得session中用戶(hù)名值 -->
    ${sessionScope.user},<s:text name="welcome"></s:text>
</body>
…………
  

?

?

?

中文的登錄界面如圖 9.1

Struts2講義38

?

9.1 ? 中文登錄界面

英文的登錄界面如圖 9.2

Struts2講義38

9.2 ? 英文登錄界面

中文登錄成功界面如圖 9.3

9.3 ? 中文登錄成功界面

英文登錄成功界面如圖 9.4

9.4 ? 英文登錄成功界面

LoginAction 代碼中打印在控制臺(tái)用戶(hù)名和密碼值(支持中文)如圖 9.5

9.5 ? 中文屬性值控制臺(tái)打印信息

LoginAction 代碼中打印在控制臺(tái)用戶(hù)名和密碼值(支持英文)如圖 9.6

9.6 ? 英文屬性值控制臺(tái)打印信息

代碼解釋

1 本節(jié)是 Struts2 國(guó)際化最基本的應(yīng)用。首先請(qǐng)讀者閱讀 struts.properties 文件中代碼。“ struts.custom.i18n.resources ”并不是筆者隨意取的名字。它是 Struts2 設(shè)計(jì)者定義的使用全局國(guó)際化屬性文件的常量名。如果對(duì)它進(jìn)行了定義,則開(kāi)發(fā)者可以在 Web 項(xiàng)目中使用類(lèi)似 XXX_language_country.properties 這樣的屬性文件名格式來(lái)創(chuàng)建在不同語(yǔ)言環(huán)境中的屬性文件。這也就是在上述代碼中有“ messageResource_zh_CN.properties ”和“ messageResource_en_US.properties ”這兩個(gè)各支持中文和英文的屬性文件名的由來(lái)。因?yàn)楣P者在 struts.properties 文件中定義了“ struts.custom.i18n.resources ”值為 messageResource ,這樣 messageResource 作為屬性文件名,可以實(shí)現(xiàn)各個(gè)支持不同國(guó)家語(yǔ)言的國(guó)際化屬性文件。

注意:其實(shí)關(guān)于國(guó)際化屬性文件名的定義不僅僅可以在 struts.properties 中定義,也可以在 struts.xml web.xml 這兩個(gè)配置文件中定義。之所以不在這里介紹,具體原因在第四章介紹如何實(shí)現(xiàn)上傳下載功能的攔截器篇章已經(jīng)記述,這里不再重復(fù)說(shuō)明。如果讀者對(duì)在兩個(gè) xml 文件中定義國(guó)際化屬性文件名又興趣,可自行查閱其它技術(shù)文摘。

2 LoginAction 繼承 ActionSupport 類(lèi),可以使用 ActionSupport getText 方法。這里 getText 方法中的字符串參數(shù)都是在國(guó)際化屬性文件中定義的 key 。之前章節(jié)也說(shuō)明過(guò)屬性文件中定義格式都是以“ key=value ”格式定義。 getText 方法得到 key 作為方法參數(shù),返回的結(jié)果就是 value 。從圖 9.5 、圖 9.6 也可以看出在兩個(gè)國(guó)際化屬性文件中“用戶(hù)名”和“密碼”的 value 是不相同的,因此在不同的語(yǔ)言環(huán)境下得到的值就不同了。一個(gè)是中文另一個(gè)是英文。

注意: getText 方法在 ActionSupport 中是重載方法。因此它還有幾個(gè)重名的 getText 方法,具體使用在有占位符的國(guó)際化屬性文件中。稍后章節(jié)將具體介紹。

3 )在 login.jsp success.jsp 中,筆者使用 struts2 標(biāo)簽 <text> 。該標(biāo)簽的 name 屬性定義為屬性文件中的“ key ”,在 Struts2 Action getText 方法就可以將 value 的值顯示在視圖界面上。而在其他 struts2 標(biāo)簽中,增加 key 屬性的定義,也可以將國(guó)際化屬性文件中的 value 值作為各個(gè)標(biāo)簽的值顯示在視圖界面上。比如“ <s:textfield name="username" key="username"/> ”在原先可以使用 label 屬性定義顯示值。現(xiàn)在使用 key 屬性,在不同語(yǔ)言環(huán)境下 username 這個(gè) key 得到的 value 值就不同。效果見(jiàn)圖 9.1 、圖 9.2

注意: Struts2 中有個(gè)名字為 i18n 的攔截器,它的使用目的就是在 Action 執(zhí)行前查看 Session 中的 request_locale 參數(shù)的值是什么。如果是“ zh_CN ”它就將之后執(zhí)行的所有 Action 的語(yǔ)言環(huán)境設(shè)置為中文語(yǔ)言環(huán)境。如果是“ en_US ”則是英文語(yǔ)言環(huán)境。在本示例和接下來(lái)的示例中,讀者可以在操作系統(tǒng)下的“控制面板 à 區(qū)域和語(yǔ)言選項(xiàng)”中選擇區(qū)域來(lái)查看在英文和中文語(yǔ)言環(huán)境下示例顯示的異同。當(dāng)然也可以直接在瀏覽器的地址欄中在 action 請(qǐng)求后面寫(xiě)上“? request_locale=zh_CN ”這樣的數(shù)據(jù)。具體可以這么寫(xiě)的原因就是通過(guò)手工輸入的 request_locale 值,來(lái)讓 i18n 攔截器得到該值進(jìn)行相關(guān)語(yǔ)言設(shè)置

Struts2講義38


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲一区二区三区视频 | 亚洲视频国产精品 | 人人插人人澡 | 一级成人毛片免费观看欧美 | 美女91视频 | 免费成人在线网站 | 国产婷婷色一区二区三区在线 | 男女配种超爽免费视频 | 激情视频免费在线观看 | xvideos korean| 国产无圣光高清一区二区 | 色综合97天天综合网 | 欧亚乱熟女一区二区在线 | 免费看a视频 | 很黄很色的小视频在线网站 | 日本黄色免费网站 | 中文字幕在亚洲第一在线 | 日韩精品资源 | 日韩精品视频美在线精品视频 | www欧美视频| 日韩欧美不卡 | 国产精品1区2区3区 国产成人aaa在线视频免费观看 | 九九热在线免费视频 | 激情亚洲综合网 | 一级毛片免费 | 欧美激情 亚洲 | 国产精品久久久久久久久久久新郎 | a视频在线看| 国产精品亚洲精品日韩已方 | 国产中文字幕久久 | 亚洲一区二区三区四区五区中文 | 一级毛片视频免费 | 久久久国产一区 | 久久久黄色| 午夜激情影院 | 国产精品美女久久久久aⅴ国产馆 | 毛片基地看看成人免费 | 久久影城 | 亚洲最黄视频 | 久久精品视频在线观看 | 日韩成人免费在线视频 |