开发教程您现在的位置:主页 > 开发教程 >

Spring MVC 服务端的验证

发布日期:2018-01-11 14:03

任何时候,当要处理一个运用程序的事务逻辑,数据校验是你必需求考虑和面临的工作。
运用程序有必要经过某种手法来保证输入参数在上下文来说是正确的。
分层的运用在许多时候,相同的数据验证逻辑会出现在不同的层,这样就会导致代码冗余和一些办理的问题。
为了防止这样或那样的状况发作,最好是将验证逻辑与相应的数据模型进行绑定,所以西安Java培训总结了相关知识。
1. JSR-303 Bean Validation
   JSR 是Java Specification Requests 的缩写,是指向 JCP(Java Community Process) 提出新增一个标准化技术标准的正式恳求。
   任何人都能够提交 JSR,以向 Java 渠道增加新的 API 和服务,已审阅经过的标准触及 Java 各个领域,有兴趣能够了解一下。
   Bean Validation 是一个运行时的数据验证结构,为 JavaBean 验证界说了相应的元数据模型和 API。
   默许的元数据是 Java Annotations,当然也能够运用 XML 能够对已存在的元数据信息进行掩盖和扩展。
   在运用中经过运用 Bean Validation 或是你自己界说的 constraint,例如 @NotNull, @Max, @ZipCode, 就能够保证数据模型的正确性。
   constraint 能够注解到字段,getter 办法,类或者接口上面。关于一些特定的需求,用户能够很简单的开发定制化的 constraint。
   Hibernate Validator 做为 Bean Validation 的参阅完成 .供给了 JSR 303 标准中所有内置 constraint 的完成,除此之外还有一些附加的 constraint。
 
 Sun validation-api.jar 中界说的标准 constraint 
   Hiber-Validator 自界说的几个 constraint
2. Spring MVC 服务端验证实践
   只需求很简单的三个过程,就能够在 Spring MVC 中校验数据模型,首先将需求的 jar 依靠进来
            org.hibernate
            hibernate-validator
            6.0.1.Final
   然后在需求校验数据模型上增加校验注解,如果数据模型为引进其他公司或项目,编写 xml 相同是可行的。
public class UserVO {
    @NotNull(message = "uuid 不能为空!")
    private String uuid;
    @NotEmpty(message = "用户称号不能为空!")
    private String name;
    private String passwd;
    private String sex;
    private Date birthday;
    @Length(min = 11, max = 11, message = "电话号码长度有必要为11位!")
    private String phone;
    private String photo;
    @Email(message = "电子邮箱地址不合法!")
    private String email;
    private String yxbz;
    private String sorts;
    .....setter/getter
}
   最终就是验证并获取结果的过程,你能够硬编码编写通用办法在项目中运用,像下面这样。
   private void validBean(Object targerBean) {
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        Validator validator = factory.getValidator();
        Set violations = validator.validate(targerBean);
        for (ConstraintViolationviolation : violations) {
            System.out.println(violation.getMessage());
        }
    }