springmvc 参数校验
在 Web 应用三层架构体系中表述层负责接收浏览器提交的数据我们需要在表述层对数据进行检查将错误的数据隔绝在业务逻辑层之外。校验概述JSR 303 是 Java 为 Bean 数据合法性校验提供的标准框架它已经包含在 JavaEE 6.0 标准中。JSR 303 通过在 Bean 属性上标注类似于 NotNull、Max 等标准的注解指定校验规则并通过标准的验证接口对Bean进行验证。注解规则Null标注值必须为 nullNotNull标注值不可为 nullAssertTrue标注值必须为 trueAssertFalse标注值必须为 falseMin(value)标注值必须大于或等于 valueMax(value)标注值必须小于或等于 valueDecimalMin(value)标注值必须大于或等于 valueDecimalMax(value)标注值必须小于或等于 valueSize(max,min)标注值大小必须在 max 和 min 限定的范围内Digits(integer,fratction)标注值值必须是一个数字且必须在可接受的范围内Past标注值只能用于日期型且必须是过去的日期Future标注值只能用于日期型且必须是将来的日期Pattern(value)标注值必须符合指定的正则表达式JSR 303 只是一套标准需要提供其实现才可以使用。Hibernate Validator 是 JSR 303 的一个参考实现除支持所有标准的校验注解外它还支持以下的扩展注解注解规则Email标注值必须是格式正确的 Email 地址Length标注值字符串大小必须在指定的范围内NotEmpty标注值字符串不能是空字符串Range标注值必须在指定的范围内Spring 4.0 版本已经拥有自己独立的数据校验框架同时支持 JSR 303 标准的校验框架。Spring 在进行数据绑定时可同时调用校验框架完成数据校验工作。在SpringMVC 中可直接通过注解驱动EnableWebMvc的方式进行数据校验。Spring 的 LocalValidatorFactoryBean 既实现了 Spring 的 Validator 接口也实现了 JSR 303 的 Validator 接口。只要在Spring容器中定义了一个LocalValidatorFactoryBean即可将其注入到需要数据校验的 Bean中。Spring本身并没有提供JSR 303的实现所以必须将JSR 303的实现者的jar包放到类路径下。配置 EnableWebMvc后SpringMVC 会默认装配好一个 LocalValidatorFactoryBean通过在处理方法的入参上标注 Validated 注解即可让 SpringMVC 在完成数据绑定后执行数据校验的工作。需要的依赖!-- 校验注解 --dependencygroupIdjakarta.platform/groupIdartifactIdjakarta.jakartaee-web-api/artifactIdversion9.1.0/versionscopeprovided/scope/dependency!-- 校验注解实现--!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator --dependencygroupIdorg.hibernate.validator/groupIdartifactIdhibernate-validator/artifactIdversion8.0.0.Final/version/dependency!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator-annotation-processor --dependencygroupIdorg.hibernate.validator/groupIdartifactIdhibernate-validator-annotation-processor/artifactIdversion8.0.0.Final/version/dependency实体类packagecom.cool.pojo;importjakarta.validation.constraints.Email;importjakarta.validation.constraints.Min;importjakarta.validation.constraints.NotBlank;importjakarta.validation.constraints.Past;importlombok.Data;importorg.hibernate.validator.constraints.Length;importjava.util.Date;/** * name不为null、不为空字符串 * 字符串不为空NotBlank * 集合不为空NotEmpty * 包装类型不为空NotNull * * password长度大于6 */DatapublicclassUser{NotBlankprivateStringname;Length(min6,max20)privateStringpassword;Min(1)privateintage;EmailprivateStringemail;PastprivateDatebirthday;}controllerpackagecom.cool.controller;importcom.cool.pojo.User;importorg.springframework.validation.BindingResult;importorg.springframework.validation.annotation.Validated;importorg.springframework.web.bind.annotation.*;importjava.util.HashMap;importjava.util.Map;RestControllerRequestMapping(user)publicclassUserController{/** * 步骤1实体类属性添加校验注解 * 步骤2handler(Validated 实体类对象){} * 细节 * param、json 校验注解都有效果 * 只不过json参数的话需要用 RequestBody 修饰形参哦 * * 这里有个天坑如果不符合校验规则会直接向前端抛出异常 * 解决办法 * handler(Validated 实体类对象, BindingResult request){} * 多加一个 BindingResult request 参数 * 此参数必须紧挨着 Validated 实体类对象否则此参数不管用 */PostMapping(register)publicObjectregister(ValidatedRequestBodyUseruser,BindingResultresult){System.out.println(user user);if(result.hasErrors()){// 有错误的话就不直接返回给前端了可以在这里自定义内容返回给前端MapdatanewHashMap();data.put(code,400);data.put(msg,参数校验异常);returndata;}returnuser;}}

相关新闻

基于spring+vue的校园勤工俭学平台[spring]-计算机毕业设计源码+LW文档

基于spring+vue的校园勤工俭学平台[spring]-计算机毕业设计源码+LW文档

摘要:校园勤工俭学作为学生参与社会实践、提升自身能力的重要途径,在高校中广泛开展。为了提高校园勤工俭学管理的效率和透明度,本文设计并实现了基于SpringVue的校园勤工俭学平台。该平台利用Spring框架构建稳定可靠的后端服务,采…

2026/7/9 7:06:01 阅读更多 →
计算机毕业设计springboot飞羽羽毛球俱乐部管理系统 基于SpringBoot的羽球馆综合运营平台 SpringBoot驱动的羽毛球会所活动与场地预约系统

计算机毕业设计springboot飞羽羽毛球俱乐部管理系统 基于SpringBoot的羽球馆综合运营平台 SpringBoot驱动的羽毛球会所活动与场地预约系统

计算机毕业设计springboot飞羽羽毛球俱乐部管理系统(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。羽毛球馆每天高峰期都要接几十通电话预约场地,纸质登记本翻来翻去…

2026/7/9 3:57:35 阅读更多 →
计算机毕业设计springboot飞机票预定系统 基于SpringBoot的航班在线预订平台 SpringBoot驱动的民航电子客票销售系统

计算机毕业设计springboot飞机票预定系统 基于SpringBoot的航班在线预订平台 SpringBoot驱动的民航电子客票销售系统

计算机毕业设计springboot飞机票预定系统(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。春运、暑运、黄金周,机票查询量瞬间爆炸,电话占线、窗口排队、代…

2026/7/9 5:30:06 阅读更多 →

最新新闻

大数据毕设选题推荐:基于 Hadoop 的零食电商销售数据挖掘系统的设计与实现 基于 Django 的零食市场销售趋势可视化系统【附源码、mysql、文档、调试+代码讲解+全bao等】

大数据毕设选题推荐:基于 Hadoop 的零食电商销售数据挖掘系统的设计与实现 基于 Django 的零食市场销售趋势可视化系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/9 7:05:45 阅读更多 →
RPG Maker解密工具:轻松解锁加密游戏资源,开启二次创作之旅

RPG Maker解密工具:轻松解锁加密游戏资源,开启二次创作之旅

RPG Maker解密工具:轻松解锁加密游戏资源,开启二次创作之旅 【免费下载链接】RPGMakerDecrypter Tool for decrypting and extracting RPG Maker XP, VX and VX Ace encrypted archives and MV and MZ encrypted files. 项目地址: https://gitcode.com…

2026/7/9 7:05:45 阅读更多 →
2026 Web 渗透测试全流程实战:从 0 到 1 拿下高分|合规 + 闭环 + 可复现

2026 Web 渗透测试全流程实战:从 0 到 1 拿下高分|合规 + 闭环 + 可复现

Web 渗透测试不是 “工具跑一遍”,而是在合法授权下,以攻击者视角完整复现攻击链,输出可落地修复方案的安全评估工程。一篇高分博文 / 报告必须满足: ✅ 流程闭环:准备→信息收集→探测→利用→提权→清理→报告 ✅ 可…

2026/7/9 7:05:45 阅读更多 →
企业级融媒体平台EasyDSS:培训视频不存档,直播点播全上场,预算花出复利感

企业级融媒体平台EasyDSS:培训视频不存档,直播点播全上场,预算花出复利感

每年投入几十万做企业培训,结果课程录完没人看、新人入职重复讲、员工学习效果看不见。EasyDSS用直播让培训一步触达全员,用点播把知识沉淀为永久资产,用数据让培训效果一目了然。 一、培训部门的"三大痛" 做过企业培训的人都知道…

2026/7/9 7:03:45 阅读更多 →
携号转网查询能力综合评估:2026主流方案数据源实时性、识别准确率与响应速度梯队解读

携号转网查询能力综合评估:2026主流方案数据源实时性、识别准确率与响应速度梯队解读

携号转网的市场渗透与企业盲区 截至2026年第二季度,全国携号转网用户总量已突破1.2亿,占移动通信用户总数的比例逼近8%。这个数字放在五年前几乎难以想象——彼时携号转网刚刚结束试点、推向全国,不少业内人士对用户转网意愿持观望态度。如今…

2026/7/9 7:03:45 阅读更多 →
Browser-use:基于AI的浏览器自动化智能体实战指南

Browser-use:基于AI的浏览器自动化智能体实战指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 如果你最近在 GitHub 上看到过“Open Interpreter”或者“01 Light”这些项目,可能会好奇它们到底能做什么。简单来说&…

2026/7/9 7:03:45 阅读更多 →

日新闻

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 还在为Foobar2000找不到高质…

2026/7/9 0:01:04 阅读更多 →
ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook 你是否曾经为学术书籍的封面设计而烦恼?想要一个既专业又美观的封…

2026/7/9 0:03:06 阅读更多 →
如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南 【免费下载链接】pyodbc Python ODBC bridge 项目地址: https://gitcode.com/gh_mirrors/py/pyodbc 在当今数据驱动的商业环境中,企业级数据库连接已成为现代应用开发的核心需求。pyodbc作为一款强大…

2026/7/9 0:07:11 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/8 16:59:55 阅读更多 →

月新闻