springboot集成validation校验包案例

SpringBoot使用Validation校验参数 JSR(Java Specification Requests)是Java界的重要标准;JSR又细分很多标准,其中JSR303就代表Bean Validation。更多细节可参考:https://jcp.org/en/jsr/detail?id=303。 目录 准备工作 约束性注解(简单)说明 @Validated的使用时机 @Validated与@Valid的简单对比说明... 阅读详情

首先添加maven依赖,可进行maven仓库。

<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>

其次,可以直接再实体类的校验字段上添加注解,部分注解如下:

public class Person{
        @NotNull(message = "字段值不能为空")
        private String name;
        @NotNull
        private String sex;
        @Max(value = 20,message = "最大长度为20")
        private String address;
        @NotNull
        @Size(max=10,min=5,message = "字段长度要在5-10之间")
        private String fileName;
        @Pattern(regexp = "^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.[a-zA-Z0-9]{2,6}$",message = "不满足邮箱正则表达式")
        private String email;
        @AssertTrue(message = "字段为true才能通过")
        private boolean isSave;
        @Future(message = "时间在当前时间之后才可以通过")
        private Date date;
 
}

小结并相关说明:

@AssertFalse 被注解的元素必须为false
@AssertTrue 被注解的元素必须为True
@DecimalMax(value) 被注解的元素必须为一个数字,其值必须小于等于指定的最小值
@DecimalMin(Value) 被注解的元素必须为一个数字,其值必须大于等于指定的最小值
@Digits(integer=, fraction=) 被注解的元素必须为一个数字,其值必须在可接受的范围内
@Future 被注解的元素必须是日期,检查给定的日期是否比现在晚.
@Max(value) 被注解的元素必须为一个数字,其值必须小于等于指定的最小值,检查该值是否小于或等于约束条件中指定的最大值. 会给对应的数据库表字段添加一个 check的约束条件.
@Min   BigDecimal,BigInteger, byte,short, int, long,等任何Number或CharSequence(存储的是数字)子类型     验证注解的元素值大于等于@Min指定的value值
@NotNull 被注解的元素必须不为null
@Null 被注解的元素必须为null
@Past(java.util.Date/Calendar); 被注解的元素必须过去的日期,检查标注对象中的值表示的日期比当前早.
@Pattern(regex=, flag=) 被注解的元素必须符合正则表达式,检查该字符串是否能够在match指定的情况下被regex定义的正则表达式匹配.
@Size(min=, max=) 被注解的元素必须在制定的范围(数据类型:String, Collection, Map and arrays)
@Valid 递归的对关联对象进行校验, 如果关联对象是个集合或者数组, 那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.
@CreditCardNumber 对信用卡号进行一个大致的验证
@Email 被注释的元素必须是电子油箱地址
@NotEmpty 被注释的对象必须为空(数据:String,Collection,Map,arrays)
@Range(min=, max=) 被注释的元素必须在合适的范围内 (数据:BigDecimal, BigInteger, String, byte, short, int, long and 原始类型的包装类 )
@SafeHtml(whitelistType=, additionalTags=)被注解的元素检查是否标注值包含恶意的片段如
@ScriptAssert(lang=, script=, alias=) 任何类型,要使用这个约束条件,必须先要保证Java Scripting API 即JSR 223 ("Scripting for the JavaTM Platform")的实现 在类路径当中. 如果使用的时Java 6的话,则不是问题, 如果是老版本的话, 那么需要把 JSR 223的实现添加进类路径. 这个约束条件中的表达式可以使用任何兼容JSR 223的脚本来编写. (更多信息请参考javadoc)
@URL(protocol=, host=, port=, regexp=, flags=) 被注解的对象必须是字符串,检查是否是一个有效的URL,如果提供了protocol,host等,则该URL还需满足提供 的条件
@Length(min=下限, max=上限)     CharSequence子类型     验证注解的元素值长度在min和max区间内
@NotBlank     CharSequence子类型     验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的首位空格
@FutureOrPresent
@Negative
@NegativeOrZero
@PastOrPresent
@Positive 输入的数字必须是正数
@PositiveOrZero 输入的数字必须是正数包括0
@CreditCardNumber(ignoreNonDigitCharacters=)
@Currency(value=)
@DurationMax(days=, hours=, minutes=, seconds=, millis=, nanos=,inclusive=)
@DurationMin(days=, hours=, minutes=, seconds=, millis=, nanos=,inclusive=)
@EAN
@ISBN

