当前位置: 首页> 游戏> 游戏 > 嘟嘟嘟免费高清在线观看直播_编程c++网课哪家好_seo优化快速排名技术_百度seo公司哪家好一点

嘟嘟嘟免费高清在线观看直播_编程c++网课哪家好_seo优化快速排名技术_百度seo公司哪家好一点

时间:2025/7/14 0:02:48来源:https://blog.csdn.net/m0_74004434/article/details/143808375 浏览次数:1次
嘟嘟嘟免费高清在线观看直播_编程c++网课哪家好_seo优化快速排名技术_百度seo公司哪家好一点

1.引言

在 Web 开发中,用户输入是系统的主要数据来源,但同时也是潜在的安全隐患。参数校验是确保数据安全性和系统稳定性的关键一环。

  • Spring Boot 的优势:整合了 Bean Validation(JSR 380)和 Hibernate Validator,支持注解式校验。
  • 场景:表单提交、接口调用的参数校验,如必填字段、格式校验、值范围限制等。
  • 使用步骤:

               1.导入validation坐标

               2.在参数上添加注解(例如@pattern),指定校验规则                

               3.在Controller类上添加@Validated注解               

               4.在全局异常处理器中处理参数校验失败异常

使用后:

 

2.参数校验的基本用法 

2.1导入依赖

Spring Boot 内置了 Bean Validation,但需要引入相关依赖(如果未自动导入):

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId>
</dependency>

2.2基本校验注解

常用注解及其作用:

2.3控制器中的参数校验

在控制器方法中添加校验注解:

import jakarta.validation.constraints.*;public class UserDTO {@NotNull(message = "用户名不能为空")@Size(min = 3, max = 20, message = "用户名长度必须在3到20之间")private String username;@NotBlank(message = "邮箱不能为空")@Email(message = "邮箱格式不正确")private String email;@Min(value = 18, message = "年龄不能小于18岁")@Max(value = 100, message = "年龄不能超过100岁")private Integer age;// Getters and Setters
}

在控制器中接收并校验参数:

import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;import jakarta.validation.Valid;@RestController
@RequestMapping("/users")
@Validated
public class UserController {@PostMappingpublic String createUser(@RequestBody @Valid UserDTO userDTO) {return "用户创建成功: " + userDTO.getUsername();}
}

3.全局异常处理

当校验失败时,Spring 会抛出异常(如 MethodArgumentNotValidException)。可以通过 全局异常处理 返回友好的错误信息。

3.1 自定义异常处理器

使用 @ControllerAdvice 捕获校验异常:

package com.itzx.springbootconfigfile.exception;import com.itzx.springbootconfigfile.pojo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RestControllerAdvice;@RestControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public Result handleException(Exception e){e.printStackTrace();return Result.error(StringUtils.hasLength(e.getMessage())?e.getMessage():"操作失败");}}

3.2 响应示例

当校验失败时,返回类似的 JSON:

{"username": "用户名长度必须在3到20之间","email": "邮箱格式不正确"
}

4. 分组校验

分组校验允许根据场景应用不同的校验规则。

4.1 定义校验组

public interface CreateGroup {}
public interface UpdateGroup {}

4.2 应用分组校验

public class UserDTO {@NotNull(message = "用户ID不能为空", groups = UpdateGroup.class)private Long id;@NotNull(message = "用户名不能为空", groups = CreateGroup.class)@Size(min = 3, max = 20, message = "用户名长度必须在3到20之间")private String username;
}

4.3 控制器中使用分组

@PostMapping
public String createUser(@RequestBody @Validated(CreateGroup.class) UserDTO userDTO) {return "用户创建成功";
}@PutMapping
public String updateUser(@RequestBody @Validated(UpdateGroup.class) UserDTO userDTO) {return "用户更新成功";
}

5. 最佳实践

  1. 细化校验规则:根据业务需求精细设计注解和分组。
  2. 前后端配合:校验规则应在后端与前端保持一致。
  3. 避免过度校验:对非关键性字段,校验规则不要过于复杂。
  4. 全局异常捕获:提升用户体验。

6. 总结

Spring Boot 提供了一套强大的参数校验机制,集成了标准的 JSR 380 和自定义能力,适用于各种业务场景。从简单校验到分组校验,再到自定义注解,开发者可以轻松实现符合业务需求的参数校验逻辑。通过合理的异常处理和分组应用,可以进一步提高系统的健壮性和用户体验。

关键字:嘟嘟嘟免费高清在线观看直播_编程c++网课哪家好_seo优化快速排名技术_百度seo公司哪家好一点

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: