Hibernate Validator

【统一全局异常处理】4. 服务端数据校验与全局异常处理

烂漫一生 提交于 2019-12-26 12:15:02
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 通常,服务端的数据校验通常不是面向用户的,提示信息还是应该以面向程序员和运维人员为主,在数据进入后台之前进行一道拦截。前端js的数据校验提示信息,是面向用户的,要更加的友好! 一、异常校验的规范及常用注解 在web开发时,对于请求参数,一般上都需要进行参数合法性校验的,原先的写法时一个个字段一个个去判断,这种方式太不通用了,所以java的JSR 303: Bean Validation规范就是解决这个问题的。 JSR 303只是个规范,并没有具体的实现,目前通常都是才有hibernate-validator进行统一参数校验。 JSR303定义的校验类型 Constraint 详细信息 @Null 被注释的元素必须为 null @NotNull 被注释的元素必须不为 null @AssertTrue 被注释的元素必须为 true @AssertFalse 被注释的元素必须为 false @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @DecimalMax(value) 被注释的元素必须是一个数字

第9章 数据校验

痞子三分冷 提交于 2019-12-25 20:25:18
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> JSR 303 JSR 303是Java为Bean的数据合法性校验提供的标准框架,它已包含在了JavaEE 6.0中。 JSR 303通过在Bean属性上标注类似 于@NotNull 、 @Max 等标准的注解指定校验规则,并通过标准的验证接口对Bean进行验证。 Hibernate Validator的扩展注解 Hibernate Validator是JSR 303的一个参考实现。除支持所有标准的校验注解外,还支持以下的扩展注解。 Spring MVC数据校验 Spring拥有自己独立的数据校验框架,同时还支持JSR 303标准的校验框架。 Spring在进行数据绑定时,可同时调用校验框架完成数据校验工作。 在Spring MVC 中,可直接通过 注解 的方式进行数据校验。 Spring的 LocalValidatorFactroyBean 既实现了Spring的 Validator 接口,也实现了JSR 303的 Validator 接口。只要在Spring容器中定义了一个 LocalValidatorFactoryBean ,即可将其注入到需要数据校验的Bean中。 Spring本身并没有提供JSR 303的实现,所以必须将JSR 303的实现者的jar 包放到类路径下。 <mvc:annotation

Java Bean Validation

早过忘川 提交于 2019-12-21 10:53:28
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在这本文中,我们将介绍使用标准框架验证Java bean的基础知识 - JSR 380,也称为Bean Validation 2.0。 当然,验证用户输入在大多数应用程序中是一个超常见的要求,Java Bean Validation框架已经成为处理这种逻辑的事实上的标准。 JSR 380 JSR 380是用于bean验证的Java API的规范,是JavaEE和JavaSE的一部分,它使用@NotNull、@Min和@Max等注释确保bean的属性满足特定的标准。 此版本需要Java 8或更高版本,并利用Java 8中添加的新功能(如类型注释),并支持Optional和LocalDate等新类型。 有关规范的完整信息,请继续阅读 JSR 380 。 依赖性 我们将使用Maven示例来显示所需的依赖项,但当然,可以使用各种方式添加这些jar。 验证API 根据JSR 380规范,validation-api依赖包含标准验证API: <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.0.Final</version> </dependency> 验证API参考实现

SpringBoot校验参数

限于喜欢 提交于 2019-12-10 14:25:45
前言 做web开发有一点很烦人就是要校验参数,基本上每个接口都要对参数进行校验,比如一些格式校验 非空校验都是必不可少的。如果参数比较少的话还是容易 处理的一但参数比较多了的话代码中就会出现大量的 IF ELSE 就比如下面这样: 这个例子只是校验了一下空参数。如果需要验证邮箱格式和手机号格式校验的话代码会更多,所以介绍一下 validator 通过注解的方式进行校验参数。 什么是Validator Bean Validation是Java定义的一套基于注解的数据校验规范,目前已经从JSR 303的1.0版本升级到JSR 349的1.1版本,再到JSR 380的2.0版本(2.0完成于2017.08),已经经历了三个版本 。在 SpringBoot 中已经集成在 starter-web 中,所以无需在添加其他依赖。 注解介绍 validator内置注解 注解 详细信息 @Null 被注释的元素必须为 null @NotNull 被注释的元素必须不为 null @AssertTrue 被注释的元素必须为 true @AssertFalse 被注释的元素必须为 false @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 @DecimalMin(value)

如何使用SpringMVC进行数据校验

