課堂錄屏相關(guān)04課程core_第1頁
課堂錄屏相關(guān)04課程core_第2頁
課堂錄屏相關(guān)04課程core_第3頁
課堂錄屏相關(guān)04課程core_第4頁
課堂錄屏相關(guān)04課程core_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第五

章Sturts2.0表單數(shù)據(jù)校驗(yàn)2023/5/171目標(biāo)了解數(shù)據(jù)校驗(yàn)的主要原理理解數(shù)據(jù)校驗(yàn)的組成部分掌握數(shù)據(jù)校驗(yàn)的使用2023/5/172概述表單是應(yīng)用程序最簡單的入口,對其傳進(jìn)來的數(shù)據(jù),我們必須進(jìn)行校驗(yàn)。轉(zhuǎn)換是校驗(yàn)的基礎(chǔ),只有在數(shù)據(jù)被正確地轉(zhuǎn)換成其對應(yīng)的類型后,才可以對其取值范圍進(jìn)行校驗(yàn)。在Struts2中,我們可以實(shí)現(xiàn)對action的所有方法進(jìn)行校驗(yàn)或者對action的指定方法進(jìn)行校驗(yàn)。對于輸入校驗(yàn)Struts2提供了兩種實(shí)現(xiàn)方法:采用手工編寫代碼實(shí)現(xiàn)。基于XML配置方式實(shí)現(xiàn)2023/5/173采用手工編寫代碼實(shí)現(xiàn)根據(jù)例子,逐步體會采用手工編寫代碼實(shí)現(xiàn)校驗(yàn)流程與其重要性首先,從action開始 publicvoidvalidate(){ if(this.mobile==null||"".equals(this.mobile.trim())){ this.addFieldError("mobile","手機(jī)號不能為空"); }else{ if(!Ppile("^1[358]\\d{9}").matcher(this.mobile.trim()) .matches()){ this.addFieldError("mobile","手機(jī)號的格式不正確"); } } if(this.username==null||this.username.equals("")){ this.addFieldError("username","用戶名不能為空"); } }2023/5/1742023/5/175xml的具體配置實(shí)例介紹<actionname="user_*"class="com.xtgj.struts2.chapter05.user.UserAction"method="{1}"> <resultname="success">success.jsp</result> <resultname="input">register.jsp</result></action>實(shí)例介紹2023/5/176用戶注冊頁面register.jsp實(shí)例介紹2023/5/177若未輸入信息就點(diǎn)擊了提交按鈕實(shí)例介紹2023/5/178輸入不合法的手機(jī)號實(shí)例介紹2023/5/179對action指定方法輸入校驗(yàn)publicvoidcheckmethod(){ if(this.mobile==null||"".equals(this.mobile.trim())){ this.addFieldError("mobile","手機(jī)號不能為空"); }else{ if(!Ppile("^1[358]\\d{9}").matcher(this.mobile.trim()) .matches()){ this.addFieldError("mobile","手機(jī)號的格式不正確"); } } if(this.username==null||this.username.equals("")){ this.addFieldError("username","用戶名不能為空"); }}publicvoidvalidateRegist(){ checkmethod();}publicvoidvalidateUpdate(){ checkmethod();}數(shù)據(jù)校驗(yàn)工作方式2023/5/1710

輸入校驗(yàn)在Struts2中,我們可以實(shí)現(xiàn)對action的所有方法進(jìn)行校驗(yàn)或者對action的指定方法進(jìn)行校驗(yàn)。對于輸入校驗(yàn)Struts2提供了兩種實(shí)現(xiàn)方法: 1.采用手工編寫代碼實(shí)現(xiàn)。 2.基于XML配置方式實(shí)現(xiàn)。

輸入校驗(yàn)的流程類型轉(zhuǎn)換器對請求參數(shù)執(zhí)行類型轉(zhuǎn)換,并把轉(zhuǎn)換后的值賦給action中的屬性。如果在執(zhí)行類型轉(zhuǎn)換的過程中出現(xiàn)異常,系統(tǒng)會將異常信息保存到ActionContext,conversionError攔截器將異常信息添加到fieldErrors里。不管類型轉(zhuǎn)換是否出現(xiàn)異常,都會進(jìn)入第3步。系統(tǒng)通過反射技術(shù)先調(diào)用action中的validateXxx()方法,Xxx為方法名。再調(diào)用action中的validate()方法。經(jīng)過上面4步,如果系統(tǒng)中的fieldErrors存在錯(cuò)誤信息(即存放錯(cuò)誤信息的集合的size大于0),系統(tǒng)自動將請求轉(zhuǎn)發(fā)至名稱為input的視圖。如果系統(tǒng)中的fieldErrors沒有任何錯(cuò)誤信息,系統(tǒng)將執(zhí)行action中的處理方法。

