Spring Boot笔记八:表单验证

所谓的表单验证,就是为了防止用户乱输入的,这个问题前端的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输出展示

猜你喜欢

转载自www.cnblogs.com/yunquan/p/10355657.html