使用struts框架主要好處之一是它內(nèi)置接口_第1頁(yè)
使用struts框架主要好處之一是它內(nèi)置接口_第2頁(yè)
使用struts框架主要好處之一是它內(nèi)置接口_第3頁(yè)
使用struts框架主要好處之一是它內(nèi)置接口_第4頁(yè)
使用struts框架主要好處之一是它內(nèi)置接口_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余26頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

Struts框架的主要好處之一是它的內(nèi)置接口,執(zhí)行傳入的表單數(shù)據(jù)的數(shù)據(jù)驗(yàn)證。如第4章所的,在提交一個(gè)HTML表單,Struts的捕獲表單數(shù)據(jù),并使用它來填入您的應(yīng)用程序的ActionForm的子類之一(bean)分配給的窗體。formbeanvalidate()方法被調(diào)用來執(zhí)行任何必要的驗(yàn)證傳入的數(shù)據(jù)。如果有任何驗(yàn)證失敗,HTML表單被重新Struts的內(nèi)置的驗(yàn)證界面,但是,仍然有它的缺點(diǎn)。通常情況下,對(duì)于受影響的代碼。為了解決這個(gè)問題,并提高Struts的驗(yàn)證界面,·創(chuàng)建Validator框架作為第附加到Struts的。StrutsJakartaCommons項(xiàng)目StrutsValidator是一個(gè)獨(dú)立的框架一遍,還是Struts的實(shí)現(xiàn)從編碼的硬編碼驗(yàn)證邏輯painless.Insteadbeanvalidate()XML配置文件來,應(yīng)適用于每一個(gè)表單的驗(yàn)證Bean.If你不需要提供驗(yàn)證驗(yàn)證,你可以你自己的Validator框架的細(xì)節(jié),有必要給予驗(yàn)證如何工作的概述?;叵胍幌?,如果沒有您的表單beanobjects.Each表單bean場(chǎng)()方法。此外,你必須寫,將的錯(cuò)誤消息失為驗(yàn)證的ActionFormbeanJava方法被“安裝”,以及他們?nèi)绾螒?yīng)該分別施加給定的應(yīng)用。驗(yàn)證rules.xml驗(yàn)證rules.xml每個(gè)驗(yàn)證例程。如果配置的話,驗(yàn)證器會(huì)發(fā)出這樣的validation.xml中bean。在此文件中定義使用邏輯bean從名字驗(yàn)證rules.xmlbeanActionFormValidator框架來包裝與StrutsValidator是struts-config.xml:<-<plug-inclassName="<設(shè)置屬性屬性=值=WEB-INF/validator-rules.xml/WEB-INF/validation.xml插件這個(gè)定義將導(dǎo)致Struts的加載和初始化校驗(yàn)器插件為你的Web應(yīng)用程序相對(duì)路徑來指定,如前面的Notethatyourapplication的struts-config.xmlDTD,它指定在哪些元素顯示在順序在適當(dāng)?shù)亩ㄎ募?,以便它符合DTD。配置驗(yàn)證器rules.xml程序很簡(jiǎn)單,就是入到系統(tǒng)中執(zhí)行特定的Java方法驗(yàn)證rules.xmlStruts驗(yàn)證-rules.xml中arepluggedintoValidator:<DOCTYPE“-//Apache的//DTD下議院1.0//EN““mons/dtds/validator_1_0.dtd”<校驗(yàn)器名=類名=“.apache.struts.validator.FieldChecks”方法=“validateRequired”methodParams=java.lang.Objectmons.validator.Field,.apache.struts.action.ActionErrors,javax.servlet.http.HttpServletRequest“味精=“errors.required”><![CDATAvalidateRequired(表格)isValidTRUE;focusFieldNULL;I=0;變種欄=Array();oRequired=新要求();對(duì)于(XINoRequired){變種字段=形式oRequiredX0如果(field.type=='文本'||field.type=='textarea的'||field.type=='文件'||field.type請(qǐng)選擇一'||field.type=='廣播'||field.type==''){無功值='';如果(field.type)SIfield.selectedIndex如果(SI值field.optionsSI的值}值field.value}如果(修剪(值)0)倘(i==0){focusField字段}域[我oRequiredX1}}}如果(fields.length0){focusField.focus();警報(bào)(fields.join(的n))}}從第左邊和右邊修剪空白。trim(S){s.replace(^\秒*/)(s*$/,)}JavaScript的校驗(yàn)器全球表單驗(yàn)證驗(yàn)證-rules.xml中validation.xmlJavaScript的JavaScript的todefineclientsideJavaScriptcodeforperformingthesamevalidationontheclientsideasisperformedontheserverside。Struts提供來包裝與預(yù)先設(shè)定的驗(yàn)證-rules.xml中6-1邏輯列出每個(gè)預(yù)配置的驗(yàn)證驗(yàn)證-rules.xml中fileisfoundinChapter18。第六章:完整的參考絨毛/Struts的:TCR//223131-9/第6byteValidates指定的字段包含一個(gè)有效的字節(jié)。dateValidates指定的字段包含一個(gè)有效的日期。doubleValidates指定的字段包含一個(gè)有效的兩倍。Validatese-mail地址。floatValidates指定的字段包含一個(gè)有效的浮點(diǎn)數(shù)。floatRangeValidatesfloat和值以內(nèi)integerValidates指定的字段包含一個(gè)有效的整數(shù)。6-11Validator的預(yù)配置的驗(yàn)證maskValidatesthatthespecifiedfieldconformstoagivenregularexpression()intRange(即空格,制表符和換行符)6-12Validator的預(yù)配置的驗(yàn)證,ActionFormActionForm的itself.Validator的ActionForm的ActionForm的驗(yàn)證()驗(yàn)證()平行于Struts提供的功能,驗(yàn)證給你兩條bean時(shí)進(jìn)行選擇。你可以選擇第一條路徑是創(chuàng)建一個(gè)bean對(duì)象喜歡這里所示:;公符串getUsername()返回用戶名}setUsername(字符串username){this.username=用戶名;}公符串取回()返回}公共無效setPassword(字符串){this.password=;}}ActionForm的ActionForm的“sempty重設(shè)()驗(yàn)證()beanstruts-config.xmlbean<bean的名稱=logonForm類型=com.jamesholmes.minihr.LogonForm表單豆bean的邏輯名validation.xml中<DOCTYPE“-//Apache的//DTD下議院1.0//EN““mons/dtds/validator_1_0.dtd”<form<fieldproperty="username"<arg0場(chǎng)</FORM表單集</表單驗(yàn)證>的bean它們所應(yīng)用的名稱。asshownhere<form-propertyname="username"<form-propertyname="password"</表單豆>DynamicFormBeansdonotrequireyoutocreateconcreteFormBeanobjects,而是FormBeanStrutsbean為您服務(wù)。驗(yàn)證程序允許您使用這個(gè)概念就像你會(huì)與Struts。為驗(yàn)證唯一的區(qū)別是,您指定您的表單bean的類型是的。bean定義是驗(yàn)證時(shí),您將使用的名稱validation.xmlbean。bean兩個(gè)標(biāo)準(zhǔn)選項(xiàng),驗(yàn)證提供anadvancedfeaturefortyingmultiplevalidationdefinitionstooneFormBeandefinition。-bean,驗(yàn)證程序使用struts-config.xmlvalidation.xml中asubsetofthefields.BecausevalidationdefinitionsaretiedtotheFormBean時(shí),unusedfields.WhentheFormBeanisvalidated,ActionForm的bean。這樣,你可以Action表單bean使用beanbean公共類為AddressFormValidatorActionForm}ForDynamicFormBeans,youspecifyatypeof。bean定義struts-config.xml<bean的名稱=“為AddressForm類型=“.apache.struts.validator.DynaValidatorActionForm”validation.xml文件,你一組驗(yàn)證到一個(gè)Action的路而不是一個(gè)formbean的名稱,因?yàn)槿绻愣x了兩個(gè)操作,創(chuàng)建地址bean,如下圖所示,每一個(gè)都有獨(dú)特的<操作路徑=createAddress類型=com.jamesholmes.minihr.CreateAddressActionNAME“為AddressForm<操作路徑=editAddress類型=com.jamesholmes.minihr.EditAddressActionNAME“為AddressForm</動(dòng)作validation.xmlbean<form<fieldproperty="city"<arg0場(chǎng)</FORM<form<fieldproperty="state"<arg0場(chǎng)</FORM</表單集>或,驗(yàn)證知道使用一個(gè)Action的路徑找到驗(yàn)證Bean的邏輯名稱。該validation.xmlFormBeans.EachFormBeanthatyouwanttovalidatehasitsowndefinitioninthisfile。Bean'sfieldsFollowingisasamplevalidation.xml中<DOCTYPE“-//Apache的//DTD下議院1.0//EN““mons/dtds/validator_1_0.dtd”<form<fieldproperty="username"<arg0場(chǎng)<fieldproperty="password"<arg0場(chǎng)</FORM表單集表單驗(yàn)證validation.xml中每bean的定義beanValidatorwillattempttomatchthenameeitheragainstaFormBean'slogicalnameoragainstanAction'spath。Insidethebean。該驗(yàn)證rules.xmlvalidation.xml18驗(yàn)證程序使用Struts的資源機(jī)制外化的錯(cuò)誤消息。驗(yàn)證rules.xml中<校驗(yàn)器名=類名=“.apache.struts.validator.FieldChecks”方法=“validateRequired”methodParams=java.lang.Objectmons.validator.Field,.apache.struts.action.ActionErrors,javax.servlet.http.HttpServletRequest“味精=“errors.required”>預(yù)打包附帶的Struts的例子文件驗(yàn)證rules.xmlesprepackagedwithStruts'exampleapplications:Validator框架驗(yàn)證#錯(cuò)誤消息errors.required0errors.minlength={0}不能少于1}個(gè)字符。errors.maxlength0不能大于2個(gè)字符。errors.invalid={0}是無效的。errors.byte={0}必須是一個(gè)字節(jié)。errors.short={0}必須是短。/r/eger={0}必須是整數(shù)。errors.long={0}必須是一個(gè)長(zhǎng)期的。errors.float={0}必須是浮點(diǎn)數(shù)。errors.double={0}必須是一個(gè)雙。errors.date={0}不是一個(gè)日期。errors.range0不在范圍1到2}。errors.creditcard={0}不是一個(gè)有效的號(hào)碼errors.={0}是無效的電子郵件地址請(qǐng)注意,每個(gè)消息都有占位符{0}1},或形式{2}。在運(yùn)行時(shí),:errors.required0是必需的。validation.xml中值,它應(yīng)該被用來代替0<form<fieldproperty="bid"<arg0場(chǎng)</FORM03}--Intheprecedingexample時(shí),arg0替換{0}占位符。這個(gè)的prompt.bidvalidation.xml為ag0:<arg0key="AuctionBid"10Validatorprovidesaneasy到usemechanismforperformingclient驗(yàn)證rules.xml中ToenableclientsidevalidationyouhavetoplacetheHTMLTagLibraryJavaScripttagineachJSPforwhichyouwantvalidationperformed,asshownhere<html:javascript該JavaScriptvalidation.xml<form<fieldproperty="username"<arg0場(chǎng)<fieldproperty="password"<arg0場(chǎng)</FORM6.2添加一個(gè)新的驗(yàn)證規(guī)則的驗(yàn)證-rules.xml中validation.xml中并以方式使用,而不是被硬編碼在每個(gè)表單bean想要inthissection.Howeveryoucanplacethemethodinanyclass.Yourvalidationmethod公共靜態(tài)validateSsNum(java.lang.Object中,mons.validator.ValidatorAction,mons.validator.Field,.apache.struts.action.ActionErrorsjavax.servlet.http.HttpServletRequest)OFCOURSE,thenameofyourmethodwillvary,6-2說明了每個(gè)驗(yàn)證方法的的validateSsNum(;;進(jìn) 進(jìn) 進(jìn) 進(jìn)口.apache.struts.action.ActionErrorsMiniHrValidator{公共靜態(tài)validateSsNum(對(duì)象豆ActionErrors{字符串值();如果(值==NULL||value.length()<11){errors.add(field.getKey(),Resources.getActionError(請(qǐng)求動(dòng)作,場(chǎng)));false;}為(inti0I11i++)倘(i3||我6)如果(value.charAt(?。?!'-'){errors.add(field.getKey(),Resources.getActionError(請(qǐng)求動(dòng)作,場(chǎng)));false;}的elseif(0123456789indexOf(value.charAt(?。?){errors.add(field.getKey(),Resources.getActionError(請(qǐng)求動(dòng)作,場(chǎng)))false}}true}}java.lang.ObjectThebean對(duì)象(toObject)rules.xmlfilethevalidation.xmlfile定義為.apache.struts.action.ActionErrorsTheActionErrorsobject店驗(yàn)證錯(cuò)誤javax.servlet.http.HttpServletRequestTheHTTPServletRequestobject膠囊包封HTTP請(qǐng)求。6-31-2-3該validateSsNum(validated.Thevalueisretrievedbydeterminingthefieldsnamewithacalltofield.getProperty()ValidatorUtil.getValueAsString()getValueAsString()field'svalue。TherestofthevalidateSsNum()logic.Ifthevalidationfailsforanyreason,驗(yàn)證rules.xmlfile.Asdiscussedearlierinthischapter,validationrules驗(yàn)證-rules.xml中validation.xml中<校驗(yàn)器名=ssNum類名=com.jamesholmes.minihr.MiniHrValidator”方法=“validateSsNum”methodParams=java.lang.Objectmons.validator.Field,.apache.struts.action.ActionErrors,javax.servlet.http.HttpServletRequest“味精=“errors.ssNum”><![CDATAvalidateSsNum(表格)bValidTRUEfocusFieldI0變種欄=Array()oSsNumssNum()對(duì)于(XINoSsNum)如果((形式oSsNumX0|形式oSsNumX0]。類型=='textarea)(表格oSsNumX0]value.length0){無功值=形式oSsNumX0的值bRightFormatTRUE如果(value.length11){bRightFormat=FALSE;}為(VARN0,N11,N)如果(N3||N=6)如果(value.substring(N,N+1)=){bRightFormat=FALSE;}的elseif(0123456789indexOf(value.substring(N,N+1)==-1){bRightFormat=FALSE;}}如果(bRightFormat)倘(i0)focusField形式oSsNumX0}域[我oSsNumX1bValid=FALSE;}}}如果(fields.length0){focusField.focus();警報(bào)(fields.join(的n))}}JavaScript的校驗(yàn)器Asyoucansee,屬性屬性validation.xml中TheprecedingcustomvalidationrulealsodefinesJavaScriptcode,insidetheopeningwhichwillbeusedifclientJavaScriptJavaScript驗(yàn)證失敗,它會(huì)HtmlForm被提交。驗(yàn)證-rules.xml中<validatorname="ssnum"全球</表單驗(yàn)證>ssnum

溫馨提示

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

評(píng)論

0/150

提交評(píng)論