SpringBoot 2.6教程:4.SpringBoot + validation参数校验-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot + Web 项目搭建及实践应用-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot + Web 项目搭建,异常捕获处理-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot + Mysql 项目应用-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot 集成 jsp 页面开发 -2022年最新图文版本

SpringBoot 2.7教程:SpringBoot 实现文件上传,图片上传并显示功能-2022年最新图文版本

SpringBoot 2.7教程:springboot 设置全局字符编码,解决乱码问题-2022年最新图文版

SpringBoot 2.7教程:SpringBoot mybatis 多数据源的整合方法-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot 整合 RocketMQ 项目搭建-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot 整合 RabbitMQ 项目搭建-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot 整合 MongoDB 项目搭建-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot 整合 Redisson 项目搭建-2022年最新图文版本

SpringBoot 2.7教程:SpringBoot 整合 Redis 项目搭建-2022年最新图文版本

本章主要目标:

学习使用SpringBoot参数校验。本章接上一章SpringBoot Web 项目,如不会的可以点击查看:SpringBoot 2.6 系列2022年最新图文版本:1.SpringBoot Web项目入门搭建。

下面我们开始进行搭建系统。

一、新建项目 web-validation

二、修改pom文件,添加validation

<dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

三、新建controller.UserController

import com.duoduo.webvalidation.controller.form.UserForm;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/***
 * @date: 2022/6/3 
 * @author: fenghaikuan
 * @description: TODO
 */
@RestController
public class UserController {
    @PutMapping("user/createUser")
    public String createUser(@Validated @RequestBody UserForm userForm) {
        return userForm.toString();
    }
}

四、新建请求实体类contorller.form.UserForm

/***
 * @date: 2022/6/3 
 * @author: fenghaikuan
 * @description: TODO
 */

public class UserForm {
    @NotNull(message = "请输入用户名")
    @Pattern(regexp = "^.{2,5}", message = "用户名格式不正确")
    public String userName;
    @NotNull(message = "请输入手机号")
    @Pattern(regexp = "^\\d{11}$", message = "手机号格式不正确")
    public String phone;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }
}

五、验证测试

PUT http://localhost:8080/user/creatUser

错误日志:

2022-06-04 16:10:10.522  WARN 17845 --- [nio-8080-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public java.lang.String com.duoduo.webvalidation.controller.UserController.createUser(com.duoduo.webvalidation.controller.form.UserForm): [Field error in object 'userForm' on field 'phone': rejected value [183000000]; codes [Pattern.userForm.phone,Pattern.phone,Pattern.java.lang.String,Pattern]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userForm.phone,phone]; arguments []; default message [phone],[Ljavax.validation.constraints.Pattern$Flag;@1353004b,^\d{11}$]; default message [手机号格式不正确]] ]

六、参数验证常用注解

       注解验证的数据类型备注                            
 Null  任意类型 参数值必须是 Null
 NotNull  任意类型 参数值必须不是 Null
 NotBlank  只能作用于字符串

 字符串不能为 null,而且字符串长度必须大于0,至少包含一个非空字符串

 NotEmpty  

 CharSequence

 Collection

 Map

 Array 

 字符串:字符串长度必须大于0,空字符串(“ ”)可以通过校验;

 Collection:集合大小必须大于0;

 Map:map的大小必须大于0;

 Array:数组长度必须大于0;

 Size 

 CharSequence

 Collection

 Map

 Array 

 同 NotEmpty
 Range

 数字类型

 字符串类型

 数值或者字符串的值必须在 min 和 max 指定的范围内
 Length 字符串类型 字符串的长度在min 和  max 之间
 Pattern 字符串类型  验证字符串是否符合正则表达式
 Min 整型类型  参数值必须大于等于 最小值
 Max 整型类型  参数值必须小于等于 最大值
 DecimalMin 整型类型   参数值必须大于等于 最小值 
 DecimalMax 整型类型   参数值必须小于等于 最大值 
 AssertTrue 布尔类型  参数值必须为 true
 AssertFalse 布尔类型   参数值必须为 false 
 Past 时间类型  参数值必须小于 当前时间
 Future 时间类型  参数值必须大于 当前时间

七、正则表达式

常用:

.*代表任意字符

?代表0-1次

+代表1-N次

^$代表开始结束

|代表或

[]代表字符集任意,[a-z]、[abc]

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值