JSR303使用

验证方式

用户在前端页面上填写表单时,前端js程序会校验参数的合法性
当数据到了后端,为了防止恶意操作,保持程序的健壮性
后端同样需要对数据进行校验

JSR303
是一套JavaBean参数校验的标准,定义了很多常用的校验注解
可以直接将这些注解加在我们JavaBean的属性上面
就可以在需要校验的时候进行校验了

引入jar包

validation-api-1.1.0. Final.jar:JDK的接口
hibernate-validator-5.2.0.Final.jar是对上述接口的实现

<!--jsr 303-->
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>
<!-- hibernate validator-->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.2.0.Final</version>
</dependency>

JavaBean的属性校验

通过给JavaBean配置注解
可以实现对属性的验证

@Validated
public class User {
    // 必须不为 null,
    // 大小是 10
    @NotNull
    @Size(min = 10, max = 10)
    private String id;
    // 必须不为空
    @NotEmpty
    private String userName;
    // 必须不为空
    @NotEmpty
    private String password;
    // 必须是一个电子信箱地址
    @Email
    private String email;
}

Form表单的校验

一个@Valid的参数
必须紧挨着一个BindingResult 参数
否则,spring会在校验不通过时直接抛出异常

BindingResult对象
用于获取校验失败情况下的反馈信息

@RequestMapping("/login")
@ResponseBody
public String testValid(@Valid User user, BindingResult result){
    if (result.hasErrors()){
        List<ObjectError> errorList = result.getAllErrors();
        for(ObjectError error : errorList){
            System.out.println(error.getDefaultMessage());
        }
    }
    return "test";
}

程序的数据校验

在整个程序的任何地方
都可以调用JSR303 API去对数据进行校验
然后,将校验后的结果返回

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<User>> violations = validator.validate(user);

注意
数据类型

对于某一种验证规则
是适用于一种数据类型的,否则会报错

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值