首頁  >  文章  >  Java  >  在Struts中使用Validator框架

在Struts中使用Validator框架

黄舟
黄舟原創
2016-12-17 10:52:061040瀏覽


  每個應用程式都有責任確保它們插入到後台資料庫的資料是合法有效的,究竟,假如這些應用程式所依賴的資料一旦遭到了破壞,那將是災難性的,那應用程式還能拿什麼來使自己正常運作呢?比如說,使用正規關係資料庫的一個應用程序,資料庫中的每個欄位都有自己一定的規則和約束,來保證儲存在其中的資料在一定程度上的正確性。任何要使用後台資料庫資料的應用程式都有責任保護它們提交的資料的完整性。
  
  任何試圖插入或更新不符合標準的資料的操作都有可能被發現並拒絕。這種檢測可能遍布在整個應用程式的每個角落,在表現層可能進行一些驗證,在業務邏輯層,商業邏輯物件一般也有商業邏輯的驗證,還有在後台資料庫也要對資料進行檢查。
  
  不幸的是,由於這種驗證在應用程式中無處不在,造成了應用程式在一定程度上的驗證資料的程式碼冗餘。這並不是應用程式所希望的,因為這種在多處的重複勞動,使得應用程式的部署和維護要花去更多的時間。假如在整個應用程式中,這些驗證規則可以重複使用,將使得應用程式更加富有彈性,換句話說就是,部署更快捷,自訂更輕易,程式更靈活。
  
  Jakarta Commons 專案Validator框架簡介
  Validator是由David Winterfeldt創建的開源項目,它也是Jakarta Commons的一個子項目。 Commons專案主要是提供一些像Validator這樣的一些可重複使用元件。其他聞名的Commons元件還有如BeanUtils,Digester,Logging框架等。 Validator 1.0版發佈於2002年11月初。
  
  使用Validator的好處
     .使用Validator框架比一般的在應用程式的程式碼中定義驗證規則有優點,如:
  〜〜  〜 表達式耦合的;
     .伺服器端和客戶端的驗證規則可以在同一處定義;
     .配置新驗證規則或修改已有驗證規則變得更加簡單;
  式 表達式。 .可以用於Web應用程式也可用於標準的java應用程式;
     .採用宣告的方法實作而非程式實作;
  除了之外,Validator最大的特徵就是自身支援可插性(pluggability)。在文章的後面
  
  面你將會看到使用Validator框架內建的驗證規則來更好地完成你的工作,而更重要的是,Validator框架答應你自訂驗證程序,並插入到框架中。
  
  Struts和Validator的關係
  應該指出的是Validator框架本身是因Struts框架而建立的。 Validator的創建者David Winterfeldt在使用Struts的過程中發現,在許多ActionForm類別中需要重複使用同一個驗證規則,這造成了大量的程式碼冗餘。於是他決定創建Validator框架來消除這種冗餘,這樣Validator就誕生了。
  
  儘管Validator架構最初是為Struts架構而生,但它還是被設計和構造成了可以獨立於Struts架構而單獨使用。這一個特徵使得你可以在任何的應用程式中使用這個框架,而不必管它是不是Struts架構的。並不會因為你不使用Struts框架而影響Validator架構對你的應用程式作用。事實上,這就是為什麼Validator是Jakarta Commons計畫的一部分而不直接是Struts計畫的一部分。
  
  現在,我們來將這個框架整合應用到像基於Struts架構這樣的Web應用程式上。在文章的最後我們再介紹如何把它應用到其他類型的應用程式中,例如基於EJB的應用程式。
     Validator架構有以下這些元件組成:
     Validators;    jsp自訂標籤;
     Validator Form類別;
  
  什麼是Validators?
  
  什麼是Validators?
  一個Validator,執行一個驗證規則時Validator框架呼叫的一個Java類別。框架根據設定檔中定義的方法簽章來呼叫這個Validaotor類別。一般情況下,每個Validator類別提供一個單獨的驗證規則,然後這些規則可以組合成更複雜的規則集。
  
  著重:有時出於方便,一個Validator類別也可以定義多個驗證規則,而每個規則是一個靜態方法且不包含任何客戶端狀態資訊。
  
  框架提供了14種默認的驗證規則,有時候這些規則也被稱為Validator框架的“基本規則”,這些基本規則如表一:
  名稱           描述