@ValidPart  
Set<@ValidPart String> parts = new HashSet<>()

@MaxAllowedFuelConsumption    
Map<@NotNull FuelConsumption, @MaxAllowedFuelConsumption Integer> fuelConsumption = new HashMap<>();

@MinTowingCapacity(1000)        
private Optional<@MinTowingCapacity(1000) Integer> towingCapacity =Optional.empty();

最后还需要在Controller层使用@Validated进行验证

例如:

@RequestMapping("file/upload")
public void upload(@RequestPart("files") MultipartFile files, @Validated Person peroson, Errors error) throws IOException {
       if(error.hasErrors()){
           return;
       }
       files.transferTo(new File(files.getOriginalFilename()));
}

validation校验包常用校验注解@NotEmpty,@NotBlank,@NotNull等注解 阅读详情

相关推荐

SpringBoot如何利用Validation包实现高效参数校验?

有时候内置的校验规则不能满足我们的需求。这时我们可以创建自定义校验注解。比如我们要校验手机号格式:String message() default "手机号格式不正确";Class<?Class<?@Override。

程序员总部的博客 590

validation java包_软件包 javax.xml.validation 的描述

软件包 javax.xml.validation此包提供了用于 XML 文档验证的 API。请参见:描述软件包 javax.xml.validation 的描述此包提供了用于 XML 文档验证的 API。Validation 是验证 XML 文档是否为指定 XML schema 的实例的过程。XML 模式定义了其实例文档将表示的内容模式(也称为 grammar 或 vocabulary)。有多种流...

weixin_31614747的博客 424

idea+maven+SpringMVC注解开发validation校验

前言: 在一个运行的web系统中,一定少不了校验的环节,所以自然而然衍生出了很多校验框架,这里我就来简单介绍一种Bean validation 的校验框架,是基于Hibernate的。 我的demo栗子已经放到git上了:网上的都是讲解,不如一个实实在在的栗子来的直接 https://github.com/jjc123/Validation_Demo 参考: https://www.jiansh...

qq_38409944的博客 2031

Maven 项目查找 jar 包是由哪个依赖引入的

文章目录1. 命令格式2. 使用示例 1. 命令格式 mvn dependency:tree -Dverbose -Dincludes=要查询的内容 dependency:tree:表示树状显示。 -Dverbose:表示可以显示所有的引用,包括因为多次引用重复而忽略的。 -Dincludes:可以制定查询条件 2. 使用示例 比如想要查找下图中的这个jakarta.validation-api-2.0.2.jar是由pom.xml中哪个配置引入的,可以这样做: 首先可以在上图中看出来该jar包所

一线大码 1万+

SpringBoot中集成参数校验Validation

为了提供可靠的API接口,对参数进行校验,保证数据入库的正确性,同事通过添加注释使用Validation规范避免写一大堆的if -else的校验语句。使代码更加简单清晰。

码农从0到1 1473

SpringBoot使用validation数据校验

1. 前言   简述JSR303/JSR-349,hibernate validation,spring validation之间的关系。JSR303是一项标准,JSR-349是其的升级版本,添加了一些新特性,他们规定一些校验规范即校验注解,如@Null,@NotNull,@Pattern,他们位于javax.validation.constraints包下,只提供规范不提供实现。而hibern...

睁眼看世界 1万+

09.SpringBoot集成Validation做参数校验详解

Validation(数据校验)是指对输入数据进行有效性检查的过程。在Web应用中,这包括对用户提交的表单数据、API请求参数、方法参数等进行校验,确保数据符合业务规则和格式要求。形象比喻: 想象Validation就像机场安检:JSR-303(Bean Validation 1.0)和JSR-380(Bean Validation 2.0)是Java官方的数据校验规范,定义了一套标准的校验注解和API。在SpringBoot 2.3之前,包含了Validation依赖。在2.3之后需要手动添加: 2.2

