参数校验 Spring Validation框架

server/2025/1/20 15:59:58/

后端参数校验

解决:校验前端传入的参数是否符合预期

1、引入依赖

使用Spring Validation框架

java">        <!-- 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

java">@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){//逻辑......}
}

实体类

java">        <!-- Lombok  用于类方法--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version></dependency>

UserPO.java

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; // 修改时间
}

接口

java">@PostMapping("/update")public Result update(@RequestBody @Validated UserPO userPO) {userService.update(userPO);return Result.success("完成更新用户");}

统一返回类

java">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);}
}


http://www.ppmy.cn/server/159925.html

相关文章

深度学习项目--基于LSTM的火灾预测研究(pytorch实现)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 LSTM模型一直是一个很经典的模型&#xff0c;这个模型当然也很复杂&#xff0c;一般需要先学习RNN、GRU模型之后再学&#xff0c;GRU、LSTM的模型讲解将…

从 JIRA 数据到可视化洞察:使用 Python 创建自定义图表

引言 在项目管理和软件开发中&#xff0c;JIRA 是最广泛使用的工具之一&#xff0c;尤其是在追踪问题、任务和团队进度方面。对于开发者和团队来说&#xff0c;能够从 JIRA 中提取并分析数据&#xff0c;以便更好地理解项目状态和趋势&#xff0c;至关重要。虽然 JIRA 本身提供…

使用docker部署tomcat服务器和mysql数据库

使用docker部署tomcat服务器 1、拉去tomcat镜像 [rootlocalhost yum.repos.d]# sudo docker pull docker.io/tomcat:9 9: Pulling from library/tomcat de44b265507a: Pull complete 4c2afd91a87d: Pull complete 89e9bbcfa697: Pull complete 11be3e613582: Pull complet…

网络安全 | 什么是正向代理和反向代理?

关注&#xff1a;CodingTechWork 引言 在现代网络架构中&#xff0c;代理服务器扮演着重要的角色。它们在客户端和服务器之间充当中介&#xff0c;帮助管理、保护和优化数据流。根据代理的工作方向和用途&#xff0c;代理服务器可分为正向代理和反向代理。本文将深入探讨这两种…

【Java Web】第八章 微头条项目开发

一、项目简介 微头条业务简介&#xff1a; 用户功能&#xff1a; 注册&#xff1a;用户可在平台注册账号。登录&#xff1a;用户登录平台。 头条新闻功能&#xff1a; 分页浏览&#xff1a;方便用户浏览新闻。搜索&#xff1a;通过标题关键字查找新闻。详情查看&#xff1a;查…

Linux-性能分析top

性能分析top 1. top 命令概述 top 是 Linux 系统中一个常用的性能监控工具&#xff0c;能够动态显示系统的资源使用情况&#xff0c;包括 CPU、内存、进程等信息。通过top命令&#xff0c;用户可以实时查看系统的状态&#xff0c;并进行性能分析&#xff0c;找出资源占用较高…

202509读书笔记|《飞花令·山》——两岸猿声啼不住,轻舟已过万重山

202509读书笔记|《飞花令山》——两岸猿声啼不住&#xff0c;轻舟已过万重山 《飞花令山》素心落雪编著&#xff0c;飞花令得名于唐代诗人韩翃《寒食》中的名句“春城无处不飞花”&#xff0c;类似于行酒令&#xff0c;是文人们的一种雅致的娱乐活动。 一直都比较喜欢看诗词&a…

利用rsync备份全网服务器数据

一、项目描述 某公司里有一台Web服务器&#xff0c;里面的数据很重要&#xff0c;但是如果硬盘坏了数据就会丢失&#xff0c;现在领导要求把数据做备份&#xff0c;这样Web服务器数据丢失在可以进行恢复&#xff0c;要求如下&#xff1a; 1、备份要求 每天晚上00点整在Web服…