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/3 18:52:26 阅读更多 →
计算机毕业设计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 阅读更多 →

最新新闻

你的LLM应用正在 silently fail?GPT-5的tool-calling容错率为83.1%,Claude Fable 5达96.4%——27个生产环境故障案例归因分析(限首批读者下载)

你的LLM应用正在 silently fail?GPT-5的tool-calling容错率为83.1%,Claude Fable 5达96.4%——27个生产环境故障案例归因分析(限首批读者下载)

更多请点击: https://intelliparadigm.com 第一章:你的LLM应用正在 silently fail? 当用户输入“帮我写一封辞职信”,模型却返回一段无关的 Python 代码;当客服对话系统在高并发下响应延迟飙升至 8 秒,日志…

2026/7/9 6:17:29 阅读更多 →
计算机毕业设计之面向智慧校园社区的班级管理系统

计算机毕业设计之面向智慧校园社区的班级管理系统

伴随着社会以及科学技术的发展,互联网已经渗透在人们的身边,网络慢慢的变成了人们的生活必不可少的一部分,紧接着网络飞速的发展,管理系统这一名词已不陌生,越来越多的学校、公司等机构都会定制一款属于自己个性化的管…

2026/7/9 6:17:29 阅读更多 →
不受限制的私域沟通工具|海王IM私有化部署解决方案

不受限制的私域沟通工具|海王IM私有化部署解决方案

什么是私有化IM系统定制开发 企业需要一套完全由自己掌控的即时通讯系统时,海王IM私有化部署方案就是答案。私有化IM系统定制开发,指的是将IM软件的源码或核心组件部署在企业自己的服务器上,并根据业务需求进行功能修改、界面定制、系统集成…

2026/7/9 6:15:29 阅读更多 →
粉笔OMO模式解析:线上线下打通,数据闭环怎么玩?

粉笔OMO模式解析:线上线下打通,数据闭环怎么玩?

核心结论:粉笔的OMO(Online-Merge-Offline)模式是公考培训行业"线上技术线下体验"融合的代表性案例。其核心逻辑是:线上承担"内容交付数据采集AI辅助"的功能,线下承担"学习氛围互动答疑模拟实…

2026/7/9 6:13:28 阅读更多 →
学生最常用的AI软件怎么选

学生最常用的AI软件怎么选

学生群体用AI,核心需求很明确:免费额度够用、零基础能上手、中文回答自然、能覆盖学习与创作场景,还能适配课程作业、论文、项目、复习等不同任务。下面从主流AI软件出发,结合学生高频使用场景,聊聊每款工具的真实定位…

2026/7/9 6:07:27 阅读更多 →
2026微信小程序开店找哪家公司,小程序模板数量和质量横向测评

2026微信小程序开店找哪家公司,小程序模板数量和质量横向测评

今天给大家带来2026微信小程序开店找哪家公司,小程序模板数量和质量横向测评。据WeChat Mini Program Development Guide 2025数据显示,截至2024年微信小程序总数已突破430万个,95%的中国企业拥有自己的小程序;腾讯控股2025年财报…

2026/7/9 6:07:27 阅读更多 →

日新闻

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 阅读更多 →

月新闻