`
leiwuluan
  • 浏览: 703542 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Java 数据验证

阅读更多

 

在web开发当前就会遇到一些数据有效性验证的相关代码编写。

一般的写法如:

 

public class User {
    public String username;
    public String password;
    public Integer age;
}

 

 

 

public addUser(User user) {

    String username = user.getUsername();
    Integer age = user.getAge();
    String password = user.getPassword();

    String errorMsg = "";
    if(username == null || username.equals("") {
        errotMsg += "用户名不可为空";
    }

    // ..........很多if,有多少个写多少个,太机械了。就一代码搬运工。

}

 

 

 

java 后台验证相关问题:

 

javax.validation.Validator

org.hibernate.validator.internal.engine.ValidatorImpl

 

1、User添加注释

public class User {
    @NotNull
    public String username;

    @NotNull
    public String password;

    @NotNull
    public Integer age;
}

public addUser(User user) {
    Iterator<ConstraintViolation<Object>> iterator = validator.validate(user)
    StringBuilder buf = new StringBuilder(256);
    while (iterator.hasNext()) {
        buf.append(";");
        ConstraintViolation<?> elem = iterator.next();
        if (elem != null) {
            buf.append(elem.getPropertyPath() + elem.getMessage());
        }
    }
    System.out.println(buf);
}

 

 

 

utils 拿去用吧。

public class Validators {

    private static class ValidatorHolder {
        static Validator validator = new Validators().getValidator();
    }

    private final Logger logger = LoggerFactory.getLogger(Validators.class);

    private final ValidatorFactory factory;

    private Validators() {
        try {
            Configuration<?> factoryCfg = Validation.byDefaultProvider().configure();
            factory = factoryCfg.buildValidatorFactory();
        } catch (final ValidationException ex) {
            logger.error("Bean Validation provider can not be found, no validation will be performed");
            throw ex;
        }
    }

    private Validator getValidator() {
        return factory.getValidator();
    }

    /**
     * 校验指定bean的单个属性值
     * @param bean 需要校验的bean
     * @param name 需要校验的属性名
     * @return 需要校验的属性的错误信息
     */
    public static String validateProperty(Object bean, String name) {
        return parseConstraintViolations(ValidatorHolder.validator.validateProperty(bean, name));
    }

    /**
     * 校验指定bean的全部属性
     * @param bean 需要校验的bean
     * @return 所有错误信息
     */
    public static String validate(Object bean) {
        return parseConstraintViolations(ValidatorHolder.validator.validate(bean));
    }

    public static String parseConstraintViolations(Set<ConstraintViolation<Object>> constraintViolations) {
        if (CollectionUtils.isEmpty(constraintViolations)) {
            return null;
        }

        Iterator<ConstraintViolation<Object>> iterator = constraintViolations.iterator();

        ConstraintViolation<Object> first = iterator.next();
        //单个校验错误
        if (!iterator.hasNext()) {
            return  first.getPropertyPath() + first.getMessage();
        }

        // two or more elements
        StringBuilder buf = new StringBuilder(256);             //Java default is 16, probably too small
        if (first != null) {
            buf.append(first.getPropertyPath() + first.getMessage());
        }

        while (iterator.hasNext()) {
            buf.append(";");
            ConstraintViolation<?> elem = iterator.next();
            if (elem != null) {
                buf.append(elem.getPropertyPath() + elem.getMessage());
            }
        }

        return buf.toString();
    }

}

 

 

 

0
1
分享到:
评论

相关推荐

    java 数据校验类

    java代码实现的数据校验类,包括奇偶校验和CRC校验等

    java数据校验工具类,校验日期、邮箱、数字、电话号码等数据

    java数据校验工具类,校验日期、邮箱、数字、电话号码等数据

    Java 使用poi导入excel 并使用xml做数据验证

    在Java开发中,处理Excel数据是一项常见的任务,尤其是在数据导入导出、...这个过程涉及到文件I/O、XML处理、数据验证、数据库操作等多个核心Java技术,对于提升Java开发者在实际项目中的综合能力具有很高的实践价值。

    java解析excel并做数据有效性校验

    在Excel中,可以通过设置数据验证规则实现。在Java中,我们可以使用Apache POI的`DataValidationHelper`和`DataValidationConstraint`类来创建和应用这些规则。 例如,检查手机号码的代码: ```java ...

    java完整性校验解决方案

    Java 数据完整性校验是保障软件安全的重要环节,尤其是在下载或传输文件时,确保数据未被篡改至关重要。这里我们将深入探讨 Java 中实现数据完整性验证的方法,主要关注MD5(Message-Digest Algorithm 5)哈希算法的...

    java后台数据隔离实现方式

    例如,`DataScopeAspect` 类可能就是实现这一功能的切面类,它会在数据查询之前进行权限校验。 3. 数据权限管理: 数据权限管理是数据隔离的核心,通常包括角色分配、权限设定和权限检查。`DataScope` 类可能包含...

    数据导入导出 (java)

    在IT行业中,数据导入导出是一项基础且重要的任务,特别是在Java开发中。本文将深入探讨如何使用Java进行数据的导入和导出,包括Excel、XML和TXT等常见格式的处理。 首先,我们要理解数据导入导出的核心目的:将...

    基于Annotation写的简单数据校验框架

    另外Hibernate也提供了类似功能的基于java注解的校验,我们产品也需要这种功能,无奈用的是JavaEE5,因此我自己写了一个简单的基于注解的校验框架,可以校验一些简单的数据类型,满足基本的需求。源码和UT都在里面。

    JavaCRC校验

    ### Java CRC校验详解 #### 一、CRC校验简介 循环冗余校验(Cyclic Redundancy Check,简称CRC)是一种数据校验技术,主要用于检测或纠正数据传输过程中的错误。CRC通过一个预定义的多项式进行计算,生成一个固定...

    Java计算校验和源码

    - **数据完整性检查**:在数据库操作、数据备份恢复等场景中,校验和可用于验证数据的完整性。 - **软件分发**:在发布软件时提供校验和,帮助用户验证下载文件的真实性和完整性。 通过以上分析,我们可以看到这个...

    java表单的验证

    2. **服务端验证**:在服务器端进行数据校验,确保数据安全,防止客户端篡改。 #### 四、Java表单验证技术 在Java中,常用的表单验证技术有: - **使用JavaBean验证** - **Spring框架中的数据绑定和验证** - **...

    Java编写的CRC校验

    在Java编程环境中实现CRC校验对于确保数据的完整性和一致性至关重要,尤其是在Android开发中,它能帮助开发者检测和防止数据传输过程中的错误。 CRC校验的基本原理是通过附加一个短的校验码到数据块的末尾,这个...

    java验证文件真实格式和编码格式工具类

    `java验证文件真实格式和编码格式工具类` 提供的功能对于处理不同来源的文件至关重要,尤其是在处理用户上传的文件或跨平台数据交换时。通过`VerifyFileType.java` 和 `VerifyFileEncoder.java`,开发者可以确保正确...

    java 利用POI对Execel表格的统一导入与校验(利用Hibernate Validator)

    5. **统一的导入与校验**: 在描述中提到的"统一封装"意味着创建一个通用的导入机制,这个机制可以接受不同的Excel模板,并根据预定义的校验规则进行数据验证。这样做可以提高代码的复用性,减少开发工作量,使得新...

    JAVA串口采集传感器数据

    3. **设置串口参数**:设置波特率、数据位、停止位和校验位。例如,设置9600波特的波特率: ```java serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_...

    JAVA数据挖掘

    Java数据挖掘是一个重要的领域,它将编程语言的力量与数据分析的深度结合在一起,为开发者提供了从海量数据中发现有价值信息的能力。在这个案例中,我们将探讨如何使用Java进行数据挖掘,以及这个过程中涉及的关键...

    Java源码对添加数据进行数据验证.rar

    在Java编程中,数据验证是确保输入数据的准确性和安全性的关键步骤,特别是在处理用户提交的数据时。这个压缩包文件“Java源码对添加数据进行数据验证.rar”可能包含了一个或多个示例,用于演示如何在Java应用中实现...

    java多个数据库实现数据同步

    - **数据一致性验证**:在数据同步后,进行一致性校验,确保数据在各个数据库中的一致性。 - **性能优化**:减少同步延迟,避免过度负载,可能需要对同步频率、批量更新和缓存策略进行调整。 综上所述,Java实现多...

    JAVA数据加密方面的资料

    Java数据加密是一个重要的安全领域,它涉及到保护敏感信息、防止数据泄露和确保网络通信的隐私。在这个主题中,我们将深入探讨三个关键知识点:Java中的类加载器(ClassLoader)在加密解密中的应用、常见的加密算法...

    JAVA文本框验证大全

    学习“JAVA文本框验证大全”,不仅可以加深对Java Swing组件的理解,还能提升你在用户交互设计和数据验证方面的技能。同时,了解不同的验证策略和库可以帮助你更灵活地应对各种场景,为用户提供更好的输入体验。

Global site tag (gtag.js) - Google Analytics