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

怎样做网站策划aso优化运营

怎样做网站策划,aso优化运营,拼多多刷单网站开发,公司做网站怎么赚钱SpringBoot优雅参数检查 在 Spring Boot 中,参数验证通常基于 JSR-380(Bean Validation 2.0)规范,结合 javax.validation(或 jakarta.validation)和 Hibernate Validator 实现。以下是常用的验证注解及其意…

SpringBoot优雅参数检查

在 Spring Boot 中,参数验证通常基于 JSR-380(Bean Validation 2.0)规范,结合 javax.validation(或 jakarta.validation)和 Hibernate Validator 实现。以下是常用的验证注解及其意义,分为 触发验证的注解 和 约束注解 两类:


注解

一、触发验证的注解

  1. @Valid
    • 作用:触发对对象属性的级联验证(如验证嵌套对象)。

    • 示例:

    @PostMapping("/user")
    public void createUser(@RequestBody @Valid User user) { ... }
    
  2. @Validated
    • 作用:Spring 提供的注解,支持分组验证(Group Validation),用于类或方法级别。

    • 示例:

    @Service
    @Validated
    public class UserService {public void updateUser(@Valid User user) { ... }
    }
    

二、常用约束注解(Bean Validation)

基本约束

注解作用适用类型
@NotNull验证字段值不为 null任意类型
@Null验证字段值为 null任意类型
@NotEmpty验证字符串、集合、数组等不为空(长度/大小 > 0)。String, Collection, Map, Array
@NotBlank验证字符串不为空且至少包含一个非空白字符(自动 trim 后检查)。String
@Size验证字段大小在指定范围内(minmax)。String, Collection, Map, Array
@Min验证数值 >= 指定值。数值类型(int, long 等)
@Max验证数值 <= 指定值。同上
@DecimalMin验证数值 >= 指定值(支持字符串形式的数值,如 "0.1")。数值类型、String
@DecimalMax验证数值 <= 指定值(同上)。同上
@Positive验证数值 > 0。数值类型
@PositiveOrZero验证数值 >= 0。数值类型
@Negative验证数值 < 0。数值类型
@NegativeOrZero验证数值 <= 0。数值类型

字符串约束

注解作用示例
@Pattern验证字符串是否符合正则表达式。@Pattern(regexp = "^[a-zA-Z0-9]+$")
@Email验证字符串是否为合法邮箱格式(默认宽松,可通过 regexp 自定义)。@Email(message = "邮箱格式错误")

日期约束

注解作用适用类型
@Past验证日期是否在当前时间之前。Date, LocalDate 等
@PastOrPresent验证日期是否在当前时间或之前。同上
@Future验证日期是否在当前时间之后。同上
@FutureOrPresent验证日期是否在当前时间或之后。同上

其他约束

注解作用适用类型
@AssertTrue验证布尔字段为 trueboolean
@AssertFalse验证布尔字段为 falseboolean
@Digits验证数值的整数和小数部分的位数是否符合要求。数值类型
@Range验证数值是否在指定范围内(Hibernate Validator 扩展)。数值类型

三、Hibernate Validator 扩展注解

Hibernate 提供了额外约束注解(需引入 hibernate-validator 依赖):

注解作用适用类型
@Length验证字符串长度在范围内(同 @Size,但仅用于字符串)。String
@URL验证字符串是否为合法 URL。String
@CreditCardNumber验证字符串是否为合法信用卡号(Luhn 算法)。String
@UniqueElements验证集合中的元素是否唯一。Collection, Array

四、自定义验证注解

可通过组合 @Constraint 和自定义验证逻辑实现:

@Target({FIELD, METHOD})
@Retention(RUNTIME)
@Constraint(validatedBy = MyValidator.class)
public @interface MyConstraint {String message() default "自定义错误消息";Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};
}

五、使用示例

public class User {@NotBlank(message = "用户名不能为空")private String username;@Email(message = "邮箱格式错误")private String email;@Size(min = 6, max = 20, message = "密码长度需在6-20之间")private String password;@Min(value = 18, message = "年龄必须大于18岁")private Integer age;@NotNull@Valid // 嵌套验证private Address address;
}

通过合理组合这些注解,可以高效地实现参数合法性校验。如果需要分组验证,可结合 @Validatedgroups 属性。

拦截错误

在 Spring Boot 中,参数校验失败时,框架会抛出 MethodArgumentNotValidException(针对 @RequestBody@RequestParam 校验失败)或 ConstraintViolationException(针对方法参数校验失败)。你可以通过 全局异常处理 来统一捕获这些异常,并返回自定义的错误信息。


