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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

溫馨提示

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

最新文檔

評論

0/150

提交評論