byte,short,integer, 檢定值是否能轉換成對應的基本資料型別
  long,float,double 
  creditCard  『     檢驗輸入是否為合法的信用卡檢定  檢驗輸入域是否為一個合法日期
  email        檢定輸入是否為合法Email位址
  mask        檢驗輸入域是否能成功符合一個正則表達式
  maxLength            檢驗值的長度是否大於等於給定的最小長度
  range        檢驗值的範圍是否在最大值與最小值之間
  required        檢驗輸入域是否為不為空,或不包含空格值的長度是否大於零
  表一
、號框架中看到提供了Web應用程式所需的大多數的驗證規則。你可以使用這些現有的驗證規則來建立自己驗證設定檔。儘管這樣,也正如我們前面提到的,和後面要講到的,你可以根據你的需要隨意的增加更多的Validator。
  
  現在,讓我們來討論如何在一個基於Struts架構的應用程式中配置使用這些基本的Validator。
  使Validator框架具有彈性的原因在於所有的驗證規則和其具體細節都是透過在外部文件中配置聲明實現的。你的應用程式並不必要知道這些具體的驗證規則。這個特徵使得規則集的發生擴展和修改時,你並不用去動你應用程式的原始碼。這一點對你要進行每次的個人化安裝或當需求改變時來說是非常重要的。
  假如你使用Struts1.1的Validator框架,你會用到這樣兩個配置文件,一個叫validator- rules.xml,另一個叫validation.xml;其實你也可以隨意的給他們命名,甚至可以把它們合併成一個XML檔。但是,你還是最好把它們分開,因為它們各有各的用途。
  
  注重:假如你從Jakarta網站上下載Validator,並不包含這兩份文件。只有在包含的Validator框架的Struts的下載中才可以找到這兩個檔案。
  validator-rules.xml檔案
  validator-rules.xml檔案定義應用程式可以使用的Validator。 validator-rules.xml充當模板的作用,定義所有應用程式可能要用到的Validator。
  
  注重:這個xml檔案和我們下面要討論的另一個xml檔案都應該放到類別載入器可以找得到的地方。當我們在網路應用程式中使用Validator框架時,正確的位置應該是在WEB-INF下。 
  validator-rules.xml檔案服從validator- rules_1_1.dtd的治理,validator- rules_1_1.dtd可以在jakarta.apache.org/struts/dtds/validator- rules_1_1.dtd下載到。我們不想花太多的時間放在研究這個文件的具體細節上,我們在這裡只作一些基本的介紹。
  validator-rules.xml檔案中最重要的元素包含在元素中,例如,例一:
  例一:一個簡單的validator-rules.xml檔
   validator 
     name="required"
     classname="org.apache.struts.util.StrutsValidator"
   四  method="validator"
   四  method]
            org.apache.commons.validator.ValidatorAction,
                         。 quest" 
     msg="errors.required"/>
     
           method="validateMinLength"
     methodparams="java.lang.Object, validator.ValidatorAction,
            org.apache.commons.validator.Field,
            org.apache.struts.action.ActionErrors,
       貝pends="required"
       msg="errors.minlength"/>
  
  
 『
  
  應用程式使用的每個Validator對應一個元素。在例一中向大家展示了兩個Validator,一個是請求Validator,另一個是最小長度Validator。 元素支援許多屬性。這些屬性是必要的,用來告知框架這個Validator應當呼叫哪個正確的類別和方法。例如,例一中的請求Validator元素顯示這個Validator會呼叫org.apache.struts.util.StrutsValidator類別的validateRequest()方法。 Validator也可能要依靠另一個Validator,如例一中的最小長度的Validator就是這樣一個例子,它包含一個depends屬性,用它來表示這個Validator將依靠於請求Validator。 msg屬性以一個鍵值指定一個資源綁定,框架將用它來產生正確的錯誤訊息。資源綁定的使用有益於錯誤訊息的本地化。
    元素也支援子元素,答應你指定一個客戶端運行的javascript函數。這樣伺服器端和客戶端驗證可以在同一處指定,這使得應用程式的維護變得簡單。
  
  validation.xml檔案
  Validator框架的第二個設定檔就是這個叫validation.xml的檔案。其實你可以隨意把它命名為你喜歡的任何名字,也 

 以上就是在Struts中使用Validator框架內容,更多相關文章請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn