前言

表单提交是最常见的数据提交方式,我们经常会填写表单信息,比如用户名,身份证,手机号等等,因此就会产生身份证是否合法,用户名是否为空,虽然我们可以直接在前台使用js就进行格式的校验,但如果使用postman工具直接发请求呢?使用我们后端也需要进行对数据的校验,这样极大的确保数据的安全性和合法性。

1.新建一个springboot项目,并且添加web依赖。下面是本项目的全部依赖

<dependencies>
        <dependency>
            <groupid>org.springframework.boot</groupid>
            <artifactid>spring-boot-starter-web</artifactid>
        </dependency>

        <dependency>
            <groupid>org.springframework.boot</groupid>
            <artifactid>spring-boot-devtools</artifactid>
            <scope>runtime</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
        <dependency>
            <groupid>org.hibernate.validator</groupid>
            <artifactid>hibernate-validator</artifactid>
            <version>6.1.5.final</version>
        </dependency>


        <dependency>
            <groupid>org.projectlombok</groupid>
            <artifactid>lombok</artifactid>
            <version>1.18.12</version>
        </dependency>

        <dependency>
            <groupid>org.springframework.boot</groupid>
            <artifactid>spring-boot-starter-test</artifactid>
            <scope>test</scope>
        </dependency>
    </dependencies>

2.为了方便演示,我引入了lombok,然后我们新建一个user类来模拟用户注册时提交的表单信息。

这里涉及到几个注解:

@notempty(message=“用户名不能为空”)
@length(min=6,max = 12,message=“用户名长度必须位于6到12之间”)
@email(message=“请输入正确的邮箱”)
@pattern(regexp = “正则表达式”, message = “身份证格式错误”)

user.java的代码:

package com.ctvit.validatordemo.pojo;

import lombok.allargsconstructor;
import lombok.data;
import lombok.noargsconstructor;
import org.hibernate.validator.constraints.length;

import javax.validation.constraints.email;
import javax.validation.constraints.notempty;
import javax.validation.constraints.pattern;
import java.io.serializable;

/**
 * 用户名,密码,邮箱,身份证
 */
@data
@allargsconstructor
@noargsconstructor
public class user implements serializable {
    @notempty(message="用户名不能为空")
    @length(min=6,max = 12,message="用户名长度必须位于6到12之间")
    private string username;


    @notempty(message="密码不能为空")
    @length(min=6,message="密码长度不能小于6位")
    private string password;

    @email(message="请输入正确的邮箱")
    private string email;

    @pattern(regexp = "^(\\d{18,18}|\\d{15,15}|(\\d{17,17}[x|x]))$", message = "身份证格式错误")
    private string idcard;

}

3.然后书写一个简单的控制器来进行模拟访问:

package com.ctvit.validatordemo.controller;

import com.ctvit.validatordemo.pojo.user;
import org.springframework.validation.bindingresult;
import org.springframework.validation.objecterror;
import org.springframework.web.bind.annotation.postmapping;
import org.springframework.web.bind.annotation.restcontroller;

import javax.validation.valid;
import java.util.list;

@restcontroller
public class usercontroller {

    @postmapping("/register")
    public string register(@valid user user, bindingresult bindingresult){//一个bindingresult对应一个@valid注解的参数,用来表示校验消息
        stringbuffer stringbuffer = new stringbuffer();//使用stringbuffer拼接错误信息,比如用户名为空,长度等
        if(bindingresult.haserrors()){//判读是否携带错误信息
            list<objecterror> list =bindingresult.getallerrors();//获取所有错误信息对象
            for (objecterror objecterror:list) {//遍历对象,获取错误的具体信息
                //将所有信息进行拼接
                stringbuffer.append(objecterror.getdefaultmessage());
                stringbuffer.append("---");
            }
        }
        return stringbuffer!=null?stringbuffer.tostring():"";//将错误信息返回
    }
}

4.这里涉及到一个接口:bindingresult。

方法名 作用
haserrors() 判断当前参数是否符合
getallerrors() 获取错误信息对象
getdefaultmessage() 获取错误信息

输入一半正确的,一般错误的:

都正确的数据:

总结

到此这篇关于springboot表单提交之validator校验的文章就介绍到这了,更多相关springboot validator校验内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!