手工代碼校驗請求參數,XML配置方式數據校驗(企業主流校驗)

三、 手工校驗 (代碼校驗)
 步驟一: 封裝數據
 步驟二: 實現校驗Action ,必須繼承ActionSupport 類
 步驟三: 覆蓋validate方法,完成對Action的業務方法 數據校驗
  經過代碼邏輯判斷參數是否有效,若是參數非法 , this.addFieldError (ActionSupport提供)
  workflow攔截器 跳轉回 input頁面
 步驟四: 在jsp中 經過 <s:fieldError/> 顯示錯誤信息正則表達式

* validate方法會對Action中全部業務方法進行校驗,若是隻想校驗某一個方法  : validate方法名()express

四、 XML配置方式 數據校驗 (企業主流校驗)
 代碼校驗 不適用於 大型項目, 流程數據複雜時,開發量和維護量 都會很大apache

xml配置校驗原理 : 將不少校驗規則代碼已經寫好,只須要在xml中定義數據所使用校驗規則就能夠了網絡

 步驟一 :編寫jsp
 步驟二 :編寫Action 繼承ActionSupport 或者 實現 Validateable 接口
 步驟三 :封裝請求參數
   * 使用xml校驗 必須提供get方法
 步驟四 :編寫校驗規則xml文件
  在Action所在包 編寫 Action類名-validation.xml 對Action全部業務方法進行校驗
 引入DTD
  ------ xwork-core-2.3.7.jar 中 xwork-validator-1.0.3.dtd
  <!DOCTYPE validators PUBLIC
    "-//Apache Struts//XWork Validator 1.0.3//EN"
    "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
 內置校驗器定義文件
  xwork-core-2.3.7.jar 中 /com/opensymphony/xwork2/validator/validators/default.xmljsp

內建校驗器
* required (必填校驗器,要求被校驗的屬性值不能爲null)
* requiredstring (必填字符串校驗器,要求被校驗的屬性值不能爲null,而且長度大於0,默認狀況下會對字符串去先後空格)
* stringlength (字符串長度校驗器,要求被校驗的屬性值必須在指定的範圍內,不然校驗失敗,minLength參數指定最小長度,maxLength參數指定最大長度,trim參數指定校驗field以前是否去除字符串先後的空格)
* regex (正則表達式校驗器,檢查被校驗的屬性值是否匹配一個正則表達式,expression參數指定正則表達式,caseSensitive參數指定進行正則表達式匹配時,是否區分大小寫,默認值爲true)
* int(整數校驗器,要求field的整數值必須在指定範圍內,min指定最小值,max指定最大值)
* double(雙精度浮點數校驗器,要求field的雙精度浮點數必須在指定範圍內,min指定最小值,max指定最大值)
* fieldexpression (字段OGNL表達式校驗器,要求field知足一個ognl表達式,expression參數指定ognl表達式,該邏輯表達式基於ValueStack進行求值,返回true時校驗經過,不然不經過)
* email(郵件地址校驗器,要求若是被校驗的屬性值非空,則必須是合法的郵件地址)
* url(網址校驗器,要求若是被校驗的屬性值非空,則必須是合法的url地址)
* date(日期校驗器,要求field的日期值必須在指定範圍內,min指定最小值,max指定最大值)
  
案例
required  必填校驗器
<field-validator type="required">
       <message>性別不能爲空!</message>
</field-validator>ui

requiredstring  必填字符串校驗器
<field-validator type="requiredstring">
       <param name="trim">true</param>
       <message>用戶名不能爲空!</message>
</field-validator>this

stringlength:字符串長度校驗器
<field-validator type="stringlength">
 <param name="maxLength">10</param>
 <param name="minLength">2</param>
 <param name="trim">true</param>
 <message><![CDATA[產品名稱應在2-10個字符之間]]></message>
</field-validator>url

int:整數校驗器
<field-validator type="int">
 <param name="min">1</param>
 <param name="max">150</param>
 <message>年齡必須在1-150之間</message>
</field-validator>xml

date: 日期校驗器
<field-validator type="date">
 <param name="min">1900-01-01</param>
 <param name="max">2050-02-21</param>
 <message>生日必須在${min}到${max}之間</message>
</field-validator>繼承

url:  網絡路徑校驗器
<field-validator type="url">
 <message>傳智播客的主頁地址必須是一個有效網址</message>
</field-validator>

email:郵件地址校驗器
<field-validator type="email">
 <message>電子郵件地址無效</message>
</field-validator>

regex:正則表達式校驗器
<field-validator type="regex">
     <param name="expression"><![CDATA[^13\d{9}$]]></param>
     <message>手機號格式不正確!</message>
</field-validator>

fieldexpression : 字段表達式校驗
<field-validator type="fieldexpression">
       <param name="expression"><![CDATA[(password==repassword)]]></param>
       <message>兩次密碼輸入不一致</message>
</field-validator>

============================= 如何對指定的方法校驗 ??? 格式  Action類名-ActionName(<action>元素name屬性)-validation.xml
 例如 : 校驗AddCustomerAction中execute方法  配置 <action name="addcustomer" .../> 校驗文件名字: AddCusotmerAction-addcustomer-validation.xml

五、 自定義校驗規則 (瞭解 )
   步驟一: 自定義校驗器 必須實現 Validator  接口
  一般自定義校驗器 繼承 ValidatorSupport 和 FieldValidatorSupport 
  * ValidatorSupport 針對不是一個輸入字段 (兩個密碼一致)
  * FieldValidatorSupport 針對是一個輸入字段  (用戶名非空)
 步驟二: 註冊校驗器
  在工程的src下新建validators.xml文件
  引入 xwork-core-2.3.7.jar 中 xwork-validator-config-1.0.dtd 
 步驟三 :使用校驗器
  在Action全部包 建立Action類名-validation.xml

**** 實際開發中不多用到自定義校驗器

相關文章
相關標籤/搜索