在日常项目开发中,对于前端提交的表单,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引入到项目中。第二步:为需要验证的实体类的属性添加验证规则不能为空!”)@Length(min=6,max=10,message="密码长度必须至少为6个字符,但不能超过10个字符!")privateStringupasswd;get/set方法省略...}三步:在controller层需要校验的方法参数旁边添加@Valid注解@PutMapping("user")publicStringaddUser(@RequestBody@ValidUseruser,BindingResultresult){//如果传入的参数和设置的规则不一致,则抛出异常(我这里是自定义异常)if(resul.hasErrors()){thrownewParamsException(400,resul.getFieldError().getDefaultMessage());}intsave=userService.save(user);if(save>0){return"添加成功";}else{返回“添加失败”;}}第四步:自定义异常处理参数验证失败信息publicclassParamsExceptionextendsRuntimeException{privateIntegercode=300;privateStringmsg="parameterexception!";publicParamsException(){super("parameterexception!");}publicParamsException(Stringmsg){super(msg);this.msg=msg;}publicParamsException(Integercode){super("参数异常!");这个.code=code;}publicParamsException(Integercode,Stringmsg){super(msg);这个。代码=代码;this.msg=msg;}省略get/set方法}第五步通过全局异常处理获取参数验证不满足信息@ControllerAdvicepublicclassGlobalExceptionHandler{@ExceptionHandler(Exception.class)@ResponseBodypublicStringexceptionHandlerTest(Exceptione){ParamsException异常=(ParamsException)e;returnexception.getMsg();}}第六步,测试项(通过postman测试)如果参数校验满足:如果参数校验不满足:如果出现以上情况,证明我们的数据校验是ok的转载于java学习
