Springboot集成JSR303参数校验的方法实现

 更新时间:2019年09月24日 10:13:35   作者:lijiajun_blog  
这篇文章主要介绍了Springboot集成JSR303参数校验的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

JSR303 是一套 JavaBean 参数校验的标准

1、pom导入依赖

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

2、注解类型

(1)空检查

@Null 验证对象是否为null
@NotNull 验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty 检查约束元素是否为NULL或者是EMPTY.

(2)Booelan检查

@AssertTrue 验证 Boolean 对象是否为 true
@AssertFalse 验证 Boolean 对象是否为 false

(3)长度检查

@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
@Length(min=, max=) 验证字符串的长度在min和max范围之内.

(4)日期检查

@Past 验证 Date 和 Calendar 对象是否在当前时间之前,验证成立的话被注释的元素一定是一个过去的日期
@Future 验证 Date 和 Calendar 对象是否在当前时间之后 ,验证成立的话被注释的元素一定是一个将来的日期
@Pattern 验证 String 对象是否符合正则表达式的规则,被注释的元素符合制定的正则表达式,regexp:正则表达式 flags: 指定 Pattern.Flag 的数组,表示正则表达式的相关选项。

(5)数值检查

建议使用在Stirng,Integer类型,不建议使用在int类型上,因为表单值为""时无法转换为int,但可以转换为Stirng为"",Integer为null
@Min 验证 Number 和 String 对象是否大等于指定的值
@Max 验证 Number 和 String 对象是否小等于指定的值
@DecimalMax 被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度
@DecimalMin 被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度
@Digits 验证 Number 和 String 的构成是否合法
@Digits(integer=,fraction=) 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。
@Range(min=, max=) 被指定的元素必须在合适的范围内
@Valid 递归的对关联对象进行校验, 如果关联对象是个集合或者数组,那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.(是否进行递归验证)
@CreditCardNumber信用卡验证
@Email 验证是否是邮件地址,如果为null,不进行验证,算通过验证。
@ScriptAssert(lang= ,script=, alias=)
@URL(protocol=,host=, port=,regexp=, flags=)

3、自定义验证类

(1)自定义注解,至少需要包含message() 、 groups() 、 payload() ,

@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {IsRightValidator.class })
public @interface IsRight {
	
	boolean right() default true;
	
	String message() default "这是验证失败的提示信息";
 
	Class<?>[] groups() default { };
 
	Class<? extends Payload>[] payload() default { };
}

(2)自定义注解校验器类,继承 ConstraintValidator 类<注解类,注解参数类型> ,重写 两个方法(initialize:初始化操作、 isValid:逻辑处理)

public class IsRightValidator implements ConstraintValidator<IsRight, String> {
 
	private boolean right= false;
	@Override
	public void initialize(IsRight constraintAnnotation) {
		right = constraintAnnotation.right();
	}
 
   @Override
	public boolean isValid(String value, ConstraintValidatorContext context) {
		if(right) {
			return true;
		}else {
			return false;
		}
	}

4、JSR303注解的使用

(1)需要校验的bean,一般为ViewObject的bean中

public class TestVo{
 
  @NotNull
	@Length(min=32)
	private String password;
  
  ...
}

(2)在Controller接口方法的接收参数中使用  @Valid修饰ViewObject

@Controller
public class LoginController {
 
  @RequestMapping("/Test")
  @ResponseBody
  public void doLogin(HttpServletResponse response, @Valid TestVo testVo) {
  	log.info(testVo.toString());
    
  	...
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Mybatis-Plus的多数据源你了解吗

    Mybatis-Plus的多数据源你了解吗

    这篇文章主要为大家详细介绍了Mybatis-Plus的多数据源,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • java.lang.IncompatibleClassChangeError异常的问题解决

    java.lang.IncompatibleClassChangeError异常的问题解决

    本文主要介绍了java.lang.IncompatibleClassChangeError异常的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • java swagger ui 添加header请求头参数的方法

    java swagger ui 添加header请求头参数的方法

    今天小编就为大家分享一篇java swagger ui 添加header请求头参数的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Spring框架 注解配置事务控制的流程

    Spring框架 注解配置事务控制的流程

    这篇文章主要介绍了Spring框架 注解配置事务控制的流程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 全面理解java中的构造方法以及this关键字的用法

    全面理解java中的构造方法以及this关键字的用法

    本篇文章主要概述了如何用构造方法初始化对象,this属性名访问成员变量方法,和this()的用法,感兴趣的小伙伴一起来学习吧
    2023-03-03
  • Java使用Ajax异步上传文件

    Java使用Ajax异步上传文件

    使用Ajax上传文件的应用场景颇多,比如上传用户头像、博客文章中插入图片、对认证用户相关身份进行校验等等很多很多。本文提供一个简单的示例供大家参考
    2021-05-05
  • SpringBoot整合MyBatis实现CRUD操作项目实践

    SpringBoot整合MyBatis实现CRUD操作项目实践

    本文主要介绍了SpringBoot整合MyBatis实现CRUD操作项目实践,如何实现数据库的CRUD创建、读取、更新、删除操作,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • 浅谈java获取服务器基本信息

    浅谈java获取服务器基本信息

    这篇文章主要介绍了java获取服务器基本信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 写了两年代码之后再来谈一谈Spring中的Bean

    写了两年代码之后再来谈一谈Spring中的Bean

    这篇文章主要介绍了写了两年代码之后再来看看Spring中的Bean,这里列出四种常用的添加Bean的方式,介绍最基本的@Bean注解,@Bean注解声明这个类是一个Bean,需要的朋友可以参考下
    2021-10-10
  • java并发编程之ThreadLocal详解

    java并发编程之ThreadLocal详解

    在锁的使用中会导致运行效率降低,ThreadLocal的使用彻底避免对共享资源的竞争,同时又可以不影响效率。本文详细讲解了ThreadLocal,需要了解的小伙伴可以看一看这篇文章
    2021-08-08

最新评论