参数校验 Spring Validation框架
后端参数校验
解决:校验前端传入的参数是否符合预期
1、引入依赖
使用Spring Validation框架
<!-- validation参数校验框架--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>3.1.4</version></dependency>
2、校验类型
-
直接属性校验
-
对象属性校验
2.1 直接属性校验
在参数接收时,直接使用正则表达式对属性进行限制。
-
控制层添加注解@Validated
-
接口参数接收添加注解@Pattern
2.2 对象属性校验
-
实体类属性校验规则准备
-
接口参数封装 并添加注解@Validated
@RestController
@Validated
public class LoginController{@Autowiredprivate LoginService loginService;// 注册
@PostMapping("/register")
public Result register(@Pattern(regexp = "^\\S{5,16}$") String username, @Pattern(regexp = "^\\S{5,16}$") String password){//逻辑......}
}
实体类
<!-- Lombok 用于类方法--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version></dependency>
UserPO.java
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import java.util.Date;
@Data // 自动生成getter和setter方法,以及toString、equals和hashCode方法
@NoArgsConstructor // 自动生成无参构造函数
@AllArgsConstructor // 自动生成全参构造函数
public class UserPO {@NotNull private Integer id; // ID
@NotEmpty // 值不能为空@Pattern(regexp = "^.{5,16}$") // 长度在5到16之间的非空字符private String username; // 用户名
@NotEmpty // 值不能为空@Pattern(regexp = "^.{5,16}$") // 长度在5到16之间的非空字符private String password; // 密码
@NotEmpty // 值不能为空@Pattern(regexp = "^.{1,10}$") // 长度在1到10之间的非空字符private String nickname; // 昵称
@NotEmpty // 值不能为空@Email // 邮箱格式private String email; // 邮箱
private String userPic; // 头像private Date createTime; // 创建时间private Date updateTime; // 修改时间
}
接口
@PostMapping("/update")public Result update(@RequestBody @Validated UserPO userPO) {userService.update(userPO);return Result.success("完成更新用户");}
统一返回类
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
//统一响应结果
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result<T> {private Integer code;//业务状态码 0-成功 1-失败private String message;//提示信息private T data;//响应数据
//快速返回操作成功响应结果(带响应数据)public static <E> Result<E> success(E data) {return new Result<>(0, "操作成功", data);}
//快速返回操作成功响应结果public static Result success() {return new Result(0, "操作成功", null);}
public static Result error(String message) {return new Result(1, message, null);}
}
相关文章:
参数校验 Spring Validation框架
后端参数校验 解决:校验前端传入的参数是否符合预期 1、引入依赖 使用Spring Validation框架 <!-- validation参数校验框架--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validatio…...
Spring Boot 基础入门指南
Spring Boot 基础入门指南 引言 在当今快速发展的软件行业中,开发者们一直在寻找简化应用程序开发的方法。Spring Boot 应运而生,它旨在帮助开发者快速构建基于Spring框架的应用程序,同时尽可能减少配置工作。本文将带您了解Spring Boot的基…...
doc、pdf转markdown
国外的一个网站可以: Convert A File Word, PDF, JPG Online 这个网站免费的,算是非常厚道了,但是大文件上传多了之后会扛不住 国内的一个网站也不错: TextIn-AI智能文档处理-图像处理技术-大模型加速器-在线免费体验 https://…...
基于 HTML5 Canvas 制作一个精美的 2048 小游戏--day 1
基于 HTML5 Canvas 制作一个精美的 2048 小游戏 在这个快节奏的生活中,简单而富有挑战性的游戏总能给我们带来乐趣。2048 是一款受欢迎的益智游戏,不仅考验智力,还能让人回味无穷。今天,我带领大家将一起学习如何使用 HTML5 Canv…...
知识图谱入门(一)
最近在研究Graph RAG项目,因此对相关内容做个总结,首先从知识图谱开始,供大家参考。 知识图谱是结构化知识表示的一种形式,它将知识组织成一个多关系图,其中节点表示实体,边表示实体之间的关 系。知识图谱…...
springboot项目-基础数据回显
一.基础数据回显说明 微服务项目中由于从服务独立的角度考虑,对数据库做了分库的处理。对于基础数据表来说,各个服务都是需要的。项目中在使用基础数据时,往往是在sql中写连接然后获取基础数据的名称。例: select wi.name,bc.ci…...
LabVIEW实现油浸式变压器自主监测与实时报告
油浸式变压器广泛应用于电力系统中,尤其是在电力传输和分配领域。为了确保变压器的安全、稳定运行,及时监测其工作状态至关重要。传统的变压器监测方法通常依赖人工巡检和定期检查,但这不能及时发现潜在的故障隐患,且效率较低。随…...
K8S 亲和性与反亲和性 深度好文
今天我们来实验 pod 亲和性。官网描述如下: 假设有如下三个节点的 K8S 集群: k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、镜像准备 1.1、镜像拉取 docker pull tomcat:8.5-jre8-alpine docker pull nginx…...
关于php语言api接口开发的流程
确定接口需求:首先明确接口的功能和需求,包括输入参数、输出结果以及接口的业务逻辑。 设计接口路由:根据接口需求,设计具体的接口路由,即URL路径,用于访问接口。 搭建PHP环境:确保你的服务器上…...
医疗集群系统中基于超融合数据库架构的应用与前景探析
一、引言 1.1 研究背景与意义 随着医疗信息化的飞速发展,医疗数据呈爆炸式增长。从日常诊疗记录、患者病历,到各类医疗影像、检查检验数据等,海量信息不断涌现。据统计,医疗数据的年增长率高达 30% 以上 ,2025 年,全球医疗数据量将达到 2314 艾字节(EB)。如此庞大的数…...
浅谈云计算15 | 存储可靠性技术(RAID)
存储可靠性技术 一、存储可靠性需求1.1 数据完整性1.2 数据可用性1.3 故障容错性 二、传统RAID技术剖析2.1 RAID 02.2 RAID 12.3 RAID 52.4 RAID 62.5 RAID 10 三、RAID 2.0技术3.1 RAID 2.0技术原理3.1.1 两层虚拟化管理模式3.1.2 数据分布与重构 3.2 RAID 2.0技术优势3.2.1 自…...
43.Textbox的数据绑定 C#例子 WPF例子
固定最简步骤,包括 XAML: 题头里引入命名空间 标题下面引入类 box和block绑定属性 C#: 通知的类,及对应固定的任务 引入字段 引入属性 属性双触发,其中一个更新block的属性 block>指向box的属性 从Textbo…...
LLM大语言模型的分类
从架构和功能的角度来看,LLM(Large Language Model,大语言模型)主要可以分为以下几种类型: **1. 基础语言模型:** * **定义:** 通过在大规模文本数据上进行预训练,学习语言的规律和模式&#…...
【北京迅为】iTOP-4412全能版使用手册-第八十七章 安装Android Studio
iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、…...
【深度学习】神经网络之Softmax
Softmax 函数是神经网络中常用的一种激活函数,尤其在分类问题中广泛应用。它将一个实数向量转换为概率分布,使得每个输出值都位于 [0, 1] 之间,并且所有输出值的和为 1。这样,Softmax 可以用来表示各类别的预测概率。 Softmax 函…...
容器渗透横向
本质上要获得 1.获得容器IP段 2.获得主机IP段 3.获得本机IP 4.通过CNI或Docker0等扫描本机端口 Flannel 容器信息 rootubuntu-linux-22-04-desktop:/home/parallels/Desktop# k get po -A -o wide NAMESPACE NAME …...
黑马Java面试教程_P1_导学与准备篇
系列博客目录 文章目录 系列博客目录导学Why?举例 准备篇企业是如何筛选简历的(筛选简历的规则)HR如何筛选简历部门负责人筛选简历 简历注意事项简历整体结构个人技能该如何描述项目该如何描述 应届生该如何找到合适的练手项目项目来源找到项目后,如何深入学习项目…...
《自动驾驶与机器人中的SLAM技术》ch4:预积分学
目录 1 预积分的定义 2 预积分的测量模型 ( 预积分的测量值可由 IMU 的测量值积分得到 ) 2.1 旋转部分 2.2 速度部分 2.3 平移部分 2.4 将预积分测量和误差式代回最初的定义式 3 预积分的噪声模型和协方差矩阵 3.1 旋转部分 3.2 速度部分 3.3 平移部分 3.4 噪声项合并 4 零偏的…...
Docker部署MySQL 5.7:持久化数据的实战技巧
在生产环境中使用Docker启动MySQL 5.7时,需要考虑数据持久化、配置文件管理、安全性等多个方面。以下是一个详细的步骤指南。 1. 准备工作 (1)创建挂载目录 在宿主机上创建用于挂载的目录,以便持久化数据和配置文件。 sudo mkdi…...
Spring框架 了解
深入浅出Spring框架:为初学者量身定制的入门指南 引言 在现代Java开发中,Spring框架无疑是构建企业级应用的核心技术之一。无论是初学者还是经验丰富的开发者,掌握Spring都能极大地提升你的编程技能和项目开发效率。本文将带你深入了解Spri…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
