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

参数校验 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);}
}

http://www.lryc.cn/news/522515.html

相关文章:

  • Spring Boot 基础入门指南
  • doc、pdf转markdown
  • 基于 HTML5 Canvas 制作一个精美的 2048 小游戏--day 1
  • 知识图谱入门(一)
  • springboot项目-基础数据回显
  • LabVIEW实现油浸式变压器自主监测与实时报告
  • K8S 亲和性与反亲和性 深度好文
  • 关于php语言api接口开发的流程
  • 医疗集群系统中基于超融合数据库架构的应用与前景探析
  • 浅谈云计算15 | 存储可靠性技术(RAID)
  • 43.Textbox的数据绑定 C#例子 WPF例子
  • LLM大语言模型的分类
  • 【北京迅为】iTOP-4412全能版使用手册-第八十七章 安装Android Studio
  • 【深度学习】神经网络之Softmax
  • 容器渗透横向
  • 黑马Java面试教程_P1_导学与准备篇
  • 《自动驾驶与机器人中的SLAM技术》ch4:预积分学
  • Docker部署MySQL 5.7:持久化数据的实战技巧
  • Spring框架 了解
  • 低代码独特架构带来的编译难点及多线程解决方案
  • 如何使用Ultralytics训练自己的yolo5 yolo8 yolo10 yolo11等目标检测模型
  • Java技术栈 —— Andorid开发入门
  • Qt天气预报系统获取天气数据
  • 力扣 搜索二维矩阵
  • JavaScript 操作符与表达式
  • 深度学习 Pytorch 张量(Tensor)的创建和常用方法
  • 在VMwareFusion中使用Ubuntu
  • %.*s——C语言中printf 函数中的一种格式化输出方式
  • 基于微信小程序的摄影竞赛系统设计与实现(LW+源码+讲解)
  • hydra破解密码