软件编程
位置:首页>> 软件编程>> java编程>> springboot表单提交之validator校验

springboot表单提交之validator校验

作者:程序逸  发布时间:2023-05-16 23:19:17 

标签: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>

springboot表单提交之validator校验

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表单提交之validator校验

都正确的数据:

springboot表单提交之validator校验

总结

来源:https://blog.csdn.net/qq_43265564/article/details/117366485

0
投稿

猜你喜欢

  • 本文我将要介绍一下mybatis的框架原理,以及mybatis的入门程序,实现用户的增删改查,她有什么优缺点以及mybatis和hibern
  • 概念 在 HTML 中,<a>, <form>, <img>, <script>,
  • spring拓展 定义自己的namespace1.查看源码认识spring是怎么加载xml配置的1.1 spring是怎么创建对象的? 查看
  • 1、this关键字首先需要提醒的是,在整个Java之中,this是最麻烦的一个关键字,只要是代码开发,几乎都离不开this。在Java中th
  • 这里不准备讨论REST的细节内容,但是总体上,REST是让客户端与服务器段的交互通过发送和接收展示资源的方式来进行,在这里有必要说明:Fie
  • 这里使用的是spring-security和原生的jasig cas包来进行整合,为什么没有直接使用spring提供的spring-secu
  • 本文实例为大家分享了Unity实现场景漫游相机的具体代码,供大家参考,具体内容如下前言拿到场景后总喜欢在场景里面玩一段时间,那这个脚本就是你
  • 引言使用标准框架验证Java bean的基础知识 - JSR 380,也称为Bean Validation 2.0。当然,验证用户输入在大多
  • 声明:下面的实例全部在linux下尝试,window下未尝试。有兴趣者可以试一下。文章针c初学者。c语言的强符号和弱符号是c初学者经常容易犯
  • 前言《飞机大战-I》是一款融合了街机、竞技等多种元素的经典射击手游。华丽精致的游戏画面,超炫带感的技能特效,超火爆画面让你肾上腺素爆棚,给你
  • 介绍建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种
  • CompletableFuture 介绍CompletableFuture是1.8引入的新特性,一些比较复杂的异步计算场景,尤其是需要串联多
  • 本文实例为大家分享了java读取cvs文件并导入数据库的具体代码,供大家参考,具体内容如下首先获取文件夹下面的所有类型相同的excel,可以
  • 在实际开发中,我们经常会需要在页面跳转的时候携带路由参数,典型的例子就是从列表到详情页的时候,需要携带详情的 id,以便详情页获取对应的数据
  • —举例(学生排课)—正常思路的处理方法和优化过后的处理方法:比如说给学生排课。学生和课程是一个多对多的关系。按照正常的逻辑 应该有一个关联表
  • Docker 是一种“轻量级”容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公司开始逐步使用 Docker 来替换现
  • 一、什么是过滤器过滤器是对数据进行过滤,预处理过程,当我们访问网站时,有时候会发布一些敏感信息,发完以后有的会用*替代,还有就是登陆权限控制
  • 本文实例实现C#以一个收银付费的小程序演示switch case语法如何使用,读入用户选择,把用户的选择赋值给变量n,再根据用户的输入提示付
  • 假设下面是你的视频网站链接列表,如果别人想爬取你的数据十分轻松,看规则就知道数据库是序列自增的http://www.xxxx.com/vid
  • 在软件开发过程中经常需要知道程序运行的大概时间,或者需要在规定时间内取数据,这是可以使用下面的方法获取时间段,还可以用在限时循环方法一:/*
手机版 软件编程 asp之家 www.aspxhome.com