麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Struts源代碼閱讀(Commons-Validator)

2019-11-18 12:54:54
字體:
來源:轉載
供稿:網友

  Commons-Validator(一)
  
  Commons-Validator包用來把驗證規則程序提取出來,以供重復使用。這個包可以使用在Struts中,也可以獨立的應用在任何其它的應用中。用戶可以通過java類的方式自定義驗證方法,也可以在配置文件中通過正則表達式配置驗證方法。它不但支持服務器端的驗證,客戶端的驗證也支持,具體需要使用tag把相應的js方法寫入相應的頁面中。
  
  一、綜述:
  
  整個Validator框架可以有若干個FormSet,而每個FormSet又可以有若干個Form,每個Form中可以有若干個Field。FormSet的PRocess(...)方法,逐個調用其中的Form的process(...)方法,而Form的process(...)方法又是逐個調用Field的process(...)方法。Validator類作為驗證的起始點,調用與其一一對應的Form的validate(...)方法,而Form的validate(...)方法又是逐個調用其中Field的validate(...)方法實現的。
  
  二、配置文件說明:
  
  <form-validation>
  <global>
  <constant>
  <constant-name>驗證方法的標志名</constant-name>
  <constant-value>正則表達式</constant-value>
  </constant>
  <validator name="這個驗證方法的標志名,供下面的depends調用"
  classname="這個驗證方法在哪個類中,為類全名"
  method="驗證方法的名稱"
  methodParams="這個驗證方法需要的參數類型,依次以逗號格開,為類全名"
  depends="基于什么驗證之上,可以為多個值,以逗號格開,值為方法的標志名"
  jsFunction="js的方法全名,格式為文件路徑.方法名。文件路徑以點隔開,
  假如不填,默認為org.apache.commons.validator.javascr  msg="對應于properties文件中的一條,作為不通過驗證時返回的信息"/>
  </global>
  <formset language="語言" country="城市" variant="方言?">
  <constant>
  <constant-name>驗證方法的標志名</constant-name>
  <constant-value>正則表達式</constant-value>
  </constant>
  <form name="bean 對象名稱">
  <field property="bean中的屬性名" depends="需要什么樣的驗證,可以為多個值,以逗號格開,值為方法的標志名">
  <arg name = "變量名" key = "properties文件的key,或者來自Var的name" resource = "是/否來自資源文件"/>
  <var>
  <var-name>變量名</var-name>
  <var-value>變量值</var-value>
  </var>
  </field>
  </form>
  </formset>
  </form-validation>
  
  Commons-Validator(二)
  
  在Validator的配置文件中,一共有如下幾個基本元素。
  
  一、org.apache.commons.validator.Var
  
  它的作用是為配置文件(validator.
xml)中的其它標簽提供可取用的變量,為Field提供執行驗證所需要的其它參數值,比如最大長度。這個類有如下屬性:name,變量的名稱;value,變量的值;jsType,當要自動生成js的時候,js的類型。
  
  二、org.apache.commons.validator.Arg
  
  它的作用是替換信息中的某一部分,或者為驗證方法提供必需的參數值。這個類有如下屬性:bundle,資源文件名,用來存放所需要的信息。key,表示Arg的key或者value。name,表示Arg的名稱。position,這個Arg中的值用來替換信息中的哪一部分,需要替換的部分以{n}標志。resource:key所指定的信息是否來自外部的資源文件,默認為true;假如為true,則代表key為buddle屬性所指定的資源文件中的key。
  
  三、org.apache.commons.validator.Msg
  
  它的作用是在驗證不通過時,應該返回什么的信息。這個類有如下屬性:bundle,資源文件名,用來存放所需要的信息。key,表示Msg的key或者value。name,表示Msg的名稱。resource:key所指定的信息是否來自外部的資源文件,默認為true;假如為true,則代表key為buddle屬性所指定的資源文件中的key。
  
  四、org.apache.commons.validator.FormSet
  
  這個類治理通過一個Map所有要檢驗的Form對象,key為Form的name;同時通過一個Map治理在<formset/>中定義的Constant,key為<constant-name>。同時其內部有language,country, variant這幾個屬性,用來實現國際化。一個配置文件可以有多個FormSet,這些FormSet的區別是要求不同的本地化。
  
  五、org.apache.commons.validator.Form
  
  這個類有如下屬性:name,這個form的名稱。lFields,一個保存所有Field的List。hFields,一個保存所有Field的FastHashMap,這個FastHashMap的key值是對應Field的key屬性(對應配置文件中的property)。這個類通過validate(...)方法用來對這個Form中的所有位置低于page的Field進行驗證。它實際是在一個循環中逐個調用每個field的validate(...)方法,然后把結果保存在一個ValidatorResults對象中。
  
  六、org.apache.commons.validator.Field
  
  這個類有如下屬性:depends,依靠于什么驗證規則。dependencyList保存了以逗號為分隔符把depends分割生成的list。page,假如是多步提交的話當前是第幾步,值等于或小于表單中page性質的值,JavaBean 才會得到處理;args,是一個數組;這個數組的元素為HashMap,每個HashMap在數組的位置就是其中的Arg中的position屬性的值;HashMap中的key值為Arg的name,假如這個name為null則為默認的值:DEFAULT_ARG(org.apache.commons.validator.Field.DEFAULT),value為Arg對象。hVars,是一個FastHashMap,用來治理所有的Var對象,key為Var的name,值為Var對象。getIndexedListProperty表明這個property為JavaBean中的一個數組元素的index。
  
  1、process(Map globalConstants, Map constants)
  
  這個方法用來執行配置文件中變量的替換。它的兩個參數分別為在<global/>和<formset/>中定義的constant。在這個Map中,key為<constant/>標簽中的constant-name,value為<constant-value>。在配置文件中,可以實現如下的變量使用方式:Form的property屬性,Var中的value屬性,Arg中的key屬性,Msg的key屬性,他們均可以通過{constant-name}的方式,引用在<global/>或者<formset/>標簽中定義的constant。Arg中的key屬性,可以通過{Var:var-name}的方式引用在<var/>中定義的Var。
  
  FormSet中的process(...)方法依次調用其中的Form的process(...)方法,而Form的process(...)方法又依次調用其中的Field的process(...)方法。
  
  2、validate(Map params, Map actions)
  
  執行驗證,其中actions保存了所有的ValidatorAction對象。它首先會從params取出key為Validator.BEAN_PARAM(java.lang.Object)的值作為要驗證的JavaBean。然后通過generateKey()方法判定當前要驗證的Field是否是IndexedList。假如是,則需要分別對這個List中的各個元素進行驗證;否則直接執行對與JavaBean的特定屬性(property)執行驗證。
  
  3、validateForRule(...)
  
  接受要執行的ValidatorAction對象的同時,還是會接受Map actions參數,這是因為這個要執行的ValidatorAction可能會依靠于其它的ValidatorAction。它會先查找以前的驗證結果,假如以前沒有執行過這個驗證,那么執行runDependentValidators(...)方法,執行它所依靠于的ValidatorAction;假如通過,那么再對要執行的ValidatorAction,執行驗證。
  
  Commons-Validator(三)
  
  在Validator包中提供了一些Util類,同時提供了對基本數據類型,時間,E-mail,信用卡等格式的驗證方法。
  
  一、org.apache.commons.validator.util.Flags
  
  這個類用來治理一系列的Flag,其中的每個Flag的值都是2的N次方。然后每個Flag之間位與(&)就得到了整個Flags的值。
  
  二、org.apache.commons.validator.util.ValidatorUtils
  
  這個類為Validator提供一些Utility的操作,共有三個方法。
  
  1、replace(...)
  
  這個方法用來將一個字符串中某個特性的字符串替換為另一個字符串,注重這是一個全局替換方法。
  
  2、getValueAsString(...)
  
  這個方法用來獲取某個Bean中的一個特定的屬性,然后把屬性值轉換為字符串返回。注重,String[]和Collection類型的值,假如里面不包含任何值,則直接返回""。
  
  3、copyFastHashMap(...)
  
  很顯然的是對一個特定的FashHashMap執行copy。這里要注重的是,假如value為Msg,Arg,Var類型的時候需要執行clone,然后再保存。
  
  三、org.apache.commons.validator.ValidatorUtil
  
  這個類完全通過調用上面的ValidatorUtils方法,實現自己的同名方法。只是多了一個getDelimitedRegEXP(...)方法,用來生成一個正則表達式。
  
  四、org.apache.commons.validator.DateValidator
  
  實現了單例模式。這個類用來檢查日期類型是否合法,日期的類型要通過參數傳遞給這個Validator。同時還有一個strict屬性,表示時候檢查過渡匹配所要求的日期格式。這個日期檢查就是通過formatter.parse(value)方法檢查時候有異常拋出。
  
  五、org.apache.commons.validator.EmailValidator
  
  實現了單例模式。這個類用來檢查Email類型是否合法。它通過正則表達式實現驗證。
  
  六、org.apache.commons.validator.GenericTyp

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: av在线免费播放 | 91丝袜| av在线试看 | 日本成人一区二区三区 | 欧美成人二区 | 欧美色爱综合 | 麻豆国产网站 | 麻豆传传媒久久久爱 | 国产成人高清成人av片在线看 | 黄色视屏免费在线观看 | 中文字幕在线免费观看电影 | 日韩毛片在线看 | 手机免费看一级片 | 黄色日韩网站 | 久久亚洲综合色 | 久久密 | 国产精品热 | 国产精品成人亚洲一区二区 | 午夜国产在线 | 久久精品4 | 一级尻逼视频 | 久久综合久久综合久久 | 久久av免费观看 | 欧美成人精品一区 | 欧美亚洲国产日韩 | japanese javhd| 依依成人综合 | 久久久一区二区精品 | 天天色狠狠干 | 色999久久久精品人人澡69 | 777zyz色资源站在线观看 | 亚洲伊人色欲综合网 | 久久999精品久久久 国产噜噜噜噜久久久久久久久 | 久久久婷婷 | 日本最新免费二区三区 | 欧美中文字幕一区二区三区亚洲 | 中国洗澡偷拍在线播放 | 国产羞羞网站 | 亚洲精久久| 欧美 国产 亚洲 卡通 综合 | 日本看片一区二区三区高清 |