SpringMVC使用validation参数校验

本文介绍了如何在SpringBoot项目中通过Maven引入spring-boot-starter-validation依赖,并详细讲解了@Validated注解的使用,包括分组、BindingResult的运用,以及正则表达式(@Pattern)、URL验证、非空判断(@NotBlank,@NotNull,@NotEmpty)和集合类型的校验方法。

Maven引入依赖

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

常用参数和正则表达式
spring boot-@Validated参数校验 @Pattern 利用正则自定义注解

1 @Validated

声明某个controller接收参数使用Validation校验, 同时还可确定其使用的分组

BindingResult

在@Validated标记的参数后, 紧跟着声明一个BindingResult result 参数,result中获取校验结果的实体对象

2 @Pattern(regexp = “”)

使用正则表达式

3 @URL

是否是URL地址的校验

4 非空判断

@NotBlank
字符串 不能为 NULL和 空字符串""

@NotNull
字符串 不能为NULL

@NotEmpty
不能为NULL, 且如果是字符串, 内容不能为空(仅含空格也不行)
集合类型 集合长度不能为零

### SpringMVC 中整数参数校验的方法 在 SpringMVC 中,可以通过内置的校验注解来实现对整数类型的参数校验。这些注解通常用于对象属性上,并配合 `@Valid` 或 `@Validated` 注解完成整体校验。 #### 使用内置注解进行整数校验 对于整数类型的字段,常用的内置校验注解有以下几个: - **@Min(value)** 和 **@Max(value)** 这两个注解分别用来指定最小值和最大值范围。如果目标数值超出此范围,则会抛出校验异常[^2]。 - **@Digits(integer, fraction)** 此注解适用于限制整数部分和小数部分的最大位数。例如,`@Digits(integer=5, fraction=2)` 表示允许最多五位整数和两位小数的小数型数据[^1]。 以下是具体的代码示例: ```java import javax.validation.constraints.Min; import javax.validation.constraints.Max; public class UserRequest { @Min(18) // 年龄不得小于18岁 @Max(99) // 年龄不得超过99岁 private Integer age; public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } } ``` 当上述实体类作为控制器方法中的入参时,需在其前加上 `@Valid` 或 `@Validated` 来触发校验机制。 #### 控制器端配置与错误捕获 为了接收并处理校验失败的结果,在 Controller 的方法签名中需要引入 `BindingResult` 参数以获取详细的校验信息。 ```java import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/users") public class UserController { @PostMapping("/validate-age") public ResponseEntity<String> validateUser(@RequestBody @Valid UserRequest userRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { StringBuilder errorMessageBuilder = new StringBuilder(); bindingResult.getAllErrors().forEach(error -> { errorMessageBuilder.append(error.getDefaultMessage()).append("; "); }); return ResponseEntity.badRequest().body(errorMessageBuilder.toString()); } return ResponseEntity.ok("Validation successful!"); } } ``` 以上代码片段展示了如何利用 `BindingResult` 对象收集所有校验错误的信息,并将其返回给客户端。 #### 自定义校验场景扩展 除了使用标准注解外,还可以创建自定义校验注解满足特定业务需求。比如针对某些复杂条件下的整数判断逻辑,可设计专属约束处理器[^3]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值