一、创建全局异常处理类

使用 @RestControllerAdvice@ControllerAdvice 注解定义一个全局异常处理类:

@RestControllerAdvice
public class GlobalExceptionHandler {// 处理请求体校验失败异常(@RequestBody + @Valid 触发)@ExceptionHandler(MethodArgumentNotValidException.class)public ResultVo handleMethodArgumentNotValidException(MethodArgumentNotValidException ex) {// 提取校验失败的字段信息BindingResult bindingResult = ex.getBindingResult();List<FieldError> fieldErrors = bindingResult.getFieldErrors();// 构造错误信息List<String> errors = fieldErrors.stream().map(error -> error.getField() + ": " + error.getDefaultMessage()).collect(Collectors.toList());return ResultVo.fail(400, "参数校验失败", errors);}// 处理请求参数校验失败异常(@RequestParam/@PathVariable + @Validated 触发)@ExceptionHandler(ConstraintViolationException.class)public ResultVo handleConstraintViolationException(ConstraintViolationException ex) {// 提取校验失败的参数信息List<String> errors = ex.getConstraintViolations().stream().map(violation -> {String path = violation.getPropertyPath().toString();return path.substring(path.lastIndexOf('.') + 1) + ": " + violation.getMessage();}).collect(Collectors.toList());return ResultVo.fail(400, "参数校验失败", errors);}
}

二、定义统一响应格式

创建一个通用的响应类(如 ResultVo),用于封装错误信息:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ResultVo<T> {private int code;       // 状态码(如 400 表示参数错误)private String message; // 错误描述private T data;         // 错误详情(如具体字段的校验失败信息)// 快速生成失败响应public static <T> ResultVo<T> fail(int code, String message, T data) {return new ResultVo<>(code, message, data);}
}

三、错误响应示例

当校验失败时,返回的 JSON 格式如下:

{"code": 400,"message": "参数校验失败","data": ["username: 用户名不能为空","email: 邮箱格式错误"]
}

四、其他注意事项

  1. 自定义错误消息
    @NotBlank@Email 等注解中,通过 message 属性指定错误提示:

    @NotBlank(message = "用户名不能为空")
    private String username;
    
  2. 处理其他异常
    可以扩展 GlobalExceptionHandler,添加对其他异常(如业务异常、权限异常)的处理。

  3. 分组校验
    如果使用 @Validated 分组校验,需确保异常处理逻辑能正确提取分组后的错误信息。


通过这种方式,所有参数校验失败的错误会被统一拦截,并以结构化的 JSON 格式返回给客户端,方便前端处理错误信息。

http://www.dtcms.com/wzjs/178439.html

相关文章:

  • 做网站的书籍推荐广州seo关键词
  • 自已做好的网站怎么做后台关键词如何排名在首页
  • 华为云做网站不能修改页面近期的新闻热点
  • 官方网站做背景墙厂家链接生成二维码
  • 番禺响应式网站开发2024年新冠第三波症状分析
  • 明星做代言的购物网站0品牌营销策划公司排名
  • 模板和网站的区别8个公开大数据网站
  • html5响应式网站建设平台公司个人怎么做网络推广
  • 负责公司网站产品的开发及整理新闻热点事件
  • 免费站推广网站不用下载关键词排名优化报价
  • 建立网站编程今日热点新闻事件摘抄2022
  • 做电子商务网站沈阳网站制作优化推广
  • 电脑做网站用word百度游戏风云榜
  • wordpress厨房家居主题关键词排名优化怎么样
  • 做网站的公司都有哪些焦作网络推广哪家好
  • app软件免费模板下载网站seo推广优化平台
  • 网站调用字体优化关键词的方法正确的是
  • ppt中超链接网站怎么做免费信息发布平台网站
  • 东莞市最新疫情情况百度seo关键词工具
  • wordpress伪静态不收录seo关键词排名优化品牌
  • 增城电子商务网站建设线上培训机构
  • 公司网站框架真正免费的网站建站平台有哪些
  • 建设工程交易服务中心关键词优化seo费用
  • 做网站阜阳免费b站软件推广网站
  • 永久免费的自建网站指数是什么意思
  • 青岛网站建设方案策划广告代理
  • 学生兼职做网站重庆seo关键词排名
  • 模板网站如何引擎收录做推广的都是怎么推
  • 网站建设静态部分报告总结网站开发是做什么的
  • 深圳品牌做网站公司哪家好广州seo网站推广优化