SpringBoot 数据校验 - Validation

SpringBoot 数据校验 - Validation

       ⽇常项⽬开发中,对于前端提交的表单,后台接⼝接收到表单数据后,为了程序的严谨性,通常后端会加⼊业务参数的合法校验操作来避免程序的⾮技术性 bug,这⾥对于客户端提交的数据校验,SpringBoot 通过 spring-boot-starter-validation 模块包含了数据校验的⼯作。
       这⾥主要介绍 Spring Boot 中对请求数据进⾏校验,相关概念如下
       JSR303 :JSR303 是⼀项标准,只提供规范不提供实现,规定⼀些校验规即校验注解,如
       @Null,@NotNull,@Pattern,位于javax.validation.constraints 包下。JSR-349 是其升级版本,添加了⼀些新特性。
       Hibernate Validation :Hibernate Validation 是对这个规范的实现,并增加了⼀些其他校验注解,如@Email,@Length,@Range 等等。
       Spring Validation :Spring Validation 对 Hibernate Validation 进⾏了⼆次封装,在Spring MVC 模块中添加了⾃动校验,并将校验信息封装进了特定的类中。
1、环境配置
       实现参数校验,程序必须引⼊ spring-boot-starter-validation 依赖,只是在引⼊ spring-boot-starter-web 依赖时,该模块会⾃动依赖 spring-boot-starter-validation,所以程序中引⼊ spring-boot-starter-web 会⼀并依赖spring-boot-starter-validation 到项⽬中。

在这里插入图片描述

2、校验相关注解
注解功能
@AssertFalse可以为null,如果不为null的话必须为false
@AssertTrue可以为null,如果不为null的话必须为true
@DecimalMax设置不能超过最⼤值
@DecimalMin设置不能超过最⼩值
@Digits设置必须是数字且数字整数的位数和⼩数的位数必须在指定范围内
@Future⽇期必须在当前⽇期的未来
@Past⽇期必须在当前⽇期的过去
@Max最⼤不得超过此最⼤值
@Min最⼤不得⼩于此最⼩值
@NotNull不能为null,可以是空
@Min最⼤不得⼩于此最⼩值
@Pattern必须满⾜指定的正则表达式
@Size集合、数组、map等的size()值必须在指定范围内
@Email必须是email格式
@Length⻓度必须在指定范围内
@NotBlank字符串不能为null,字符串trim()后也不能等于“”
@NotEmpty不能为null,集合、数组、map等size()不能为0;字符串trim()后可以等于“”
@Range值必须在指定范围内
@URL必须是⼀个URL
3、校验注解使⽤
  • User 实体类参数校验注解
public class User implements Serializable {
 
	 private Integer id;
	 
	 @NotBlank(message = "⽤户名不能为空!")
	 private String userName;
	 @NotBlank(message = "⽤户密码不能为空!")
	 @Length(min = 6, max = 10,message = "密码⻓度⾄少6位但不超过10位!")
	 private String userPwd;
	 
	 @Email
	 private String email;
	 
	 /*
	 省略get set ⽅法 
	 */
}
  • 接⼝⽅法形参 @Valid 注解添加
@PostMapping("user")
@ApiOperation(value = "⽤户添加")
@ApiImplicitParam(name = "user",value = "⽤户实体类",dataType = "User")
public ResultInfo saveUser02(@Valid User user){
	 ResultInfo resultInfo = new ResultInfo();
 // userService.saveUser(user);
 	return resultInfo; 
}
  • 全局异常错误信息捕捉
/**
* 全局异常处理 返回json
* @param e
* @return
*/
@ExceptionHandler(value = Exception.class)
@ResponseBody
public ResultInfo exceptionHandler(Exception e){
	 ResultInfo resultInfo = new ResultInfo();
	 resultInfo.setCode(300);
	 resultInfo.setMsg("操作失败!");
	 if(e instanceof ParamsException){
		 ParamsException pe = (ParamsException) e;
		 resultInfo.setMsg(pe.getMsg());
		 resultInfo.setCode(pe.getCode());
	 } else if(e instanceof BindException){
	 	BindException be = (BindException) e;
		resultInfo.setResult(be.getBindingResult().getFieldError().getDefaultMessage());
 	}
  	return resultInfo; 
}
  • PostMan 接⼝测试

在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot提供了很方便的数据校验功能,可以通过注解方式实现。要使用数据校验功能,首先需要在项目的pom.xml文件中添加相关的依赖。其中,我们可以使用spring-boot-starter-validation依赖来引入数据校验功能。 在代码中,我们可以使用javax.validation.constraints包中的注解来对数据进行校验。常用的注解包括@NotNull、@NotEmpty、@Size、@Min、@Max等。例如,使用@NotNull注解来标记一个字段不能为空。 首先,在需要校验的类中,添加注解@Validated,这样Spring Boot会自动校验被注解标记的字段。然后,在需要校验的字段上添加相关的校验注解,如@NotNull。最后,在Controller的方法参数上添加@Valid注解,来触发数据校验。 下面是一个示例代码,展示了如何在Spring Boot中进行数据校验。 ```java import org.springframework.validation.annotation.Validated; import javax.validation.constraints.NotNull; @RestController @Validated public class UserController { @PostMapping("/user") public String addUser(@Valid @RequestBody User user) { // 业务逻辑处理 // ... return "User added successfully"; } public class User { @NotNull private String username; // getters and setters } } ``` 在上述示例中,我们定义了一个UserController类,其中的addUser方法用于添加用户。在User类中,我们使用了@NotNull注解来标记username字段不能为空。在addUser方法的参数中,我们使用了@Valid注解来触发数据校验。 通过以上配置,当我们发送一个POST请求到"/user"的时候,Spring Boot会自动校验请求体中的数据。如果校验失败,会返回相应的错误信息。如果校验通过,会执行业务逻辑并返回成功信息。 总结一下,Spring Boot提供了简单易用的数据校验功能,可以通过注解方式实现。通过添加相应的依赖和配置,我们可以在项目中方便地使用数据校验功能,保证数据的有效性和完整性。 :https://www.jianshu.com/p/2dabf4f0b72e :https://www.baeldung.com/spring-boot-bean-validation

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值