JSR303参数校验(2)

本文介绍了如何将JSR303参数校验与Spring的全局异常处理相结合,简化控制器的异常处理。接着讲解了分组校验的概念,用于根据不同场景选择性校验参数。最后,演示了如何自定义校验规则,包括创建自定义注解、实现ConstraintValidator接口,并提供示例测试。
摘要由CSDN通过智能技术生成

前言:之前咱们讲解了什么是JSR303,并且使用他的实现Hibernate Validator做了简单的参数校验,并且通过BindingResult获取到了出现异常的信息并返回给了前端,这样大大简化了参数校验的操作。

全局异常处理+参数校验

虽然说前文讲解的参数校验已经简化了很多我们的操作,但是我们是否可以把Hibernate Validator和Spring提供的全局异常处理结合一下呢?把我们的参数校验出现的错误都集中到一个地方处理,这样我们就不需要在每个类都返回异常信息。Controller层只要抛出参数异常即可,剩下都交给我们的全局异常类来处理。下面上代码:
在这里插入图片描述

首先@RestControllerAdvice和@ExceptionHandler就是全局异常处理的两个重要注解,一个是标注这个类是 异常处理类,一个是标注这个方法可以处理那些异常。然后从异常中拿出异常信息存放在message中即可,当然也可以放在data中,但是data一般都是返回的数据,避免二义性所以我放在了message中。
在这里插入图片描述

然后在Controller层加上@Validated即可。


下面我们测试一下吧:
首先先传一个年龄超了120的非法数据,结果如下
在这里插入图片描述
然后再来一个用户名没传的
在这里插入图片描述

分组校验

接下来我们看一下分组的参数校验,顾名思义就是将参数校验分组。假如说我们在新增用户的时候我们需要对用户名进行非空校验,对密码进行非空白校验,在修改的时候也需要对密码进行非空白校验,那这个时候我们就可以使用分组校验。当然这里随便举了个例子,读者具体问题具体分析。那么我们暂时有两种解决方案(1)写两个类来分别处理(2)分组校验,下面上代码:

public interface EditOperate {
   
}
public interface InsertOperate {
   
}

