SpringMVC數據校驗
阿新 • • 發佈:2018-10-05
相關 業務 思路 pre max idt flag decimal 沒有
一、準備
1.1 校驗理解
項目中,通常使用較多的是前端的校驗,比如頁面中js
校驗。對於安全要求較高建議在服務端進行校驗。服務端校驗有:
- 控制層:校驗頁面請求的參數的合法性。在服務端校驗不區分客戶端(pc、手機、遠程調用),其校驗是一致的。
- 業務層(使用較多):主要校驗關鍵的業務參數,僅限於
service
接口中使用的參數。 - 持久層:一般是不校驗的。
1.2 springmvc 校驗
-
springmvc
使用hibernate
的校驗框架validation
(和hibernate
沒有關系)。 -
思路
頁面提交請求的參數,請求到Controller
方法中,使用validation
進行校驗。如果校驗出錯,需要將錯誤信息展示到頁面。 -
具體需求
商品修改,添加校驗(檢驗商品名稱長度,生成日期的非空校驗)如果校驗出錯,在商品修改頁面顯示錯誤信息。
1.3 環境
添加相關校驗包:
hibernate-validator-4.3.0.Final.jar jboss-logging-3.1.0.CR2.jar validation-api-1.0.0.GA.jar
1 @RequestMapping(value = "/login",method = RequestMethod.POST) 2 public String Login(Model model, @Valid User user, Errors errors){3 if (errors.hasErrors()){ 4 return "login"; 5 } 6 System.out.println(user); 7 model.addAttribute(user); 8 return "success"; 9 }
在需要校驗的對象前加上@valid,後面緊跟Errors,用來做校驗的錯誤處理。
1 public class User { 2 @NotNull 3 @Size(min = 3,max = 16) 4 privateString username; 5 @NotNull 6 private String password;
校驗的對象bean
註解 | 含義 |
---|---|
@Null |
被註釋的元素必須為 null |
@NotNull |
被註釋的元素必須不為 null |
@AssertTrue |
被註釋的元素必須為 true |
@AssertFalse |
被註釋的元素必須為false |
@Min(value) |
被註釋的元素必須是一個數字,其值必須大於等於指定的最小值 |
@Max(value) |
被註釋的元素必須是一個數字,其值必須小於等於指定的最大值 |
@DecimalMin(value) |
被註釋的元素必須是一個數字,其值必須大於等於指定的最小值 |
@DecimalMax(value) |
被註釋的元素必須是一個數字,其值必須小於等於指定的最大值 |
@Size(max=, min=) |
被註釋的元素的大小必須在指定的範圍內 |
@Digits (integer,fraction) |
被註釋的元素必須是一個數字,其值必須在可接受的範圍內 |
@Past |
被註釋的元素必須是一個過去的日期 |
@Future |
被註釋的元素必須是一個將來的日期 |
@Pattern(regex=,flag=) |
被註釋的元素必須符合指定的正則表達式 Hibernate Validator 附加的constraint |
@NotBlank(message =) |
驗證字符串非null ,且長度必須大於0 |
@Email |
被註釋的元素必須是電子郵箱地址 |
@Length(min=,max=) |
被註釋的字符串的大小必須在指定的範圍內 |
@NotEmpty |
被註釋的字符串的必須非空 |
@Range(min=,max=,message=) |
被註釋的元素必須在合適的範圍內 |
SpringMVC數據校驗