第4章Struts2類型轉(zhuǎn)換和校驗(yàn)_第1頁
第4章Struts2類型轉(zhuǎn)換和校驗(yàn)_第2頁
第4章Struts2類型轉(zhuǎn)換和校驗(yàn)_第3頁
第4章Struts2類型轉(zhuǎn)換和校驗(yàn)_第4頁
第4章Struts2類型轉(zhuǎn)換和校驗(yàn)_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第四章類型轉(zhuǎn)換和輸入驗(yàn)證概述validateXxx()方法驗(yàn)證validate()方法驗(yàn)證資源文件中定義提示信息類型轉(zhuǎn)換器validateXxx()方法驗(yàn)證服務(wù)器端驗(yàn)證輸入數(shù)據(jù)的必要性防止用戶誤操作引發(fā)異常防止惡意攻擊validateXxx()方法Xxx是action方法名首字母大寫形式;validateXxx()在執(zhí)行名稱為xxx的acton方法之前,對輸入數(shù)據(jù)進(jìn)行驗(yàn)證;驗(yàn)證邏輯在validateXxx()方法中書寫。validateXxx()方法驗(yàn)證使用validateXxx()示例以用戶登錄為例,在LoginAction方法中添加如下方法validateExecute(),該方法將在execute方法之前執(zhí)行。注意:LoginAction應(yīng)當(dāng)繼承ActionSupport類publicvoidvalidateExecute(){if(this.userId==null||this.userId.trim().equals("")){

this.addFieldError("userId","請輸入用戶ID!");}if(this.userPwd==null||this.userPwd.trim().equals("")){

this.addFieldError("userPwd","請輸入密碼!");}}validateXxx()方法驗(yàn)證使用validateXxx()示例(續(xù))在LoginAction的配置中設(shè)置名稱為“input”的result元素,該元素用于指定驗(yàn)證不通過時轉(zhuǎn)發(fā)的視圖。<actionname="login"class="edu.ibmai.action.LoginAction">

<resultname="success"type="redirect">/show.action</result>

<resultname="fail">/fail.jsp</result>

<resultname="input">/index.jsp</result>

</action>validateXxx()方法驗(yàn)證使用validateXxx()說明業(yè)務(wù)action應(yīng)當(dāng)繼承ActionSupport類輸入數(shù)據(jù)驗(yàn)證未通過時,應(yīng)使用父類的如下方法將錯誤信息放入錯誤信息集合。

addFieldError(String

fieldName,StringerrorMessage);第一個參數(shù):字符串類型,值為未通過驗(yàn)證的屬性名稱;第二個參數(shù):字符串類型,值為錯誤信息。validateXxx()方法驗(yàn)證(續(xù))使用validateXxx()說明原理struts2調(diào)用xxx()方法之前,先調(diào)用validateXxx()方法;validateXxx()方法執(zhí)行完畢之后,struts2檢查action的錯誤集合是否放有錯誤信息;如果錯誤集合中有錯誤信息,則在action配置中尋找名稱為”input”的結(jié)果視圖,并將請求轉(zhuǎn)發(fā)至該視圖。如果錯誤集合中無錯誤信息,正常調(diào)用xxx()方法。validate()方法驗(yàn)證validate()方法validate()也同樣用于服務(wù)器端對輸入數(shù)據(jù)驗(yàn)證執(zhí)行一個action方法之前,validate()都會被調(diào)用action中所有validateXxx()方法執(zhí)行完畢之后,將調(diào)用validate()方法。validate()其它方面與validateXxx()相同validate()方法驗(yàn)證示例publicvoidvalidate(){if(this.userId==null||this.userId.trim().equals("")){

this.addFieldError("userId","請輸入用戶ID!");}if(this.userPwd==null||this.userPwd.trim().equals("")){

this.addFieldError("userPwd","請輸入密碼!");}}資源文件中定義提示信息硬編碼提示信息的缺點(diǎn)無法快速滿足用戶對提示信息變化的需求無法適應(yīng)界面語言國際化的需求。資源文件的概念軟件界面上的顯示信息可以看做信息資源信息資源從程序編碼中分離,存儲于獨(dú)立的文件,這種文件即為資源文件。資源文件中定義界面信息的優(yōu)點(diǎn)適應(yīng)不同用戶對提示信息不同措辭的要求有益于軟件的國際化。資源文件中定義提示信息資源文件Strut2的資源文件的建立資源文件的命名資源文件的后綴名一律為“properties”,即java屬性文件命名格式:主名稱_語言_地區(qū).properties例1:ApplicationResource_zh_CN.properties例2:ApplicationResource_en_US.properties例3:ApplicationRperties