定义两个接口或者类,主要就是用来给校验分组,没有啥特殊意义

    // 仅在新增时验证
    @NotNull(message = "不能为空", groups = {
   InsertOperate.class})
    private String username;

    // 在新增和修改时验证
    @NotBlank(message = "不能为空", groups = {
   InsertOperate.class, EditOperate.
最低0.47元/天 解锁文章
【Hibernate-validator+SpringMVC】后台参数校验框架
fxbar的博客
09-03 424
hibernate-validator+SpringMVC 简介:简单说,就是对Entity进行校验。 1、导包,没有很严谨的对应关系,所以我用了比较新的版本,支持更多的注解。 org.hibernate.validator hibernate-validator 6.0.5.Final org.hibernate.validator hibernate-validator-cdi 6.0....
JSR303参数校验
cao_2000的博客
12-28 2401
1、Spring mvc 的表单验证 客户端表单验证:代码写在js上,容易被攻击。 服务端表单验证 :不容易被攻击,它是在后台进行验证就不会被人恶意攻击,不容易被人随意登陆其他的信息或者窃取他人信息。 如果使用需要JSR303 ,就要导入hibernate-validator依赖 <dependency> <groupId>org.hibernate</g...
json
qq_43330631的博客
09-19 174
添加jackson相关依赖 com.fasterxml.jackson.core jackson-databind 2.9.3 com.fasterxml.jackson.core jackson-core 2.9.3 com.fasterxml.jackson.core jackson-annotations 2.9.3 在springmvc-servlet.xml的mvc:...
JSR303数据效验
weixin_55436912的博客
03-28 96
JSR303数据效验 SR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。 作者:谁在烽烟彼岸 链接:https://www.jianshu.com/p/554533f88370 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 ..
JSR303 参数校验
Java 领域技术分享
04-14 1187
什么是JSR303 参数校验JSR303 是一套 JavaBean 参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们 JavaBean 的属性上面,就是类里面的字段上面,就可以在需要校验的时候进行校验了。 怎么使用JSR303? 导入 validation 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-st
SpringBoot-JSR303数据校验(1)
2401_84048895的博客
04-17 761
对比我的面经和其他大佬的面经,自己真的是运气好。@Digits(integer=,fraction=) 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。@DecimalMax 被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度。@DecimalMin 被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度。
JSR303自定义参数校验-校验类型罗列
12-21
它提供了一系列内置的验证注解,如`@NotNull`、`@Length`等,但有时候这些预定义的注解无法满足所有业务需求,因此需要自定义参数校验。 **1. 为什么需要自定义参数校验?** 在实际开发中,业务场景千变万化,JSR...
Springboot集成JSR303参数校验的方法实现
10-16
Spring Boot集成JSR303参数校验的方法实现涉及了Java参数校验的标准规范,即JSR303(Bean Validation)规范,该规范通过在Java对象属性上添加注解来实现数据校验的约束定义。这种方式能够将校验逻辑与业务逻辑分离...
服务端JSR303参数校验md,学习代码
最新发布
06-21
【标题】"服务端JSR303参数校验md,学习代码"涉及的主要知识点是服务端参数验证,这是Java后端开发中的一个重要环节,确保输入数据的有效性和安全性。JSR303Java Bean Validation)是Java平台的一个标准,用于进行...
spring boot项目标签管理+分类管理
jigsaw6213的博客
07-28 334
1 分类管理 表现层设计如下 @Controller @RequestMapping("/admin") public class TypeController { @Autowired TypeService typeService; @GetMapping("/types") public String types(@PageableDefault(size = 5, sort = {"id"}, direction = Sort.Direction.DESC) Pa
JSR303的基本使用
azimiao
03-21 2201
1.关于JSR-303 JSR-303规范(Bean Validation规范)提供了对 Java EE 和 Java SE 中的 Java Bean 进行验证的方式。该规范主要使用注解的方式来实现对 Java Bean 的验证功能 。 Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。 官方文档 Bean Validation 中内置的 constraint 约束注解名称 ** 约束注解说明*
数据校验_JSR303
m0_64267605的博客
06-21 335
JSR303Java为Bean数据合法性校验提供给的标准框架,已经包含在 JavaEE6.0中,JSR303通过在Bean 属性中标注类似 @NotNull @Max 等标准的注解指定校验规则,并通过标准的验证接口对 Bean进行验证。@Null 被注释的元素必须为 null @NotNull 被注释的元素必须不为 null @AssertTrue 被注释的元素必须为 true @AssertFalse 被注释的元素必须为 false @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指
JSR303校验注解的使用 和 自定义校验注解
热门推荐
诗水人间
07-02 12万+
引入validation依赖 <!--JSR303依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> /*Null检查 @Null(message = "") 验证对象是否为null
SpringMVC 使用JSR-303进行校验 @Valid
WuTing的专栏
07-26 1434
使用注解一、准备校验时使用的JARvalidation-api-1.0.0.GA.jar:JDK的接口;hibernate-validator-4.2.0.Final.jar是对上述接口的实现;log4j、slf4j、slf4j-log4j二、编写需要校验的bean@NotNull(message="名字不能为空") private String userName; @Max(value=120,m
JSR303参数校验规范
qq_25578995的博客
02-14 219
前端虽然可以对输入的内容进行约束,但若是使用测试工具类 比如:postman ,依然可以任意输入各种数据,如果后端拿到数据后不进行校验,容易被钻空子。在controller接受参数之前 添加@Validated(value = {xxxGroup.class})这个xxxGroup.class是自己编写的接口类 空接口即可。使用JSR303参数校验规范步骤。在实体类的字段上 标注需要的注解。在实体类的字段上添加自定义注解。比如id字段不能为空。2.使用注解开启校验功能。使用注解开启校验功能。
JSR-303后端效验+前端效验及正则表达式和双form表单的使用教程【实战超详细】
萌小崔的博客
11-02 2725
正则表达式 前言 正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 普通字符 普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。 字符 描述 [ABC] 匹配[...]内所有字符 [^ABC] 匹配除了 [...] 中字符的所有字符 [A-
spring mvc 关于@valid
wsbg54的博客
08-14 749
使用注解一、准备校验时使用的JARvalidation-api-1.0.0.GA.jar:JDK的接口;hibernate-validator-4.2.0.Final.jar是对上述接口的实现;log4j、slf4j、slf4j-log4j二、编写需要校验的bean@NotNull(message=”名字不能为空”) private String userName; @Max(value=120
Spring Boot使用 Hibernate-Validator校验参数时的长度校验
weixin_46254692的博客
02-09 6769
区分参数长度校验的三个注解
Spring mvc参数校验
zhaomengxia123的博客
10-21 705
/** * Bean Validation 中内置的 constraint * @Null 被注释的元素必须为 null * @NotNull 被注释的元素必须不为 null * @AssertTrue 被注释的元素必须为 true * @AssertFalse 被注释的元素必须为 false ...
Java JSR303数据校验与自定义注解实战教程
"Java使用JSR303进行数据校验和自定义校验注解的教程" 在Java开发中,数据校验是一项关键任务,它确保了输入数据的准确性和完整性。JSR303Java Bean Validation)提供了一种标准的方法来处理这些验证,而...
写文章

热门文章

  • IDEA插件推荐:Material Theme UI(把IDEA变得更加美观) 24998
  • Vue2-父子组件传值 5941
  • Vue学习笔记(2)前后端接口调用 3418
  • Mybatis-Plus(二)进阶篇 2949
  • Git入门教程(上传图片) 1648

分类专栏

  • 后端 2篇
  • 前端 1篇
  • Java基础 7篇
  • Spring框架
  • JVM
  • Redis 1篇
  • 其他 2篇
  • 学习笔记 2篇

最新评论

  • IDEA插件推荐:Material Theme UI(把IDEA变得更加美观)

    程序员小赵OvO: 表情包

  • IDEA插件推荐:Material Theme UI(把IDEA变得更加美观)

    石宗昊: 收费了

  • Vue学习笔记(1)vue基础

    ctotalk: 坚持。

  • 日常写博客流程(阿里云OOS+PicGo+QQ截图+Typora)

    晴天lov: 那没网络你不就看不了了。。。

  • Vue学习笔记(2)前后端接口调用

    程序员小赵OvO: 一起加油鸭表情包表情包

最新文章

  • Mybatis-Plus(二)进阶篇
  • Mybatis-Plus(一)入门篇
  • Vue2-父子组件传值
2022年14篇
2020年25篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小赵OvO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家玻璃钢鹤雕塑周宁玻璃钢花盆花器毕节商场美陈道具设计浙江中庭商场美陈研发公司南京玻璃钢雕塑摆件定制九台区玻璃钢雕塑工程产品介绍南京商业广场玻璃钢卡通雕塑鼓楼百货商场美陈湖北高质量玻璃钢雕塑多少钱芜湖玻璃钢马雕塑设计玻璃钢魔方体雕塑图片商场床品美陈威海玻璃钢雕塑厂家供应湖北城市雕塑玻璃钢玻璃钢艺术雕塑专卖店山东玻璃钢鹿动物雕塑多少钱玻璃钢圣诞老人雕塑南京广场玻璃钢雕塑公司深圳玻璃钢雕塑动物濮阳校园玻璃钢雕塑玻璃钢花盆制作方法商场美陈方案dp点玻璃钢雕塑培训班浙江玻璃钢雕塑厂招聘均安玻璃钢人物雕塑价格实惠厦门玻璃钢雕塑的制作商场女装柜组美陈布置玻璃钢熊出没雕塑福建户外商场美陈现价江西动物玻璃钢雕塑订做价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化