版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件開發(fā)架構平臺技術CH10StrutsIII主要功能回顧OGNL和標簽庫攔截器目錄國際化類型轉換輸入校驗國際化國際化國際化(Internationalization)是使程序在不做任何修改的情況下,就可以在不同的國家或地區(qū)和不同的語言環(huán)境下,按照當地的語言和格式習慣顯示字符,又被稱為I18N。一個國際化的程序,當運行在本地機器上時,需要根據本地機器的語言和地區(qū)設置顯示相應的字符,這個過程就叫做本地化(Localization),簡稱L10N。Java通過java.util.Locale類和java.util.ResourceBundle抽象類來實現國際化。Locale類提供本地信息(語言環(huán)境),ResourceBundle類稱為資源包,包含了特定于語言環(huán)境的資源對象。國際化JavaSE中國際化的實現Locale類常用的構造方法如publicLocale(Stringlanguage)publicLocale(Stringlanguage,Stringcountry)Localelocale1=newLocale("zh","CN");Localelocale2=newLocale("en","US");Localelocale3=newLocale("en","GB");國際化JavaSE中國際化的實現實際應用中一般將不同語言的資源包以屬性文件的形式出現,如:屬性文件還可以參數化Struts2的國際化Struts2仍然采用屬性文件來保存資源包。Struts2提供四種方式訪問資源文件中的本地化信息:在action中訪問——getText()方法在JSP中通過Struts2標簽訪問——<s:text>標簽在表單標簽的屬性中訪問——label或key屬性在資源文件中訪問——OGNL表達式Struts2中國際化的使用Struts2按照下列順序來獲取用戶的locale對象判斷struts.locale屬性是否有值;如果沒有,從請求頭中獲取語言信息,并初始化locale;通過名為I18nInterceptor的攔截器獲取名為request_locale請求參數的值,并存儲到session中。所以可以通過struts.locale來設置Web應用的默認locale程序運行過程中,要修改locale,可通過提交名為request_locale的請求參數。國際化使用范例效果展示類型轉換的必要性基于HTTP協(xié)議的Web應用中,客戶端(瀏覽器)和服務器之間傳輸的都是字符串形式的數據,但在服務端的Java程序中,數據是有各種類型的,如int、double、Date等。因此,在接收到客戶端傳來的字符串數據后,就需要將這些字符串轉換為正確的類型,這就是類型轉換。一個成熟的Web表示層框架都會提供一定的類型轉換能力,可以自動對客戶端請求的字符串轉換為服務端需要的類型,這一過程對開發(fā)者來說是透明。Struts2提供了優(yōu)秀的類型轉換能力。傳統(tǒng)的類型轉換處理Stringname=request.getParameter("name");StringstrAge=request.getParameter("age");StringstrBirthday=request.getParameter("birthday");intage=Integer.parseInt(strAge);DateFormatdf=DateFormat.getDateInstance(DateFormat.SHORT);Datebirthday=null;try{birthday=df.parse(strBirthday);}catch(ParseExceptione){e.printStackTrace();}Studentstudent=newStudent(name,age,birthday);Struts2的類型轉換使用OGNL表達式命名參數針對前例中提到的Student對象,在表單元素命名時,只需要把表單元素命名為合法的OGNL表達式,如,student.age,student.birthday。在服務端的Action中,提供student對象,則可以使用Struts
2的自動類型轉換能力了。Struts2的類型轉換Struts2內置的類型轉換器String:將int、long、double、boolean、String類型的數組或java.util.Date類型轉換為字符串。Boolean/boolean:在字符串和布爾值之間進行轉換。Character/char:在字符串和字符之間進行轉換。Integer/int、Float/float、Long/long、Double/double:在字符串和數值間進行轉換。date:在字符串和數值型的數據之間進行轉換。采用SHORT格式來處理輸入和輸出,使用當前請求關聯的Locale來確定日期格式。array:由于數組元素本身就有類型,Struts2使用元素類型對應的類型轉換器,將字符串轉換為數組元素類型,然后再設置到新數組中。collection:如果不能確定對象類型,則假定集合元素類型為String,并創(chuàng)建一個新的ArrayList,存放所有的字符串。Struts2的類型轉換Struts2對null屬性的處理如果屬性聲明為Collection或者List,那么將創(chuàng)建一個ArrayList對象,并賦值為null引用。如果屬性聲明為Map,那么將創(chuàng)建一個HashMap對象,并賦值為null引用。如果屬性是一個具有無參構造方法的簡單bean,那么將使用ObjectFactory的buildBean()方法創(chuàng)建一個Bean的實例。Struts2對集合類型的轉換提供了很好的支持,可以用集合對象來保存表單提交的數據。Struts2的類型轉換使用范例編寫B(tài)ook類Struts2的類型轉換使用范例編寫ActionStruts2的類型轉換使用范例編寫addBookList.jspStruts2的類型轉換使用范例編寫showBookList.jspStruts2的類型轉換使用范例編寫struts.xml自定義類型轉換器如果Struts2內置的類型轉換器不能滿足項目需求,Struts2還支持開發(fā)自定義類型轉換器,有下列三種方法:實現ognl.TypeConverter接口繼承ognl.DefaultTypeConvert類繼承org.apache.struts2.util.StrutsTypeConverter類自定義類型轉換器范例自定義類型轉換器范例編寫自定義類型轉換器類自定義類型轉換器范例將自定義類型轉換器添加到Struts2框架中通過屬性文件來實現,有下面兩種方式:全局類型轉換屬性文件:必須位于src根目錄下,同時文件名必須為perties。局部類型轉換屬性文件:位于需要轉換的Action類的包目錄下,文件名為ClassNperties。java.util.Date=com.demo.converter.BirthdayConvertercom.demo.domain.User.birthday=com.demo.converter.BirthdayConverter輸入校驗的必要性在Web應用程序中,為了防止客戶端提交的數據引發(fā)程序異常,需要對用戶輸入的數據進行驗證。構建一個強有力的驗證機制,是保障系統(tǒng)穩(wěn)定運行的前提條件。輸入校驗模塊的功能一般分為兩個部分:驗證輸入數據的有效性驗證失敗后向用戶提供錯誤信息輸入校驗的方式有:客戶端驗證(JavaScript)服務端驗證Struts2中輸入校驗方法:手動驗證驗證框架自定義驗證器手動驗證在Action的方法中編寫驗證代碼手動驗證validateXxx()和validate()直接在Action的方法中編寫驗證代碼的方式,當表單較為復雜、字段較多時容易造成代碼的膨脹,使得完成業(yè)務邏輯的代碼淹沒在驗證代碼中,導致項目難以維護。一種可行的辦法是將驗證代碼剝離出來,在Action方法中調用這些代碼。Struts2給這種方式提供了便利,只需將方法名命名為validateXxx或validate即可由框架在業(yè)務代碼執(zhí)行前自動被調用。驗證框架由于輸入校驗的重要性和重復性,就產生了驗證框架。Struts2提供了驗證框架,由驗證器和外部配置文件中定義驗證規(guī)則組成。驗證器:指執(zhí)行一個驗證規(guī)則時驗證框架調用的一個Java類,一個單獨的驗證規(guī)則對應一個Java類,然后可以將這些規(guī)則組合成復雜的規(guī)則集。驗證規(guī)則配置文件:驗證框架通過讀取驗證文件中的驗證規(guī)則對輸入數據進行驗證器。驗證文件和Action類型在同一包中,文件名為:ClassName-validation.xmlClassName-alias-validation.xml驗證規(guī)則配置文件的結構由xwork-validator-x.x.x.dtd定義Struts2提供兩種類型的驗證器普通驗證器(非字段驗證器):不針對特定字段的驗證規(guī)則,如驗證密碼。字段驗證器:執(zhí)行針對特定字段的驗證規(guī)則,如是否為空。驗證框架使用范例使用驗證框架Struts2提供兩種類型的驗證器必填驗證器required必填字符串驗證器requiredstring字符串長度驗證器stringlength整數驗證器int雙精度浮點數驗證器double日期驗證器date表達式驗證器expression字段表達式驗證器fieldexpression正則表達式驗證器regex郵件地址驗證器email自定義驗證器1.編寫ValidationCodeAction,用于產生驗證碼圖像。自定義驗證器2.編寫自定義的結果類型,用于輸出驗
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版二零二五苗木種植與農業(yè)可持續(xù)發(fā)展合作協(xié)議3篇
- 2025年電梯安裝與節(jié)能改造工程安全協(xié)議3篇
- 二零二五版茶葉專賣店門店承包運營合同4篇
- 2025年度木質門銷售與售后維護合同樣本3篇
- 木材產業(yè)鏈整合-深度研究
- 市場需求驅動型加工模式-深度研究
- 二零二五年度國際采購合同履約監(jiān)管辦法3篇
- 二零二五年度廚師炊事員勞動合同續(xù)簽協(xié)議11篇
- 2025年度城市綠化帶土地承包與養(yǎng)護服務合同4篇
- 2025年度大型購物中心室內裝飾工程后期維護合同規(guī)范4篇
- 道路瀝青工程施工方案
- 《田口方法的導入》課件
- 內陸?zhàn)B殖與水產品市場營銷策略考核試卷
- 人教版(2024年新教材)七年級上冊英語Unit 7 Happy Birthday 單元整體教學設計(5課時)
- DLT 572-2021 電力變壓器運行規(guī)程
- 公司沒繳社保勞動仲裁申請書
- 損傷力學與斷裂分析
- 2024年縣鄉(xiāng)教師選調進城考試《教育學》題庫及完整答案(考點梳理)
- 車借給別人免責協(xié)議書
- 應急預案評分標準表
- “網絡安全課件:高校教師網絡安全與信息化素養(yǎng)培訓”
評論
0/150
提交評論