springboot表单提交之validator校验

 更新时间:2021年05月30日 10:58:06   作者:程序逸  
在前台表单验证的时候,通常会校验一些数据的可行性,比如是否为空,长度,身份证,邮箱等等,这篇文章主要给大家介绍了关于springboot表单提交之validator校验的相关资料,需要的朋友可以参考下

前言

表单提交是最常见的数据提交方式,我们经常会填写表单信息,比如用户名,身份证,手机号等等,因此就会产生身份证是否合法,用户名是否为空,虽然我们可以直接在前台使用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校验内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot如何实现word文档转pdf

    SpringBoot如何实现word文档转pdf

    这篇文章主要介绍了SpringBoot如何实现word文档转pdf,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Spring事务aftercommit原理及实践

    Spring事务aftercommit原理及实践

    这篇文章主要为大家介绍了Spring事务aftercommit原理及实践,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Spring Boot 读取静态资源文件的方法

    Spring Boot 读取静态资源文件的方法

    本篇文章主要介绍了Spring Boot 读取静态资源文件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Java实现经典游戏Flappy Bird的示例代码

    Java实现经典游戏Flappy Bird的示例代码

    Flappy Bird是13年红极一时的小游戏,即摁上键控制鸟的位置穿过管道间的缝隙。本文将用Java语言实现这一经典的游戏,需要的可以参考一下
    2022-02-02
  • Java求解两个非负整数最大公约数算法【循环法与递归法】

    Java求解两个非负整数最大公约数算法【循环法与递归法】

    这篇文章主要介绍了Java求解两个非负整数最大公约数算法,结合实例形式分析了java求解最大公约数的实现方法,并附带了循环法与递归法算法思路,需要的朋友可以参考下
    2018-03-03
  • java读取txt文件内容简单举例

    java读取txt文件内容简单举例

    这篇文章主要给大家介绍了关于java读取txt文件内容简单举例的相关资料,通常我们可以直接通过文件流来读取txt文件的内容,文中给出了详细的代码示例,需要的朋友可以参考下
    2023-07-07
  • 解决方法A调用方法B的事务控制问题

    解决方法A调用方法B的事务控制问题

    这篇文章主要介绍了解决方法A调用方法B的事务控制问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Idea代理设置与Java程序的代理设置方式

    Idea代理设置与Java程序的代理设置方式

    文章总结:学习WebService时,使用Fiddler抓取包数据,发现Idea代理设置与Java程序代理设置不同,Java程序需要在发送请求前设置代理,代码如下
    2025-01-01
  • SpringBoot整合PageHelper实现分页查询功能详解

    SpringBoot整合PageHelper实现分页查询功能详解

    PageHelper是mybatis框架的一个插件,用于支持在mybatis执行分页操作。本文将通过SpringBoot整合PageHelper实现分页查询功能,需要的可以参考一下
    2022-03-03
  • Java数据结构顺序表从零基础到精通进阶

    Java数据结构顺序表从零基础到精通进阶

    程序中经常需要将一组数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等。一组数据中包含的元素个数可能发生变化,顺序表则是将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示
    2022-03-03

最新评论