当前位置: 首页 > news >正文

SpringBoot中如何在服务器进行校验?

数据校验就是数据的合法性检查,在服务器端也可以对数据进行校验,一般使用JSR303 校验

  • JSR303是Java为Bean数据合法性校验提供的标准框架,是一种声明式校验

  • JSR303通过在Bean属性上标注类似于@NotNull、@Max等注解来指定校验规则,并通过标准的验证接口对Bean进行验证

注解功能
@Null必须为null
@NotNull不能为null
@NotBlank字符串不能为null,且长度大于 0,会去掉前后空格
@Max(value)数字必须小于等于指定值
@Min(value)数字必须大于等于指定值
@Size(min,max)长度必须在指定的范围内(可以是字符串、数组、集合等)
@Past时间必须是过去的时间
@Future时间必须是将来的时间
@Pattern必须符合指定的正则表达式

JSR303的扩展: Hibernate Validator扩展注解

  • Hibernate Validator是JSR303的一个参考实现,除支持所有标准的校验注解外,它还支持以下的扩展注解

注解功能
@Length(min,max)字符串长度必须在指定范围之间
@NotEmpty字符串不能为空
@Email必须是合法的邮箱
@Range(min,max,message)数值必须在指定的范围内
5.2 基本用法

步骤:

  • 添加依赖

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
  • 在Bean上添加校验注解

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {private Integer id;
​@NotBlank(message = "用户名不能为空")private String username;
​@NotBlank(message = "密码不能为空")@Length(min = 6,max = 12,message = "密码长度必须在6~12之间")private String password;
​@Range(min = 18,max = 30,message = "年龄只能在18~30之间")private int age;
​@NotNull(message = "生日不能为空")@Past(message = "生日必须是过去的时间")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")@DateTimeFormat(pattern = "yyyy-MM-dd")private Date birthday;
}
  • 在方法形参前添加@Valid注解
@RestController
public class AjaxController {@RequestMapping("/addUser")public String addUser(@Valid User user){ // @Valid 开启对User对象的数据校验System.out.println(user);return "success";}
​
}

相关文章:

  • 基于51单片机的盆栽自动浇花系统
  • STM32F103 标准库介绍及PWM波控制LED亮度
  • CnosDB:深入理解时序数据质量函数
  • MFC GDI 绘图模式、映射模式、画笔、笔、字体
  • 题解:CF859C Pie Rules
  • tcpdump源码分析
  • Python数据分析实验四:数据分析综合应用开发
  • AWS安全性身份和合规性之IAM Identity Center(AWS Single Sign-On)
  • 民国漫画杂志《时代漫画》第13期.PDF
  • AI早班车5.25
  • 【EXCEL_VBA_基础知识】10 使用Dir函数合并多个文件数据
  • python冰雹序列的探索与编程实现
  • Restful API设计与使用:介绍什么是RESTful架构,以及如何在Spring Boot中设计和实现Restful API
  • Mybatis源码剖析---第二讲
  • 【Java面试】一、Redis篇(上)
  • ES6指北【2】—— 箭头函数
  • 2017届校招提前批面试回顾
  • HTTP 简介
  • JavaScript学习总结——原型
  • Nacos系列:Nacos的Java SDK使用
  • OSS Web直传 (文件图片)
  • PHP CLI应用的调试原理
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • React Transition Group -- Transition 组件
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 关于List、List?、ListObject的区别
  • 记录:CentOS7.2配置LNMP环境记录
  • 面试遇到的一些题
  • 强力优化Rancher k8s中国区的使用体验
  • 详解移动APP与web APP的区别
  • 新版博客前端前瞻
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 追踪解析 FutureTask 源码
  • Java总结 - String - 这篇请使劲喷我
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • 数据可视化之下发图实践
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #if 1...#endif
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (2.2w字)前端单元测试之Jest详解篇
  • (39)STM32——FLASH闪存
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (六)激光线扫描-三维重建
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • .gitignore文件—git忽略文件
  • .net 4.0发布后不能正常显示图片问题
  • .NET Core中Emit的使用
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .net对接阿里云CSB服务
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理