写点什么

【转】java 开发之 SpringBoot 数据校验机制

  • 2021 年 12 月 27 日
  • 本文字数:1283 字

    阅读完需:约 4 分钟

​日常项目开发中,对于前端提交的表单,java培训后台接口接收到表单数据后,为了程序的严谨性,通常后端会加入业务参数的合法校验操作来避免程序的非技术性 bug,这里对于客户端提交的数据校验,SpringBoot 通过 spring-boot-starter-validation 模块包含了数据校验的工作。


表单校验的框架


JSR303/JSR-349::提供 bean 属性相关校验规则


JSR303/JSR-349: JSR303 是一项标准,只提供规范不提供实现,规定一些校验规范即校验注解,如 @Null,@NotNull,@Pattern,位于 javax.validation.constraints 包下。JSR-349 是其升级版本, 添加了一些新特性。


第一步:环境配置


实现参数校验,程序必须引入 spring-boot-starter-validation 依赖,只是在引入 spring-boot- starter-web 依赖时,该模块会自动依赖 spring-boot-starter-validation,所以程序中引入 spring-boot- starter-web 会一并依赖 spring-boot-starter-validation 到项目中。


第二步:在需要校验的实体类的属性上添加校验的规则


public class User {

private Integer uid;

@NotBlank(message = "用户名不能为空")

private String uname;

@NotBlank(message = "用户密码不能为空!")

@Length(min = 6, max = 10,message = "密码长度至少 6 位但不超过 10 位!")

private String upasswd;

省略了 get/set 方法...

}


第三步:在 controller 层中需要校验的方法参数旁加上 @Valid 注解


@PutMapping("user")public String addUser(@RequestBody @Valid User user, BindingResult resul){//如果传过来的参数与设置的规则不一致的话,则抛出异常(我这里是自定义异常)    if (resul.hasErrors()){        throw new ParamsException(400,resul.getFieldError().getDefaultMessage());    }    int save = userService.save(user);    if (save>0){        return "添加成功";    }else {        return "添加失败";    }

}
复制代码


第四步:自定义异常处理参数校验不合格信息


public class ParamsException extends RuntimeException {

private Integer code=300;

private String msg="参数异常!";

public ParamsException() {

super("参数异常!");

}

public ParamsException(String msg) {

super(msg);

this.msg = msg;

}

public ParamsException(Integer code) {

super("参数异常!");

this.code = code;

}

public ParamsException(Integer code, String msg) {

super(msg);

this.code = code;

this.msg = msg;

}

省略了 get/set 方法

}


第五步,通过全局异常处理获取参数校验不满足的信息


@ControllerAdvice

public class GlobalExceptionHandler {

@ExceptionHandler(Exception.class)

@ResponseBody

public String excetionHandlerTest(Exception e ) {

ParamsException exception=(ParamsException) e;

return exception.getMsg();

}

}


第六步,测试项目(通过 postman 测试)


参数校验都满足的情况:


参数校验不满足的情况:


出现以上情况,就证明我们的数据校验是可以的了。


转载于 java 学习


用户头像

关注尚硅谷,轻松学IT 2021.11.23 加入

还未添加个人简介

评论

发布
暂无评论
【转】java开发之SpringBoot数据校验机制