基于XML配置方式實(shí)現(xiàn)對action的所有方法進(jìn)行輸入校驗(yàn)使用基于XML配置方式實(shí)現(xiàn)輸入校驗(yàn)時(shí),action也需要繼承ActionSupport,并且提供校驗(yàn)文件,校驗(yàn)文件和action類放在同一個(gè)包下,文件的取名格式為:ActionClassName-validation.xml,其中ActionClassName為action的簡單類名,-validation為固定寫法。如果Action類為com.xtgj.UserAction,那么該文件的取名應(yīng)為:UserAction-validation.xml。下面是校驗(yàn)文件的模版:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEvalidatorsPUBLIC"-//OpenSymphonyGroup//XWorkValidator1.0.3//EN""/xwork/xwork-validator-1.0.3.dtd"><validators><fieldname="username"><field-validatortype="requiredstring"><paramname="trim">true</param><message>用戶名不能為空!</message></field-validator></field></validators><field>指定action中要校驗(yàn)的屬性,<field-validator>指定校驗(yàn)器,上面指定的校驗(yàn)器requiredstring是由系統(tǒng)提供的,系統(tǒng)提供了能滿足大部分驗(yàn)證需求的校驗(yàn)器,這些校驗(yàn)器的定義可以在xwork-2.x.jar中的com.opensymphony.xwork2.validator.validators下的default.xml中找到。<message>為校驗(yàn)失敗后的提示信息,如果需要國際化,可以為message指定key屬性,key的值為資源文件中的key。在這個(gè)校驗(yàn)文件中,對action中字符串類型的username屬性進(jìn)行驗(yàn)證,首先要求調(diào)用trim()方法去掉空格,然后判斷用戶名是否為空。

Struts2提供的校驗(yàn)器列表系統(tǒng)提供的校驗(yàn)器如下:required(必填校驗(yàn)器,要求field的值不能為null)requiredstring(必填字符串校驗(yàn)器,要求field的值不能為null,并且長度大于0,默認(rèn)情況下會對字符串去前后空格)stringlength(字符串長度校驗(yàn)器,要求field的值必須在指定的范圍內(nèi),否則校驗(yàn)失敗,minLength參數(shù)指定最小長度,maxLength參數(shù)指定最大長度,trim參數(shù)指定校驗(yàn)field之前是否去除字符串前后的空格)regex(正則表達(dá)式校驗(yàn)器,檢查被校驗(yàn)的field是否匹配一個(gè)正則表達(dá)式.expression參數(shù)指定正則表達(dá)式,caseSensitive參數(shù)指定進(jìn)行正則表達(dá)式匹配時(shí),是否區(qū)分大小寫,默認(rèn)值為true)int(整數(shù)校驗(yàn)器,要求field的整數(shù)值必須在指定范圍內(nèi),min指定最小值,max指定最大值)double(雙精度浮點(diǎn)數(shù)校驗(yàn)器,要求field的雙精度浮點(diǎn)數(shù)必須在指定范圍內(nèi),min指定最小值,max指定最大值)fieldexpression(字段OGNL表達(dá)式校驗(yàn)器,要求field滿足一個(gè)ognl表達(dá)式,expression參數(shù)指定ognl表達(dá)式,該邏輯表達(dá)式基于ValueStack進(jìn)行求值,返回true時(shí)校驗(yàn)通過,否則不通過)email(郵件地址校驗(yàn)器,要求如果field的值非空,則必須是合法的郵件地址)url(網(wǎng)址校驗(yàn)器,要求如果field的值非空,則必須是合法的url地址)date(日期校驗(yàn)器,要求field的日期值必須在指定范圍內(nèi),min指定最小值,max指定最大值)conversion(轉(zhuǎn)換校驗(yàn)器,指定在類型轉(zhuǎn)換失敗時(shí),提示的錯(cuò)誤信息)visitor(用于校驗(yàn)action中的復(fù)合屬性,它指定一個(gè)校驗(yàn)文件用于校驗(yàn)復(fù)合屬性中的屬性)expression(OGNL表達(dá)式校驗(yàn)器,expression參數(shù)指定ognl表達(dá)式,該邏輯表達(dá)式基于ValueStack進(jìn)行求值,返回true時(shí)校驗(yàn)通過,否則不通過,該校驗(yàn)器不可用在字段校驗(yàn)器風(fēng)格的配置中)

校驗(yàn)器的使用例子required必填校驗(yàn)器<field-validatortype="required"><message>性別不能為空!</message></field-validator>requiredstring必填字符串校驗(yàn)器<field-validatortype="requiredstring"><paramname="trim">true</param><message>用戶名不能為空!</message></field-validator>stringlength:字符串長度校驗(yàn)器<field-validatortype="stringlength"> <paramname="maxLength">10</param> <paramname="minLength">2</param> <paramname="trim">true</param> <message><![CDATA[產(chǎn)品名稱應(yīng)在2-10個(gè)字符之間]]></message></field-validator>

校驗(yàn)器的使用例子email:郵件地址校驗(yàn)器<field-validatortype="email"> <message>電子郵件地址無效</message></field-validator>regex:正則表達(dá)式校驗(yàn)器<field-validatortype="regex"><paramname="regex">^1[358]\d{9}$</param><message>手機(jī)號格式不正確!</message></field-validator>

校驗(yàn)器的使用例子int:整數(shù)校驗(yàn)器<field-validatortype="int"> <paramname="min">1</param> <paramname="max">150</param> <message>年齡必須在1-150之間</message></field-validator>字段OGNL表達(dá)式校驗(yàn)器<fieldname="imagefile"> <field-validatortype="fieldexpression"> <paramn

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論