文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

springboot 中怎么校验参数格式

2023-06-20 13:03

关注

本篇文章给大家分享的是有关springboot 中怎么校验参数格式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

springboot 参数格式校验

@Validated

字面意思校验

springboot 中怎么校验参数格式

@RequestBody

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

@Validated

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

进入到请求体参数中。

springboot 中怎么校验参数格式

springboot 参数注解校验

1.添加依赖

<dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-validation</artifactId>        </dependency>
package com.xl.annotation;import lombok.Data;import org.hibernate.validator.constraints.Length;import org.hibernate.validator.constraints.Range;import javax.validation.constraints.*;import java.math.BigDecimal;import java.util.Date;@Datapublic class User {        @NotNull(message = "ID不能为空")        @Range(min = 1, max = 100, message = "ID必须在1到100之间")        private Integer id;        @NotNull(message = "姓名不能为空")        @Length(min = 2, max = 6, message = "姓名必须在2到6位之间")        private String name;        @NotNull(message = "余额不能为空")        @DecimalMax(value = "30.50", message = "余额不能超过30.5")        @DecimalMin(value = "1.50", message = "余额不能低于1.5")        private BigDecimal amount;        @NotNull(message = "生日不能为空")        @Past(message = "生日必须是过去")        private Date birthday;        @NotBlank(message = "邮箱不能为空")        @Email(message = "邮箱格式不正确")        private String email;        @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 = "手机号格式错误")        private String phone;}

2.controller层

package com.xl.annotation;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import io.swagger.annotations.ApiParam;import org.springframework.validation.BindingResult;import org.springframework.validation.ObjectError;import org.springframework.validation.annotation.Validated;import org.springframework.web.bind.annotation.*;import javax.validation.ValidationException;import javax.validation.constraints.Max;import javax.validation.constraints.NotNull;@RestController@Validated@Api(value = "手机验证",description = "手机验证")public class MobileController {@ApiOperation("手机验证")@RequestMapping("/phone")    public String mobilePattern( Phone phone){        return "chengg";    }    @PostMapping("/getUser")    @ApiOperation("手机验证12")    public String getUserStr( @NotNull(message = "name 不能为空")@RequestParam String name,                              @Max(value = 99, message = "不能大于99岁")@RequestParam Integer age) {        return "name: " + name + " ,age:" + age;    }       private void validData(BindingResult bindingResult) {        if (bindingResult.hasErrors()) {            StringBuffer sb = new StringBuffer();            for (ObjectError error : bindingResult.getAllErrors()) {                sb.append(error.getDefaultMessage());            }            throw new ValidationException(sb.toString());        }    }    @PostMapping("/test")    @ApiOperation(value = "测试", notes = "")    public String  test(@ApiParam(name = "test", value = "参数", required = true) @Validated @RequestBody User test, BindingResult bindingResult) {        validData(bindingResult);        if(bindingResult.hasErrors()){            String errorMsg = bindingResult.getFieldError().getDefaultMessage();            return errorMsg;        }        return "参数验证通过";    }}

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

package com.xl.annotation;import org.springframework.http.HttpStatus;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseStatus;import org.springframework.web.bind.annotation.RestControllerAdvice;import javax.validation.ConstraintViolation;import javax.validation.ConstraintViolationException;import javax.validation.ValidationException;import java.util.Set;@RestControllerAdvicepublic class GlobalExceptionHandler {    @ExceptionHandler(ValidationException.class)    @ResponseStatus(HttpStatus.BAD_REQUEST)    public String handle(ValidationException exception) {        if(exception instanceof ConstraintViolationException){            ConstraintViolationException exs = (ConstraintViolationException) exception;            Set<ConstraintViolation<?>> violations = exs.getConstraintViolations();            for (ConstraintViolation<?> item : violations) {                //打印验证不通过的信息                System.out.println(item.getMessage());            }        }        return exception.getMessage();    }}

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

package com.xl.annotation;import org.hibernate.validator.HibernateValidator;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.validation.Validation;import javax.validation.Validator;import javax.validation.ValidatorFactory;@Configurationpublic class ValidatorConf {    @Bean    public Validator validator() {        ValidatorFactory validatorFactory = Validation.byProvider( HibernateValidator.class )                .configure()                .failFast( true )                .buildValidatorFactory();        Validator validator = validatorFactory.getValidator();        return validator;    }}

以上就是springboot 中怎么校验参数格式,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