三、 手工校驗 (代碼校驗)
步驟一: 封裝數據
步驟二: 實現校驗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
**** 實際開發中不多用到自定義校驗器