yk_dflkg的博客 1095

【SpringBoot】Spring Validation 分组校验

Spring自己有提供对Validation的支持,具体使用方法参见: https://blog.youkuaiyun.com/mzh_cn/article/details/80637015 这篇文章主要用于记录Spring Validation的分组校验。 在实际开发中,难免遇到对一个实体类的一些属性,不同的请求会有不同的校验规则的场景,比如: 用户注册时,User类的id需校验为空,因为Us...

ABIGJUN的博客 8296

粉丝说SpringBoot集成validation校验参数有坑,我试了试

公众号中分享了一篇文章,关于SpringBoot集成validation校验参数的,粉丝留言说有坑。 原留言如下: 有坑,你试试^A-\\d{12}-\\d{4}$,这条正则经过validate这个方法无论参数写的对不对都会报验证错误,而用main方法测试是正常的。。 话说,针对这种回复我是不太信了,直觉告诉我,肯定是这位粉丝用错了。但既然粉丝有疑问还是需要专门写一个demo来验证一下的。说写就写。 SpringBoot集成validation 集成过程非常简单,在原项目的pom文件中直接引入如下依赖: &

程序新视界 7119

JAVA:Spring Boot 集成 Validation 参数校验

本文介绍了Spring Boot中基于Bean Validation的参数校验机制。通过注解方式可以优雅地实现各种校验规则,包括非空、长度、格式等常见验证。文章详细展示了基础DTO校验、统一异常处理、GET参数校验、分组校验、自定义注解和嵌套对象校验等典型应用场景,并强调了校验规范对代码质量的重要性。Spring Boot Validation能有效减少冗余校验代码,提高开发效率,是Web项目必备的基础能力。最佳实践建议将校验写在DTO层,保持业务逻辑清晰,并通过统一异常处理返回友好错误信息。

木头 276

DRV2605L触觉驱动芯片实战指南:从自动校准到音频转触觉应用

触觉反馈技术是现代人机交互的核心组成部分,它通过精确控制振动马达来模拟物理触感,广泛应用于智能手机、游戏手柄和汽车触摸屏等领域。其原理在于将电信号转化为机械振动,关键在于如何高效、精准地驱动不同类型的马达(如ERM和LRA)。这项技术的核心价值在于提升交互的真实感和沉浸感。在工程实践中,集成驱动芯片如DRV2605L通过内置智能反馈引擎和自动校准功能,解决了传统驱动方式响应慢、效果不一致的难题。它特别适用于需要高质量触觉反馈的应用场景,例如消费电子、游戏外设和车载信息娱乐系统。其中,自动校准能自适应优化驱动

weixin_42631411的博客 341

SpringBoot的validation参数校验

采用 validation来对参数进行校验简化代码。

qq_42211536的博客 3771

TC275-AutoSAR实战:Davinci Cfg多核OS配置与调试技巧

本文详细介绍了在TC275芯片上使用Davinci Cfg工具进行AutoSAR多核操作系统配置的实战步骤与调试技巧。内容涵盖从导入arxml文件的常见“坑”开始,到配置Det、EcuC、创建多核OS实例、关联OS应用、创建任务与设置优先级调度,最后分享了利用Det日志、调试器多核视图及处理核间通信与缓存一致性等关键调试方法,旨在帮助开发者高效完成复杂车载ECU软件集成。

weixin_29219189的博客 488

SpringBoot怎么使用Validation校验参数,看完你就会了@

1. Validation 介绍 Validation 是用于检查程序代码中参数的有效性的框架,作为 Spring 框架中的一个参数校验工具,集成在 spring-context 包中。 1.1 Validation 注解 Validation 包含了众多的注解来帮助对Java程序不同类型的参数进行校验,校验相关注解分布在spring-boot-starter-validation 依赖的 javax.validation.constraints 包中。 @Null/@NotnULL,标注的字段必须

m0_49496327的博客 8469

