Springboot——参数校验

这篇具有很好参考价值的文章主要介绍了Springboot——参数校验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

springboot参数校验注解

在controller层需要对前端传来的参数进行校验

校验简单数据类型

使用springboot自带的validation工具可以从后端对前端传来的数据进行校验

使用方法:

  1. 创建项目时引入I/O场景下的validation起步依赖
  2. 使用maven创建项目时,引入起步依赖:
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
  1. 添加注解@Validated控制器开启参数校验功能
  2. 在参数前添加校验标准的注解,判断参数
注解 作用
@NotNull 判断包装类是否为null
@NotBlank 判断字符串是否为null或者是空串(去掉首位空格)
@NotEmpety 判断集合是否为空
@Length 判断字符的长度(最大或最小)
@Min 判断数值最小值
@Max 判断数值最大值
@Email 判断邮箱是否合法

例如:

    @RequestMapping("/t2")
    @ResponseBody
    public String t2(@NotBlank @Length(min = 1,max = 5) String username,
                     @NotNull @Min(0) @Max(50) Integer age,
                     @NotEmpty @RequestParam List<String> address,
                     @NotBlank @Email String email){
        System.out.println(username);
        System.out.println(age);
        System.out.println(address);
        System.out.println(email);
        return "请求成功";
    }

异常处理

当抛出ConstraintViolationException异常时,可以使用SpringMVC的异常处理器处理异常,也可以使用springboot的异常处理器。

springboot使用BasicErrorController来进行异常处理,当出现异常时,会跳转到resources/templates/error.html,只需要对error.html进行编辑就可以处理,当然后台还是会报异常的,如果需要详细的处理异常,那么就需要采用SpringMVC的异常处理器来处理了

校验对象类型参数

校验对象类型参数,实际是判断传来对象的属性

使用方法:

  1. 在对象属性前添加校验标准
  2. 在对象参数前添加注解@Validated,并将异常信息封装到BindingResult对象中

例如:

public class User {

    @NotBlank(message = "用户名不能为空")
    private String username;
    @NotNull(message = "id不能为空")
    private int id;

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", id=" + id +
                '}';
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}
    @RequestMapping("/t3")
    @ResponseBody
    public String t3(@Validated User user, BindingResult result){

        //判断是否有异常
        if (result.hasErrors()){
            List<ObjectError> list = result.getAllErrors();
            for (ObjectError err:list
                 ) {
                FieldError fieldError = (FieldError) err;
                System.out.println(fieldError.getDefaultMessage());
            }

            throw new RuntimeException("参数验证");
        }

        System.out.println(user);
        return "请求成功";
    }

注意:对对象参数进行校验时不需要给controller添加@Validated注解,只需要给对象参数添加注解就可以,校验标准应该添加在对象的属性中文章来源地址https://www.toymoban.com/news/detail-461175.html

到了这里,关于Springboot——参数校验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Springboot——参数校验

    在controller层需要对前端传来的参数进行校验 使用springboot自带的validation工具可以从后端对前端传来的数据进行校验 使用方法: 创建项目时引入I/O场景下的validation起步依赖 使用maven创建项目时,引入起步依赖: 添加注解 @Validated 控制器开启参数校验功能 在参数前添加校验标

    2024年02月06日
    浏览(29)
  • SpringBoot参数校验入门

    一、添加依赖 二、校验注解分类 1.空和非空检查 @NotBlank:只能用于字符串不为null和\\\"\\\",并且字符串调用trim()方法后的length要大于0。 @NotNull:不能为null。 @Null:必须为null。 @NotEmpty:集合对象元素不能为0,集合不能为空。 2.数值检查 @DecimalMax(value):被注释的元素必须是一个数

    2024年02月09日
    浏览(26)
  • SpringBoot Redis 注解 拦截器来实现接口幂等性校验

    幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次 比如:订单接口, 不能多次创建订单 支付接口, 重复支付同一笔订单只能扣一次钱 支付宝回调接口, 可能会多次回调, 必须处理重复回调 普通表单提交接口, 因为网络超时等原因多次点击提

    2024年01月19日
    浏览(62)
  • SpringBoot 使用validator进行参数校验(实例操作+注意事项+自定义参数校验)

    ①、引入依赖 ②、创建实体类 ③、建立控制层 ④、进行测试 作为测试demo,到这里就可以直接测试了 ①、@NotNull ,@NotEmpty 和 @NotBlank 三者的区别 @NotNull、@NotEmpty 和 @NotBlank 都是用于Java中进行参数校验的注解,它们之间的区别如下: @NotNull 注解用于限制参数不能为null。 @N

    2024年02月07日
    浏览(47)
  • SpringBoot参数校验@Validated、@Valid

    在实际开发中,前端校验并不安全,任何人都可以通过接口来调用我们的服务,就算加了一层token的校验,有心人总会转空子,来传各式各样错误的参数,如果后端不校验,导致数据库数据混乱、特别是关于金额的数据,可能一个接口把公司都给干倒了 0、返回类(可以不用看

    2024年01月23日
    浏览(41)
  • 浅析SpringBoot的API参数校验

    目录 1 前言 2 使用步骤 2.1 pom.xml中引入依赖 2.2 在参数前添加@Pattern注解 2.3 在类上添加@Validated注解 2.4 编写异常处理器 在我们编写后端项目的时候,常常需要对前端传送的数据进行校验。当然,我们可以使用if-else来进行校验,不过这样会使得我们的代码相当繁琐,因此我们

    2024年01月25日
    浏览(24)
  • SpringBoot第13讲:SpringBoot接口如何参数校验国际化

    本文是SpringBoot第13讲,上文我们学习了如何对SpringBoot接口进行参数校验,但是如果需要有国际化的信息(比如返回校验结果有中英文),应该如何优雅处理呢? 软件的国际化 :软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相

    2024年02月12日
    浏览(42)
  • springboot使用@Valid 和 @Validated 注解校验详解以及编写一个自定义全局异常类

    全局异常处理类 验证: ============================================== 导入所需要的包: 如果你是 springboot 项目,那么可以不用引入了,已经引入了,他就存在于最核心的 web 开发包里面。 如果你不是 springboot 项目,那么引入下面依赖即可: 新建三个实体类 实现一: 使用@Valid注解修

    2024年02月10日
    浏览(41)
  • Springboot常用方法参数注解及示例

    Springboot常用方法参数注解及示例 一、 @RequestParam : 从URL查询参数中提取数据。 二、 @PathVariable : 从URL路径中提取数据。 三、 @RequestBody : 从请求体中提取数据,并映射到对象。 四、 @RequestHeader : 从请求头中提取数据。 五、 @Validated / @Valid : 启用方法参数校验,确保参

    2024年02月10日
    浏览(44)
  • Springboot实现优雅的参数校验(Spring Validation)和 if else说再见

    当我们想提供可靠的 API 接口,对参数的校验,以保证最终数据入库的正确性,是 必不可少 的活。比如下图就是 我们一个项目里 新增一个菜单校验 参数的函数,写了一大堆的 if else 进行校验,非常的不优雅,比起枯燥的CRUD来说,参数校验更是枯燥。这只是一个创建菜单的

    2023年04月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包