SSH教學(xué)課件:C05 Struts2的輸入校驗(yàn)_第1頁(yè)
SSH教學(xué)課件:C05 Struts2的輸入校驗(yàn)_第2頁(yè)
SSH教學(xué)課件:C05 Struts2的輸入校驗(yàn)_第3頁(yè)
SSH教學(xué)課件:C05 Struts2的輸入校驗(yàn)_第4頁(yè)
SSH教學(xué)課件:C05 Struts2的輸入校驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第七章Struts2的輸入校驗(yàn)本章主要內(nèi)容7.1簡(jiǎn)介7.2用validate方法進(jìn)行輸入校驗(yàn)validate()方法輸入校驗(yàn)、validateXxx()方法輸入校驗(yàn)7.3基于框架的輸入校驗(yàn)使用字段校驗(yàn)的輸入校驗(yàn)、使用非字段校驗(yàn)的輸入校驗(yàn)7.1簡(jiǎn)介Web技術(shù)的發(fā)展給用戶帶來(lái)了方便,使用瀏覽器就可以完成某些工作。在方便使用的同時(shí),也將系統(tǒng)輸入界面暴露給用戶,面臨大量惡意破壞性輸入的考驗(yàn)。例如金額的輸入框中輸入字母漢字,日期的輸入框輸入不正確的格式或不可能存在的日期等。這些都需要我們通過(guò)輸入校驗(yàn)來(lái)解決。輸入校驗(yàn)直接影響了系統(tǒng)的抗破壞性能和穩(wěn)定性。實(shí)際上,輸入校驗(yàn)往往同類型轉(zhuǎn)換聯(lián)系在一起,都是對(duì)用戶輸入數(shù)據(jù)的規(guī)范化檢查和處理,我們可以通過(guò)JavaScript來(lái)實(shí)現(xiàn)客戶端校驗(yàn),但一般都只是完成初步的檢查和過(guò)濾,但對(duì)于需要與服務(wù)器交互的邏輯性校驗(yàn)就無(wú)能為力了,雖然提高了相應(yīng)速度,但是功能有很大局限性,代碼維護(hù)性也不好。我們不來(lái)講解JavaScript的客戶端校驗(yàn),只是來(lái)看看Struts2為我們提供的輸入校驗(yàn)方法。7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.1validate()方法輸入校驗(yàn)我們先來(lái)學(xué)習(xí)validate()方法進(jìn)行校驗(yàn)。創(chuàng)建“com.ntc.sample.sshvalidate”的package包。并在其下邊建立ValidateAction類,關(guān)鍵代碼如下所示。校驗(yàn)邏輯如代碼注釋,對(duì)于用戶名,必須輸入,對(duì)于密碼必須長(zhǎng)度在6-10。詳細(xì)參看教材例7.1。注意:使用validate()方法必須繼承ActionSupport類7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.1validate()方法輸入校驗(yàn)接著創(chuàng)建validate.jsp,用來(lái)輸入用戶名和密碼。代碼如下所示,詳細(xì)參看教材例7.2。

7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.1validate()方法輸入校驗(yàn)然后創(chuàng)建校驗(yàn)成功后的頁(yè)面detail.jsp,代碼如下7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.1validate()方法輸入校驗(yàn)在src目錄下建立配置文件struts.xml,如下所示7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.1validate()方法輸入校驗(yàn)初始化的頁(yè)面如下圖所示7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.1validate()方法輸入校驗(yàn)點(diǎn)擊確認(rèn)后,我們的校驗(yàn)執(zhí)行了,這里,每個(gè)輸入域都會(huì)出現(xiàn)對(duì)應(yīng)的錯(cuò)誤信息,效果圖如下,參看教材圖7.2。7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.1validate()方法輸入校驗(yàn)當(dāng)我們輸入符合條件的數(shù)據(jù)但不是admin和password時(shí),例如輸入admi和1234567時(shí),返回輸入頁(yè)面但是沒(méi)有出錯(cuò)信息,說(shuō)明校驗(yàn)是正常通過(guò)的只是邏輯不正確。7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.1validate()方法輸入校驗(yàn)我們?cè)賮?lái)輸入admin和password,將遷移到detail.jsp,表示校驗(yàn)正常,邏輯也正確。7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.1validate()方法輸入校驗(yàn)我們還可以在validate.jsp中加入如下代碼,這樣可以把所有的異常信息顯示出來(lái)。我們把它放在了</body>上邊,出錯(cuò)的時(shí)候,錯(cuò)誤信息除了在每個(gè)輸入框處顯示外,在頁(yè)面最下端也會(huì)把所有的錯(cuò)誤顯示出來(lái)。

