




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
學習目標了解數據校驗的主要原理理解數據校驗的組成部分掌握數據校驗的使用概述表單是應用程序最簡單的入口,對其傳進來的數據,我們必須進行校驗。轉換是校驗的基礎,只有在數據被正確地轉換成其對應的類型后,才可以對其取值范圍進行校驗。在Struts2中,我們可以實現對action的所有方法進行校驗或者對action的指定方法進行校驗。對于輸入校驗Struts2提供了兩種實現方法:采用手工編寫代碼實現?;赬ML配置方式實現采用手工編寫代碼實現根據例子,逐步體會采用手工編寫代碼實現校驗流程與其重要性。首先,從action開始
publicvoidvalidate(){ if(this.mobile==null||"".equals(this.mobile.trim())){ this.addFieldError("mobile","手機號不能為空"); }else{ if(!Ppile("^1[358]\\d{9}").matcher(this.mobile.trim()) .matches()){ this.addFieldError("mobile","手機號的格式不正確"); } } if(this.username==null||this.username.equals("")){ this.addFieldError("username","用戶名不能為空"); } }實例介紹xml的具體配置<actionname="user_*"class="com.xtgj.struts2.chapter05.user.UserAction"method="{1}"> <resultname="success">success.jsp</result> <resultname="input">register.jsp</result></action>實例介紹用戶注冊頁面register.jsp實例介紹若未輸入信息就點擊了提交按鈕實例介紹輸入不合法的手機號實例介紹對action指定方法輸入校驗publicvoidcheckmethod(){ if(this.mobile==null||"".equals(this.mobile.trim())){ this.addFieldError("mobile","手機號不能為空"); }else{ if(!Ppile("^1[358]\\d{9}").matcher(this.mobile.trim()) .matches()){ this.addFieldError("mobile","手機號的格式不正確"); } } if(this.username==null||this.username.equals("")){ this.addFieldError("username","用戶名不能為空"); }}publicvoidvalidateRegist(){ checkmethod();}publicvoidvalidateUpdate(){ checkmethod();}數據校驗工作方式輸入校驗在Struts2中,我們可以實現對action的所有方法進行校驗或者對action的指定方法進行校驗。對于輸入校驗Struts2提供了兩種實現方法: 1.采用手工編寫代碼實現。
2.基于XML配置方式實現。輸入校驗的流程類型轉換器對請求參數執行類型轉換,并把轉換后的值賦給action中的屬性如果在執行類型轉換的過程中出現異常,系統會將異常信息保存到ActionContext,conversionError攔截器將異常信息添加到fieldErrors里。不管類型轉換是否出現異常,都會進入第3步系統通過反射技術先調用action中的validateXxx()方法,Xxx為方法名再調用action中的validate()方法經過上面4步,如果系統中的fieldErrors存在錯誤信息(即存放錯誤信息的集合的size大于0),系統自動將請求轉發至名稱為input的視圖。如果系統中的fieldErrors沒有任何錯誤信息,系統將執行action中的處理方法輸入校驗使用基于XML配置方式實現輸入校驗時,action也需要繼承ActionSupport,并且提供校驗文件,校驗文件和action類放在同一個包下,文件的取名格式為:ActionClassName-validation.xml,其中ActionClassName為action的簡單類名,-validation為固定寫法。如果Action類為com.xtgj.UserAction,那么該文件的取名應為:UserAction-validation.xml。下面是校驗文件的模版:<?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中要校驗的屬性,<field-validator>指定校驗器,上面指定的校驗器requiredstring是由系統提供的,系統提供了能滿足大部分驗證需求的校驗器,這些校驗器的定義可以在xwork-2.x.jar中的com.opensymphony.xwork2.validator.validators下的default.xml中找到。<message>為校驗失敗后的提示信息,如果需要國際化,可以為message指定key屬性,key的值為資源文件中的key。在這個校驗文件中,對action中字符串類型的username屬性進行驗證,首先要求調用trim()方法去掉空格,然后判斷用戶名是否為空。Struts2提供的校驗器列表系統提供的校驗器如下:required(必填校驗器,要求field的值不能為null)requiredstring(必填字符串校驗器,要求field的值不能為null,并且長度大于0,默認情況下會對字符串去前后空格)stringlength(字符串長度校驗器,要求field的值必須在指定的范圍內,否則校驗失敗,minLength參數指定最小長度,maxLength參數指定最大長度,trim參數指定校驗field之前是否去除字符串前后的空格)regex(正則表達式校驗器,檢查被校驗的field是否匹配一個正則表達式.expression參數指定正則表達式,caseSensitive參數指定進行正則表達式匹配時,是否區分大小寫,默認值為true)int(整數校驗器,要求field的整數值必須在指定范圍內,min指定最小值,max指定最大值)double(雙精度浮點數校驗器,要求field的雙精度浮點數必須在指定范圍內,min指定最小值,max指定最大值)fieldexpression(字段OGNL表達式校驗器,要求field滿足一個ognl表達式,expression參數指定ognl表達式,該邏輯表達式基于ValueStack進行求值,返回true時校驗通過,否則不通過)email(郵件地址校驗器,要求如果field的值非空,則必須是合法的郵件地址)url(網址校驗器,要求如果field的值非空,則必須是合法的url地址)date(日期校驗器,要求field的日期值必須在指定范圍內,min指定最小值,max指定最大值)conversion(轉換校驗器,指定在類型轉換失敗時,提示的錯誤信息)visitor(用于校驗action中的復合屬性,它指定一個校驗文件用于校驗復合屬性中的屬性)expression(OGNL表達式校驗器,expression參數指定ognl表達式,該邏輯表達式基于ValueStack進行求值,返回true時校驗通過,否則不通過,該校驗器不可用在字段校驗器風格的配置中)校驗器的使用例子required必填校驗器<field-validatortype="required"><message>性別不能為空!</message></field-validator>requiredstring必填字符串校驗器<field-validatortype="requiredstring"><paramname="trim">true</param><message>用戶名不能為空!</message></field-validator>stringlength:字符串長度校驗器<field-validatortype="stringlength"> <paramname="maxLength">10</param> <paramname="minLength">2</param> <paramname="trim">true</param> <message><![CDATA[產品名稱應在2-10個字符之間]]></message></field-validator>校驗器的使用例子email:郵件地址校驗器<field-validatortype="email"> <message>電子郵件地址無效</message></field-validator>regex:正則表達式校驗器<field-validatortype="regex"><paramname="expression"><![CDATA[^1[358]\d{9}$]]></param><message>手機號格式不正確!</message></field-validator>校驗器的使用例子int:整數校驗器<field-validatortype="int"> <paramname="min">1</param> <paramname="max">150</param> <message>年齡必須在1-150之間</message></field-validator>字段OGNL表達式校驗器<fieldname="imagefile"> <field-validatortype="fieldexpression"> <param
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 共享出行在公共交通中的運用-全面剖析
- 幾千幾百數加減整百數水平練習試題
- 復合材料界面調控技術-全面剖析
- 互動媒體交互設計-全面剖析
- 因數中間或末尾有零的乘法綜合自測試題
- 三年級數學兩位數乘兩位數筆算題同步練習口算題大全附答案
- 智能化醫療器械設計-全面剖析
- 高壓系統施工方案
- 私域流量知識
- 舞蹈教學視頻AI分析系統企業制定與實施新質生產力戰略研究報告
- 腎內科血透室品管圈
- 小學勞動教育一年級下冊第二單元第3課《削果皮》課件
- 擔任學生干部證明
- 學校消防宣傳周活動方案食品安全宣傳周方案
- 婦產科醫生個人職業發展路徑計劃
- 裝修工程合同范本(中英文版)
- 成人住院患者靜脈血栓栓塞癥預防護理
- 導游知識與技能訓練智慧樹知到期末考試答案章節答案2024年麗江文化旅游學院
- 無小孩無共同財產離婚協議書
- 企業多元化與包容性政策
- 專題22 【五年中考+一年模擬】 幾何壓軸題-備戰2023年溫州中考數學真題模擬題分類匯編(原卷版)
評論
0/150
提交評論