7.SpringMVC 中的數據校驗

昨天給大家分享了SpringMVC中的參數綁定,今天老師跟大家總結一下SpringMVC中的數據校驗。

在實際中,通常使用較多是前端的校驗,比如頁面中js校驗,對於安全要求較高的建議在服務端也要進行校驗。服務端校驗可以是在控制層conroller,也可以是在業務層service,controller校驗頁面請求的參數的合法性,在服務端控制層conroller的校驗,不區分客戶端類型(瀏覽器、手機客戶端、遠程調用);service層主要校驗關鍵業務參數,僅限於service接口中使用的參數。這裏主要總結一下何如使用springmvc中controller的校驗。

1. 配置校驗器

在springmvc.xml配置文件中配置一下校驗器,如下:
在這裏插入圖片描述
配置規則就是bean和property屬性,別把class和文件名寫錯了就行,這裏有個配置是資源文件名,這個文件中我們將會配置一些錯誤信息。配置好了校驗器後,需要將校驗器注入到處理器適配器中,還是在springmvc.xml文件中,將我們配好的validator注入進去,如下:
在這裏插入圖片描述

2. 在POJO中校驗

hibernate校驗框架提供了很多註解校驗,我先簡單羅列一下:
在這裏插入圖片描述
上面我簡單羅列了一些校驗的註解,不同的註解的具體使用方法可以參考官方文檔或者網上資料,這裏我選擇兩個註解來說明如何使用這個hibernate驗證框架。首先在自己的pojo中需要驗證的屬性上添加相應的驗證註解。
在這裏插入圖片描述
我們看到註解中可以指定message,那麼這個message中的內容是錯誤消息配置文件中對應的key,取出來的就是對應的錯誤消息,所以針對這兩個錯誤消息,我們寫一下配置文件。
在這裏插入圖片描述

3. 捕獲校驗錯誤信息

上面已經將校驗相關的配置都配好了,接下來就需要在controller的方法中捕獲校驗結果中的錯誤信息,然後將這些錯誤信息傳到前臺去顯示。那麼controller的方法中該如何去捕獲呢?如下:
在這裏插入圖片描述
可以看出,在需要校驗的pojo前邊添加@Validated,在需要校驗的pojo後邊添加BindingResult bindingResult來接收校驗出錯信息。值得注意的是:@Validated和BindingResult bindingResult是配對出現,並且形參順序是固定的(一前一後)。這樣就可以順利接收到錯誤信息了。關於前臺的東西,我就不寫了。

4. 分組校驗

上面已經能完成springmvc的校驗功能了,但是有個問題:剛剛是在pojo中定義了校驗規則,但是pojo是被多個controller使用的,現在假如兩個不同的controller使用的校驗規則是不一樣的,簡單來說,一個controller不需要去校驗生產日期,只要校驗一下商品名稱即可,另一個controller兩個都要校驗,這樣就沒法做了,因爲兩個controller都使用同一個pojo。

爲了解決這個問題,我們可以定義多個校驗分組(其實是一個java接口),分組中定義有哪些規則,每個controller方法使用不同的校驗分組即可。看一下下面的例子就明白了。首先定義一個校驗分組:
在這裏插入圖片描述
然後我們在剛剛的pojo中,添加這個分組,如下:
在這裏插入圖片描述
再看一下想要校驗這個name字段的controller中是如何配置的:
在這裏插入圖片描述
這樣該controller就不會去校驗生產日期的字段了,通過這種方式可以解決不同的controller校驗不同字段的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章