世界模型和大语言模型结合开发自动驾驶算法

摘要:自动驾驶系统开发中,融合世界模型和大语言模型可显著提升效率和安全性。世界模型负责环境感知与预测(如目标检测、轨迹预测),而大语言模型优化代码生成、决策解释等环节。实施路径包括需求分析(1-2周)、模型开发(2-4个月)、模拟测试(1-2个月)、实车测试(2-3个月)和合规优化(1-2个月),总周期6-12个月。关键技术工具包括PyTorch/TensorFlow、CARLA模拟器和ROS系统,核心设计理念强调模块化、安全优先和敏捷迭代。示例代码展示了YOLO目标检测与大语言模型决策建议的集成方案。该方

ponygame的博客 826

Kaggle | 总奖池超200万美金的数学竞赛AIMO2冠军方案

••••结论1:通过结合高质量大规模数据集、工具集成推理和生成式选择方法,可以构建在挑战性数学问题上达到最先进水平的语言模型。本文的方法在 AIMO-2 竞赛中的胜利以及在多个数学基准上的 SOTA 结果验证了这一策略的有效性。结论2:发布 OpenMathReasoning 数据集、OpenMath-Nemotron 模型和代码是社区的宝贵财富。

hxshine的博客 1194

第18章 SpringBoot集成Validation校验

SpringBoot学习笔记

richieandndsc的博客 1457

Imagenet数据集1000类别中英文

英文 {0: 'tench, Tinca tinca', 1: 'goldfish, Carassius auratus', 2: 'great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias', 3: 'tiger shark, Galeocerdo cuvieri', 4: 'hammerhead, hammerhead shark', 5: 'electric ray, cram.

识物专栏 1800

SpringBoot整合validation数据校验

数据校验自定义注解/*** 自定义xss校验注解*/default "不允许任何脚本运行";Class

hello,word! 1938

反应动力学仿真软件:CHEMKIN_(12).CHEMKIN与其他软件的接口

通过上述介绍,我们详细探讨了如何将 CHEMKIN 与 MATLAB、Python、COMSOL、Aspen Plus 和 Ansys Fluent 等软件工具进行接口配置和数据交互。这些接口不仅能够显著提升 CHEMKIN 在反应动力学仿真中的应用效果,还能充分利用其他软件工具的强大功能,实现更复杂的数据处理和分析。希望这些内容对您在化学反应动力学仿真中的工作有所帮助。

kkchenjj的博客 1137

【国产MCU系列】-GD32F4开发环境搭建(基于Embedded Builder)

GD32F4系列MCU采用Arm® Cortex®-M4内核,处理器主频高达240MHz,可支持算法复杂度更高的嵌入式应用,具备更快速的实时处理能力,并拥有业界领先的大容量存储优势。

视觉与物联智能 3078

【SpringBoot框架篇】26.集成spring-boot-starter-validation对接口参数校验

文章目录1.常规验证2.使用validation验证2.1.添加依赖2.2.常用注解2.3.在pojo类中添加需要使用的注解2.4.在接口入参处添加@Valid2.5.添加全局异常处理类返回校验错位提示信息 1.常规验证 以下面的登录接口为例,需要手动去验证参数是否存在,这种写法繁琐且不太优雅。 @RestController public class LoginController { @RequestMapping("/login") public String test(@Reque

皓亮君的博客 2582

华为OD面试手撕真题 【合并相邻且相等的元素】多语言题解

华为OD面试高频手撕真题【合并相邻且相等的元素】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。

qq_45776114的博客 544

SpringBoot 使用 Validation 进行参数校验及统一校验异常返回

SpringBoot 使用 Validation 进行参数校验及统一校验异常返回

zwl2220943286的博客 2139

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SpringBoot参数校验

SpringBoot自带了validation工具可以从后端对前端传来的参数进行校验,用法如下:首先得添加依赖-- 参数校验 -->

qq_53317005的博客 9185

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: Java8新特性Stream用法
下一篇: Java8-Lambda学习笔记
splendor.s
博客等级 码龄10年 91粉丝 67原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值