北城以北 提交于 2019-12-01 03:15:03
前言: SpringMVC数据校验采用JSR-303校验。 • Spring 4.0 拥有自己独立的数据校验框架,同时支持 JSR 303 标准的校验框架。 • Spring 在进行数据绑定时,可同时调用校验框架完成数据校 验工作。在 Spring MVC 中,可直接通过注解驱动的方式 进行数据校验 • Spring 的 LocalValidatorFactroyBean 既实现了 Spring 的 Validator 接口,也实现了 JSR 303 的 Validator 接口。只要 在 Spring 容器中定义了一个 LocalValidatorFactoryBean ,即可将其注入到需要数据校 验的 Bean 中。 • Spring 本身并没有提供 JSR303 的实现,所以必须将 JSR303 的实现者的 jar 包放到类路径下 Hibernate Validator 是 JSR 303 的一个参考实现,这里我们就采用Hibernate validator。 JSR-303校验说明: 1.@NotNull/@Null 验证字段: 引用数据类型 注解说明:注解元素必须是非空或空 2.@Digits 验证字段:byte、short、int、long及各自的包装类型以及BigDecimal、BigInteger、String 注解说明:验证数字构成是否合法 属性说明

dependencies.dependency.version&apos; for org.hibernate:hibernate-validator:jar is missing.

梦想的初衷 提交于 2019-12-01 02:24:38
20190315 学习 Spring boot 遇到问题 按照 https://blog.csdn.net/forezp/column/info/15397 学习到 SpringBoot非官方教程 | 第十九篇: 验证表单信息 https://blog.csdn.net/forezp/article/details/71023817 环境和项目: ubuntu 18.04 + Eclipse 2018.12 创建新 project 中,选择 Spring Starter Project 从以上 SpringBoot非官方教程 直接 copy 代码和 pom 的依赖部分 问题: pom.xml 出现错误!错误提示在 <parent> ,错误地点在 <groupId>org.hibernate</groupId> 的依赖! 1、上官网找找最新版本 http://hibernate.org/validator/ 显示最新版本 Releases : 6.0 latest stable 给 hibernate 依赖 加上 <version>6.0</version> 之后,又显示错误: Missing artifact org.hibernate:hibernate-validator:jar:6.0.11 ** 换了几个版本号,都是以上错误 2、参考 https://blog.csdn

SpringBoot | 第八章:统一异常、数据校验处理

情到浓时终转凉″ 提交于 2019-12-01 01:18:48
前言 在web应用中,请求处理时,出现异常是非常常见的。所以当应用出现各类异常时,进行异常的捕获或者二次处理(比如sql异常正常是不能外抛)是非常必要的,比如在开发对外api服务时,约定了响应的参数格式,如 respCode 、 respMsg ,调用方根据错误码进行自己的业务逻辑。本章节就重点讲解下统一异常和数据校验处理。 springboot 中,默认在发送异常时,会跳转值 /error 请求进行错误的展现,根据不同的 Content-Type 展现不同的错误结果,如json请求时,直接返回json格式参数。 浏览器访问异常时: 使用 postman 访问时: 统一异常处理 显然,默认的异常页是对用户或者调用者而言都是不友好的,所以一般上我们都会进行实现自己业务的异常提示信息。 创建全局的统一异常处理类 利用 @ControllerAdvice 和 @ExceptionHandler 定义一个统一异常处理类 @ControllerAdvice:控制器增强,使@ExceptionHandler、@InitBinder、@ModelAttribute注解的方法应用到所有的 @RequestMapping注解的方法。 @ExceptionHandler:异常处理器,此注解的作用是当出现其定义的异常时进行处理的方法 创建异常类:CommonExceptionHandler

Spring Boot 2.x基础教程:JSR-303实现请求参数校验

こ雲淡風輕ζ 提交于 2019-11-30 17:58:38
请求参数的校验是很多新手开发非常容易犯错,或存在较多改进点的常见场景。比较常见的问题主要表现在以下几个方面: 仅依靠前端框架解决参数校验,缺失服务端的校验。这种情况常见于需要同时开发前后端的时候,虽然程序的正常使用不会有问题,但是开发者忽略了非正常操作。比如绕过前端程序,直接模拟客户端请求,这时候就会突然在前端预设的各种限制,直击各种数据访问接口,使得我们的系统存在安全隐患。 大量地使用 if/else 语句嵌套实现,校验逻辑晦涩难通,不利于长期维护。 所以,针对上面的问题,建议服务端开发在实现接口的时候,对于请求参数必须要有服务端校验以保障数据安全与稳定的系统运行。同时,对于参数的校验实现需要足够优雅,要满足逻辑易读、易维护的基本特点。 接下来,我们就在本篇教程中详细说说,如何优雅地实现Spring Boot服务端的请求参数校验。 JSR-303 在开始动手实践之前,我们先了解一下接下来我们将使用的一项标准规范:JSR-303 什么是JSR? JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。 JSR-303定义的是什么标准? JSR

Hibernate Validator

瘦欲@ 提交于 2019-11-26 21:52:39
本文主要讲述如何使用hibernate validator来校验入参,避免在业务代码里进行每个接口进行入参校验,提搞代码的简洁及欣赏性。 主要涉及针对接口方法的入参简单校验,不涉及使用group进行的组合校验及其他。 一、POM依赖 <!-- dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.1.Final</version> </dependency --> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.13.Final</version> </dependency> <dependency> <groupId>javax.el</groupId> <artifactId>javax.el-api</artifactId> <version>3.0.1-b06</version> </dependency> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>javax.el<