1. Hibernate Validator介紹
1.1 背景
在任何時候,當你要處理一個應用程式的商業邏輯,資料校驗是你必須要考慮和麵對的事情。應用程式必須透過某種手段來確保輸入進來的資料從語義上來講是正確的。在通常的情況下,應用程式是分層的,不同的層由不同的開發人員來完成。很多時候同樣的資料驗證邏輯會出現在不同的層,這樣就會導致程式碼冗餘和一些管理的問題,比如說語意的一致性等。為了避免這樣的情況發生,最好是將驗證邏輯與對應的領域模型進行綁定。
Bean Validation 為 JavaBean 驗證定義了對應的元資料模型和API。預設的元資料是 Java Annotations,透過使用 XML 可以對原有的元資料資訊進行覆寫和擴展。 Bean Validation 是一個運行時的資料驗證框架,在驗證之後驗證的錯誤訊息會馬上回傳。
Hibernate Validator 是 Bean Validation 的參考實作 . Hibernate Validator 提供了 JSR 303 規範中所有內建 constraint 的實現,除此之外還有一些附加的 constraint。
1.2 Bean Validation 中的constraint
1.3 Hibernate Validator 附加的constraint
##1.4 Hibernate Validator 的優點a) 驗證邏輯與商業邏輯之間進行了分離,並降低了程式耦合度; ##b) 統一且規範的驗證方式,無需你再次寫出重複的驗證程式碼;c) 你將更專注於你的業務,並將這些繁瑣的事情統統丟在一邊。 2. Hibernate Validator實作 2.1 引入相關jar套件maven依賴:< ;dependency>
&1 version>4.2.0 .Final
#這篇文章的demo是基於springmvc的,需要 SpringMvc中設定
#這篇文章的demo是基於springmvc的,需要進行相關配置。
在上圖中我們可以看到我們定義了一個LoginController,該Controller有一個處理validator操作的處理器方法validator,它需要接收客戶端發送的一個User對象,我們就是要利用前面的Validator對該User物件進行校驗。首先我們可以看到我們validator方法接收的參數user是用@Valid進行標註的。另外我們的處理器方法必須給定包含Errors的參數,這可以是Errors本身,也可以是它的子類BindingResult,使用了Errors參數就是告訴Spring關於表單物件資料校驗的錯誤將由我們自己來處理,否則Spring會直接拋出異常。這樣當我們請求處理器方法validator時就會對user物件進行校驗,並把相關的校驗資訊存放到目前的Errors物件中。接著我們就可以在我們的處理器方法中根據是否有校驗異常資訊來做不同的操作。在上面程式碼中我們定義了在有異常訊息的時候就跳到登陸頁面。這樣我們就可以在登陸頁面上透過errors標籤來展示這些錯誤訊息了。
2.7 注意事項
a) 如果驗證的是屬性(getter 方法),那麼必須遵循Java Bean 的命名習慣(JavaBeans 規格);
b) 靜態的欄位與方法不能進行限制驗證;
c) 限制適用於介面與基底類別;
d) 限制註解定義的目標元素可以是欄位、屬性或型別等;
#de) 可以在類別或介面上使用約束驗證,它將對該類別或實作該介面的實例進行狀態驗證;
f) 欄位和屬性都可以使用約束驗證,但無法將相同的約束重複聲明在欄位和相關屬性(欄位的getter 方法)上。
結語:善待身邊每一個人,因為,是他們成就了你的人生。
以上是Hibernate_Validator詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

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

Dreamweaver CS6
視覺化網頁開發工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1
強大的PHP整合開發環境