1. 程式人生 > >SpringMVC數據校驗

SpringMVC數據校驗

相關 業務 思路 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     private
String 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數據校驗