版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第七章Struts2的輸入校驗(yàn)本章主要內(nèi)容7.1簡介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簡介Web技術(shù)的發(fā)展給用戶帶來了方便,使用瀏覽器就可以完成某些工作。在方便使用的同時,也將系統(tǒng)輸入界面暴露給用戶,面臨大量惡意破壞性輸入的考驗(yàn)。例如金額的輸入框中輸入字母漢字,日期的輸入框輸入不正確的格式或不可能存在的日期等。這些都需要我們通過輸入校驗(yàn)來解決。輸入校驗(yàn)直接影響了系統(tǒng)的抗破壞性能和穩(wěn)定性。實(shí)際上,輸入校驗(yàn)往往同類型轉(zhuǎn)換聯(lián)系在一起,都是對用戶輸入數(shù)據(jù)的規(guī)范化檢查和處理,我們可以通過JavaScript來實(shí)現(xiàn)客戶端校驗(yàn),但一般都只是完成初步的檢查和過濾,但對于需要與服務(wù)器交互的邏輯性校驗(yàn)就無能為力了,雖然提高了相應(yīng)速度,但是功能有很大局限性,代碼維護(hù)性也不好。我們不來講解JavaScript的客戶端校驗(yàn),只是來看看Struts2為我們提供的輸入校驗(yàn)方法。7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.1validate()方法輸入校驗(yàn)我們先來學(xué)習(xí)validate()方法進(jìn)行校驗(yàn)。創(chuàng)建“com.ntc.sample.sshvalidate”的package包。并在其下邊建立ValidateAction類,關(guān)鍵代碼如下所示。校驗(yàn)邏輯如代碼注釋,對于用戶名,必須輸入,對于密碼必須長度在6-10。詳細(xì)參看教材例7.1。注意:使用validate()方法必須繼承ActionSupport類7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.1validate()方法輸入校驗(yàn)接著創(chuàng)建validate.jsp,用來輸入用戶名和密碼。代碼如下所示,詳細(xì)參看教材例7.2。
7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.1validate()方法輸入校驗(yàn)然后創(chuàng)建校驗(yàn)成功后的頁面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)初始化的頁面如下圖所示7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.1validate()方法輸入校驗(yàn)點(diǎn)擊確認(rèn)后,我們的校驗(yàn)執(zhí)行了,這里,每個輸入域都會出現(xiàn)對應(yīng)的錯誤信息,效果圖如下,參看教材圖7.2。7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.1validate()方法輸入校驗(yàn)當(dāng)我們輸入符合條件的數(shù)據(jù)但不是admin和password時,例如輸入admi和1234567時,返回輸入頁面但是沒有出錯信息,說明校驗(yàn)是正常通過的只是邏輯不正確。7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.1validate()方法輸入校驗(yàn)我們再來輸入admin和password,將遷移到detail.jsp,表示校驗(yàn)正常,邏輯也正確。7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.1validate()方法輸入校驗(yàn)我們還可以在validate.jsp中加入如下代碼,這樣可以把所有的異常信息顯示出來。我們把它放在了</body>上邊,出錯的時候,錯誤信息除了在每個輸入框處顯示外,在頁面最下端也會把所有的錯誤顯示出來。
效果圖7.2用validate方法進(jìn)行輸入校驗(yàn)7.2.2validateXxx()方法輸入校驗(yàn)對于使用validate()方法校驗(yàn),我們在Action中所有的處理方法都會進(jìn)行數(shù)據(jù)校驗(yàn),而validateXxx()方法則是對不同的業(yè)務(wù)方法進(jìn)行數(shù)據(jù)校驗(yàn)。例如,我們有一個login()方法,我們使用validateLogin()方法來處理數(shù)據(jù)輸入校驗(yàn)。我們來看一個例子里面的ValidateXxxAction類,里邊定義一個login方法,并建立validateLogin方法注意:由于validate()方法對Action類中所有方法進(jìn)行校驗(yàn),所以,在使用validateXxx()方式時,最好去掉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)我們再來看validatexxx.jsp,只是form的action改成了validatexxx,其他的也沒有變化,主要代碼如下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ù)雜臃腫,同時提高了Action同輸入校驗(yàn)之間的耦合度。Struts2框架提供了一種基于框架文件的輸入校驗(yàn)方式,將校驗(yàn)規(guī)則保存在特定的框架文件中,這樣,輸入校驗(yàn)和Action實(shí)現(xiàn)了分離,提高了系統(tǒng)的維護(hù)性?;诳蚣艿男r?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),需要建立一個特定的校驗(yàn)規(guī)則文件就可以了。Struts2框架的校驗(yàn)規(guī)則文件就是一個XML格式的配置文件,命名規(guī)則為“Action名稱-validation.xml”。保存在同Action實(shí)現(xiàn)類相同的目錄下。7.3基于框架的輸入校驗(yàn)7.3.1使用字段校驗(yàn)的輸入校驗(yàn)我們來創(chuàng)建一個使用字段校驗(yàn)的例子。首先,我們創(chuàng)建ValidateByFieldXmlAction的Action類注意:使用字段校驗(yàn)需要繼承ActionSupport類7.3基于框架的輸入校驗(yàn)7.3.1使用字段校驗(yàn)的輸入校驗(yàn)下面我們在“com.ntc.sample.sshvalidate”包下建立字段校驗(yàn)規(guī)則文件,將其命名為ValidateByFieldXmlAction-validation.xml。大家可以對應(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:針對一個字段使用OGNL表達(dá)式的校驗(yàn)email:Email校驗(yàn)url:URL校驗(yàn)regex:正則表達(dá)式校驗(yàn)stringlength:字符產(chǎn)長度校驗(yàn)7.3基于框架的輸入校驗(yàn)7.3.1使用字段校驗(yàn)的輸入校驗(yàn)我們再來創(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。注意:我們通過URL可以看到,其實(shí),用戶請求已經(jīng)通過框架轉(zhuǎn)發(fā)給Action了,即已經(jīng)走到后臺中了,對于這種簡單的校驗(yàn),能不能在前臺做呢?答案是肯定的,我們只需要修改一個地方,即在form標(biāo)簽中追加validate=“true”,就可以不走到后臺,而只是通過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>元素的第一級子元素的情況為字段優(yōu)先,也可以稱為字段校驗(yàn)。而我們現(xiàn)在要說的非字段校驗(yàn)是在<validators>元素中,以<validator.../>作為第一級子元素,并在該元素下面使用<param.../>作為子元素來定義,即校驗(yàn)器優(yōu)先。
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年1月國家開放大學(xué)法律事務(wù)??啤睹穹▽W(xué)(1)》期末紙質(zhì)考試試題及答案
- 二零二五版25MW柴油發(fā)電機(jī)電站電網(wǎng)安全防護(hù)與應(yīng)急響應(yīng)合同3篇
- 二零二五版辦公家具二手市場交易規(guī)范合同3篇
- 2025年上半年郴州市宜章縣電子政務(wù)中心招考易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年鄭州市金水區(qū)事業(yè)單位招考(45人)易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年晚會活動贊助商宣傳物料制作合同3篇
- 2025年上半年邯鄲涉縣事業(yè)單位招考易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年遼寧鐵嶺市銀州區(qū)事業(yè)單位招聘工作人員82人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年遼寧沈陽鐵路局招聘210人(四)易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年贛州安遠(yuǎn)縣部分邊遠(yuǎn)鄉(xiāng)鎮(zhèn)事業(yè)單位招考專業(yè)技術(shù)人員易考易錯模擬試題(共500題)試卷后附參考答案
- 第二章 運(yùn)營管理戰(zhàn)略
- 《三本白皮書》全文內(nèi)容及應(yīng)知應(yīng)會知識點(diǎn)
- 專題14 思想方法專題:線段與角計(jì)算中的思想方法壓軸題四種模型全攻略(解析版)
- 醫(yī)院外來器械及植入物管理制度(4篇)
- 圖像識別領(lǐng)域自適應(yīng)技術(shù)-洞察分析
- 新概念英語第二冊考評試卷含答案(第49-56課)
- 商業(yè)倫理與企業(yè)社會責(zé)任(山東財經(jīng)大學(xué))智慧樹知到期末考試答案章節(jié)答案2024年山東財經(jīng)大學(xué)
- 【奧運(yùn)會獎牌榜預(yù)測建模實(shí)證探析12000字(論文)】
- (完整版)譯林版英語詞匯表(四年級下)
- 支票票樣-樣版
- 標(biāo)準(zhǔn)活動板房設(shè)計(jì)說明(共7頁)
評論
0/150
提交評論