SpringBoot中如何在服务器进行校验?

数据校验就是数据的合法性检查,在服务器端也可以对数据进行校验,一般使用JSR303 校验

  • JSR303是Java为Bean数据合法性校验提供的标准框架,是一种声明式校验

  • JSR303通过在Bean属性上标注类似于@NotNull、@Max等注解来指定校验规则,并通过标准的验证接口对Bean进行验证

注解功能
@Null必须为null
@NotNull不能为null
@NotBlank字符串不能为null,且长度大于 0,会去掉前后空格
@Max(value)数字必须小于等于指定值
@Min(value)数字必须大于等于指定值
@Size(min,max)长度必须在指定的范围内(可以是字符串、数组、集合等)
@Past时间必须是过去的时间
@Future时间必须是将来的时间
@Pattern必须符合指定的正则表达式

JSR303的扩展: Hibernate Validator扩展注解

  • Hibernate Validator是JSR303的一个参考实现,除支持所有标准的校验注解外,它还支持以下的扩展注解

注解功能
@Length(min,max)字符串长度必须在指定范围之间
@NotEmpty字符串不能为空
@Email必须是合法的邮箱
@Range(min,max,message)数值必须在指定的范围内
5.2 基本用法

步骤:

  • 添加依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
  • 在Bean上添加校验注解

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {
    private Integer id;
​
    @NotBlank(message = "用户名不能为空")
    private String username;
​
    @NotBlank(message = "密码不能为空")
    @Length(min = 6,max = 12,message = "密码长度必须在6~12之间")
    private String password;
​
    @Range(min = 18,max = 30,message = "年龄只能在18~30之间")
    private int age;
​
    @NotNull(message = "生日不能为空")
    @Past(message = "生日必须是过去的时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date birthday;
}
  • 在方法形参前添加@Valid注解
@RestController
public class AjaxController {
  
    @RequestMapping("/addUser")
    public String addUser(@Valid User user){ // @Valid 开启对User对象的数据校验
        System.out.println(user);
        return "success";
    }
​
}

  • 21
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值