其中不帶語言和地區(qū)的資源文件為默認(rèn)資源文件,當(dāng)找不到指定語言和地區(qū)的資源文件時使用默認(rèn)文件資源文件中定義提示信息資源文件Strut2的資源文件的建立資源文件的范圍層次全局資源文件適用于遍布于整個應(yīng)用程序的國際化字符串在struts.xml中或perties指定全局資源文件,struts.xml中配置,示例如下:包范圍的資源文件在某類包的目錄下建立主名為package的資源文件Action范圍的資源文件在Action的包下建立主名與Action類名同名的資源文件資源文件中定義提示信息資源文件Strut2的資源文件的建立資源文件查找順序Action范圍》包范圍》全局范圍資源文件中定義提示信息獲取資源信息在action中使用父類(ActionSupport)的getText()方法從資源文件中獲取信息在jsp頁面通過標(biāo)簽<s:text>獲取信息或者通過使用ognl表達(dá)式:getText('key')獲取信息資源文件中定義提示信息示例編寫資源文件在action類所在包下建立與action類同名的資源文件(后綴名為.properties),本例即為LoginAperties在action中使用父類(ActionSupport)的getText()方法從資源文件中獲取信息error.login.userid.empty=Pleaseinputtheidofuser!error.login.userpwd.empty=Pleaseinputthepasswordofuser!if(this.userPwd==null||this.userPwd.trim().equals("")){

this.addFieldError("userPwd",this.getText("error.login.userpwd.empty"));}Struts2的類型轉(zhuǎn)換器類型轉(zhuǎn)換器的作用在Struts2中通過類型轉(zhuǎn)換器將瀏覽器提交的參數(shù)轉(zhuǎn)換為與Action屬性相適應(yīng)的類型并賦值。Struts2內(nèi)置了常用的類型轉(zhuǎn)換器,因此在大多數(shù)情況下,開發(fā)者無需為類型轉(zhuǎn)換編寫代碼在某些特殊情況下,Struts2的內(nèi)置轉(zhuǎn)換器不能適應(yīng)要求,就需要自行開發(fā)轉(zhuǎn)換器Struts2的類型轉(zhuǎn)換器轉(zhuǎn)換出錯后,ConversionErrorInterceptor截攔器會截攔轉(zhuǎn)換異常,該截攔器會帶領(lǐng)我們進(jìn)入result為input的URL,并通過<s:fielderror></s:fielderror>顯示錯誤信息.前提:Action必須是ActionSupport的子類如果不使用struts自帶的錯誤信息,可以在Action所在的包中定義”Action類名.properties”文件,內(nèi)容如下:invalid.fieldvalue.inver=整型數(shù)組轉(zhuǎn)換出錯其中,invalid.fieldvalue固定,inver是屬性名稱17Struts2的類型轉(zhuǎn)換器類型轉(zhuǎn)換器的開發(fā)繼承如下類org.apache.struts2.util.StrutsTypeConverter實(shí)現(xiàn)如下兩個方法:publicObjectconvertFromString(Mapcontext,

String[]values,ClasstoClass)

說明:該方法用于將頁面參數(shù)字符串轉(zhuǎn)化為指定類型的值,返回值為目標(biāo)類型的對象。context是ActionContex的實(shí)例對象;values是頁面?zhèn)鱽淼膮?shù),toClass是要轉(zhuǎn)換的目標(biāo)類型的元類對象。publicStringconvertToString(Mapcontext,Objecto)

說明:該方法用于將對象轉(zhuǎn)換為字符串。context是ActionContex的實(shí)例對象;o是需要轉(zhuǎn)換的源對象。Struts2的類型轉(zhuǎn)換器自定義時間轉(zhuǎn)換器示例開發(fā)轉(zhuǎn)換器Struts2的類型轉(zhuǎn)換器自定義時間轉(zhuǎn)換器示例配置轉(zhuǎn)換器全局的類型轉(zhuǎn)換器在類(源程序文件夾)的根路徑下建立文件

perties,為類型java.util.Date配置轉(zhuǎn)換器,其內(nèi)容如下:java.util.Date=xk.util.DateConverter局部類型轉(zhuǎn)換器:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論