搜尋
首頁Javajava教程在Struts中使用Validator框架


  每個應用程式都有責任確保它們插入到後台資料庫的資料是合法有效的,究竟,假如這些應用程式所依賴的資料一旦遭到了破壞,那將是災難性的,那應用程式還能拿什麼來使自己正常運作呢?比如說,使用正規關係資料庫的一個應用程序,資料庫中的每個欄位都有自己一定的規則和約束,來保證儲存在其中的資料在一定程度上的正確性。任何要使用後台資料庫資料的應用程式都有責任保護它們提交的資料的完整性。
  
  任何試圖插入或更新不符合標準的資料的操作都有可能被發現並拒絕。這種檢測可能遍布在整個應用程式的每個角落,在表現層可能進行一些驗證,在業務邏輯層,商業邏輯物件一般也有商業邏輯的驗證,還有在後台資料庫也要對資料進行檢查。
  
  不幸的是,由於這種驗證在應用程式中無處不在,造成了應用程式在一定程度上的驗證資料的程式碼冗餘。這並不是應用程式所希望的,因為這種在多處的重複勞動,使得應用程式的部署和維護要花去更多的時間。假如在整個應用程式中,這些驗證規則可以重複使用,將使得應用程式更加富有彈性,換句話說就是,部署更快捷,自訂更輕易,程式更靈活。
  
  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
如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?Mar 17, 2025 pm 05:46 PM

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?Mar 17, 2025 pm 05:44 PM

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?Mar 17, 2025 pm 05:43 PM

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Mar 17, 2025 pm 05:35 PM

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

如何將Java的RMI(遠程方法調用)用於分佈式計算?如何將Java的RMI(遠程方法調用)用於分佈式計算?Mar 11, 2025 pm 05:53 PM

本文解釋了用於構建分佈式應用程序的Java的遠程方法調用(RMI)。 它詳細介紹了接口定義,實現,註冊表設置和客戶端調用,以解決網絡問題和安全性等挑戰。

如何使用Java的插座API進行網絡通信?如何使用Java的插座API進行網絡通信?Mar 11, 2025 pm 05:53 PM

本文詳細介紹了用於網絡通信的Java的套接字API,涵蓋了客戶服務器設置,數據處理和關鍵考慮因素,例如資源管理,錯誤處理和安全性。 它還探索了性能優化技術,我

如何在Java中創建自定義網絡協議?如何在Java中創建自定義網絡協議?Mar 11, 2025 pm 05:52 PM

本文詳細介紹了創建自定義Java網絡協議。 它涵蓋協議定義(數據結構,框架,錯誤處理,版本控制),實現(使用插座),數據序列化和最佳實踐(效率,安全性,維護

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!