1. 程式人生 > >Spring Boot筆記八:表單驗證

Spring Boot筆記八:表單驗證

ast override con body def 返回 table 正則 system

所謂的表單驗證,就是為了防止用戶亂輸入的,這個問題前端的HTML5就可以判斷了,其實不需要後端來驗證,這裏還是講一下後端驗證

首先,我們的Person類,我們加上一些表單驗證的註釋,如下:

package com.vae.springboot.study.bean;


import org.springframework.stereotype.Component;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.List;
import java.util.Map;


@Component
public class Person {

    @NotBlank(message = "名字必須輸入")
    private String name;
    @Min(value = 32,message = "年齡必須大於32歲")
    private Integer age;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

  

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

這就是一個簡單的Java Bean類,我們寫了幾個表單驗證的註解,關於註解,我大概列一下

說明 限制
@Null 限制只能為null
@NotNull 限制必須不為null
@AssertFalse 限制必須為false
@AssertTrue 限制必須為true
@DecimalMax(value) 限制必須為一個不大於指定值的數字
@DecimalMin(value) 限制必須為一個不小於指定值的數字
@Digits(integer,fraction) 限制必須為一個小數,且整數部分的位數不能超過integer,小數部分的位數不能超過fraction
@Future 限制必須是一個將來的日期
@Max(value) 限制必須為一個不大於指定值的數字
@Min(value) 限制必須為一個不小於指定值的數字
@Past 限制必須是一個過去的日期
@Pattern(value) 限制必須符合指定的正則表達式
@Size(max,min) 限制字符長度必須在min到max之間
@Past 驗證註解的元素值(日期類型)比當前時間早
@NotEmpty 驗證註解的元素值不為null且不為空(字符串長度不為0、集合大小不為0)
@NotBlank 驗證註解的元素值不為空(不為null、去除首位空格後長度為0),不同於@NotEmpty,@NotBlank只應用於字符串且在比較時會去除字符串的空格
@Email 驗證註解的元素值是Email,也可以通過正則表達式和flag指定自定義的email格式

然後我們去Controller裏面去寫個方法:

@PostMapping("/test")
    public String test(@Valid Person person, BindingResult bindingResult){
        if (bindingResult.hasErrors()) {
            System.out.println(bindingResult.getFieldError().getDefaultMessage());
            return null;
        }
        person.setName(person.getName());
        person.setAge(person.getAge());
        return "Vae";
    }

這裏需要介紹的有兩點

第一個是@RequestMapping 和 @GetMapping @PostMapping 區別

  • @GetMapping是一個組合註解,是@RequestMapping(method = RequestMethod.GET)的縮寫。

  • @PostMapping是一個組合註解,是@RequestMapping(method = RequestMethod.POST)的縮寫。

所以我這裏使用什麽都可以

第二個就是我們的方法,裏面參數寫了@Valid,這個就是用於驗證註解是否符合要求,直接加在變量之前,在變量中添加驗證信息的要求,當不符合要求時就會在方法中返回message的錯誤提示信息

現在,做好了一切準備,我們來測試一下,這裏使用PostMan進行測試,如圖

技術分享圖片

Idea輸出展示

技術分享圖片

Spring Boot筆記八:表單驗證