效果圖7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.2validateXxx()方法輸入校驗(yàn)對(duì)于使用validate()方法校驗(yàn),我們?cè)贏ction中所有的處理方法都會(huì)進(jìn)行數(shù)據(jù)校驗(yàn),而validateXxx()方法則是對(duì)不同的業(yè)務(wù)方法進(jìn)行數(shù)據(jù)校驗(yàn)。例如,我們有一個(gè)login()方法,我們使用validateLogin()方法來(lái)處理數(shù)據(jù)輸入校驗(yàn)。我們來(lái)看一個(gè)例子里面的ValidateXxxAction類,里邊定義一個(gè)login方法,并建立validateLogin方法注意:由于validate()方法對(duì)Action類中所有方法進(jìn)行校驗(yàn),所以,在使用validateXxx()方式時(shí),最好去掉validate()方法的代碼,或者檢查兩者不需要重復(fù)校驗(yàn)。7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.2validateXxx()方法輸入校驗(yàn)以下是校驗(yàn)類的校驗(yàn)方法的主要代碼注意:使用validateXxx()方法必須繼承ActionSupport類7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.2validateXxx()方法輸入校驗(yàn)我們?cè)賮?lái)看validatexxx.jsp,只是form的action改成了validatexxx,其他的也沒(méi)有變化,主要代碼如下7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.2validateXxx()方法輸入校驗(yàn)Struts.xml關(guān)鍵代碼如下7.3基于框架的輸入校驗(yàn)我們上節(jié)用validate()和validateXxx()方法進(jìn)行了校驗(yàn),這種方式的校驗(yàn)的弊端就是寫在了Action實(shí)現(xiàn)類中,使Action變得復(fù)雜臃腫,同時(shí)提高了Action同輸入校驗(yàn)之間的耦合度。Struts2框架提供了一種基于框架文件的輸入校驗(yàn)方式,將校驗(yàn)規(guī)則保存在特定的框架文件中,這樣,輸入校驗(yàn)和Action實(shí)現(xiàn)了分離,提高了系統(tǒng)的維護(hù)性。基于框架的校驗(yàn)有兩種編寫校驗(yàn)規(guī)則文件的寫法,一種是使用字段校驗(yàn)的寫法,一種是使用非字段校驗(yàn)的寫法。7.3基于框架的輸入校驗(yàn)7.3.1使用字段校驗(yàn)的輸入校驗(yàn)使用Struts2的框架校驗(yàn)規(guī)則文件進(jìn)行輸入校驗(yàn),需要建立一個(gè)特定的校驗(yàn)規(guī)則文件就可以了。Struts2框架的校驗(yàn)規(guī)則文件就是一個(gè)XML格式的配置文件,命名規(guī)則為“Action名稱-validation.xml”。保存在同Action實(shí)現(xiàn)類相同的目錄下。7.3基于框架的輸入校驗(yàn)7.3.1使用字段校驗(yàn)的輸入校驗(yàn)我們來(lái)創(chuàng)建一個(gè)使用字段校驗(yàn)的例子。首先,我們創(chuàng)建ValidateByFieldXmlAction的Action類注意:使用字段校驗(yàn)需要繼承ActionSupport類7.3基于框架的輸入校驗(yàn)7.3.1使用字段校驗(yàn)的輸入校驗(yàn)下面我們?cè)凇癱om.ntc.sample.sshvalidate”包下建立字段校驗(yàn)規(guī)則文件,將其命名為ValidateByFieldXmlAction-validation.xml。大家可以對(duì)應(yīng)它和前邊Action中校驗(yàn)代碼比較一下。7.3基于框架的輸入校驗(yàn)7.3.1使用字段校驗(yàn)的輸入校驗(yàn)ValidateByFieldXmlAction-validation.xml的關(guān)鍵代碼如下:type指定校驗(yàn)類型,常用校驗(yàn)類型如下:required:必填字段校驗(yàn)requiredstring:非空String檢查int:Int類型范圍校驗(yàn)double:Double類型范圍校驗(yàn)date:日期校驗(yàn)Expression:使用OGNL表達(dá)式的校驗(yàn)fieldexpression:針對(duì)一個(gè)字段使用OGNL表達(dá)式的校驗(yàn)email:Email校驗(yàn)url:URL校驗(yàn)regex:正則表達(dá)式校驗(yàn)stringlength:字符產(chǎn)長(zhǎng)度校驗(yàn)7.3基于框架的輸入校驗(yàn)7.3.1使用字段校驗(yàn)的輸入校驗(yàn)我們?cè)賮?lái)創(chuàng)建validatebyfieldxml.jsp,關(guān)鍵代碼如下7.3基于框架的輸入校驗(yàn)7.3.1使用字段校驗(yàn)的輸入校驗(yàn)在struts.xml中關(guān)鍵代碼如下7.3基于框架的輸入校驗(yàn)7.3.1使用字段校驗(yàn)的輸入校驗(yàn)這次index.html中的鏈接變成了“使用字段校驗(yàn)配置文件”,和以前一樣,我們不輸入用戶名并輸入密碼12345678901,效果圖如下,參看教材圖7.6。注意:我們通過(guò)URL可以看到,其實(shí),用戶請(qǐng)求已經(jīng)通過(guò)框架轉(zhuǎn)發(fā)給Action了,即已經(jīng)走到后臺(tái)中了,對(duì)于這種簡(jiǎn)單的校驗(yàn),能不能在前臺(tái)做呢?答案是肯定的,我們只需要修改一個(gè)地方,即在form標(biāo)簽中追加validate=“true”,就可以不走到后臺(tái),而只是通過(guò)Struts2框架將定義的字段校驗(yàn)內(nèi)容轉(zhuǎn)換成JavaScript腳本,嵌入到JSP中,實(shí)現(xiàn)客戶端的校驗(yàn)了。7.3基于框架的輸入校驗(yàn)7.3.2使用非字段校驗(yàn)的輸入校驗(yàn)我們提到的使用字段校驗(yàn)的輸入校驗(yàn)示例中,校驗(yàn)規(guī)則文件里<validators>是校驗(yàn)規(guī)則文件里的根元素,該元素下面出現(xiàn)的是<field.../>子元素,而<field.../>元素中包含了<field-validator.../>元素。這種將<field.../>即字段元素作為<validators>元素的第一級(jí)子元素的情況為字段優(yōu)先,也可以稱為字段校驗(yàn)。而我們現(xiàn)在要說(shuō)的非字段校驗(yàn)是在<validators>元素中,以<validator.../>作為第一級(jí)子元素,并在該元素下面使用<param.../>作為子元素來(lái)定義,即校驗(yàn)器優(yōu)先。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論