springboot参数格式怎么校验(springboot,移动开发)

时间:2024-05-02 15:18:12 作者 : 石家庄SEO 分类 : 移动开发
  • TAG :

springboot 参数格式校验

@Validated

字面意思校验

springboot参数格式怎么校验

@RequestBody

该注解不用多说,意思是接收为json格式的参数

@Validated

字面意思校验, 需要配合@NotBlank 或者 @NotNull 注解才能生效

进入到请求体参数中。

springboot参数格式怎么校验

springboot 参数注解校验

1.添加依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>
packagecom.xl.annotation;importlombok.Data;importorg.hibernate.validator.constraints.Length;importorg.hibernate.validator.constraints.Range;importjavax.validation.constraints.*;importjava.math.BigDecimal;importjava.util.Date;@DatapublicclassUser{@NotNull(message="ID不能为空")@Range(min=1,max=100,message="ID必须在1到100之间")privateIntegerid;@NotNull(message="姓名不能为空")@Length(min=2,max=6,message="姓名必须在2到6位之间")privateStringname;@NotNull(message="余额不能为空")@DecimalMax(value="30.50",message="余额不能超过30.5")@DecimalMin(value="1.50",message="余额不能低于1.5")privateBigDecimalamount;@NotNull(message="生日不能为空")@Past(message="生日必须是过去")privateDatebirthday;@NotBlank(message="邮箱不能为空")@Email(message="邮箱格式不正确")privateStringemail;@NotBlank(message="手机号不能为空")@Pattern(regexp="^(((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(16[6])|(17[0135678])|(18[0-9])|(19[89]))d{8})$",message="手机号格式错误")privateStringphone;}

2.controller层

packagecom.xl.annotation;importio.swagger.annotations.Api;importio.swagger.annotations.ApiOperation;importio.swagger.annotations.ApiParam;importorg.springframework.validation.BindingResult;importorg.springframework.validation.ObjectError;importorg.springframework.validation.annotation.Validated;importorg.springframework.web.bind.annotation.*;importjavax.validation.ValidationException;importjavax.validation.constraints.Max;importjavax.validation.constraints.NotNull;@RestController@Validated@Api(value="手机验证",description="手机验证")publicclassMobileController{@ApiOperation("手机验证")@RequestMapping("/phone")publicStringmobilePattern(Phonephone){return"chengg";}@PostMapping("/getUser")@ApiOperation("手机验证12")publicStringgetUserStr(@NotNull(message="name不能为空")@RequestParamStringname,@Max(value=99,message="不能大于99岁")@RequestParamIntegerage){return"name:"+name+",age:"+age;}/*@PostMapping("/getUser1")@ApiOperation("手机验证c")publicStringgetUser(@RequestBody@ValidatedUseruser,BindingResultbindingResult){validData(bindingResult);return"name:"+user.getName()+",age:"+user.getAge();}*/privatevoidvalidData(BindingResultbindingResult){if(bindingResult.hasErrors()){StringBuffersb=newStringBuffer();for(ObjectErrorerror:bindingResult.getAllErrors()){sb.append(error.getDefaultMessage());}thrownewValidationException(sb.toString());}}@PostMapping("/test")@ApiOperation(value="测试",notes="")publicStringtest(@ApiParam(name="test",value="参数",required=true)@Validated@RequestBodyUsertest,BindingResultbindingResult){validData(bindingResult);if(bindingResult.hasErrors()){StringerrorMsg=bindingResult.getFieldError().getDefaultMessage();returnerrorMsg;}return"参数验证通过";}}

3.自定义一个抛出异常类

packagecom.xl.annotation;importorg.springframework.http.HttpStatus;importorg.springframework.web.bind.annotation.ExceptionHandler;importorg.springframework.web.bind.annotation.ResponseStatus;importorg.springframework.web.bind.annotation.RestControllerAdvice;importjavax.validation.ConstraintViolation;importjavax.validation.ConstraintViolationException;importjavax.validation.ValidationException;importjava.util.Set;/***自定义验证抛出异常*/@RestControllerAdvicepublicclassGlobalExceptionHandler{@ExceptionHandler(ValidationException.class)@ResponseStatus(HttpStatus.BAD_REQUEST)publicStringhandle(ValidationExceptionexception){if(exceptioninstanceofConstraintViolationException){ConstraintViolationExceptionexs=(ConstraintViolationException)exception;Set<ConstraintViolation<?>>violations=exs.getConstraintViolations();for(ConstraintViolation<?>item:violations){//打印验证不通过的信息System.out.println(item.getMessage());}}returnexception.getMessage();}}

4.加一个当检测第一个参数不合法时立即返回错误不会继续进行校验

packagecom.xl.annotation;importorg.hibernate.validator.HibernateValidator;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importjavax.validation.Validation;importjavax.validation.Validator;importjavax.validation.ValidatorFactory;@ConfigurationpublicclassValidatorConf{@BeanpublicValidatorvalidator(){ValidatorFactoryvalidatorFactory=Validation.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory();Validatorvalidator=validatorFactory.getValidator();returnvalidator;}}
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:springboot参数格式怎么校验的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:jquery中的index()方法如何使用下一篇:

11 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18