首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏后端沉思录

    参数校验

    最近开发中遇到一个问题,需要对请求的参数进行校验,包括身份证号、手机号、是否是数字、是否是整型数字、年龄、性别的校验,由于Controller层接受参数类型是JSONObject,所以需要考虑使用其他方法解决这个问题 ,前提排除解析后再通过条件语句去判断,这样不但使代码冗余而且使未来的字段扩充或校验变的麻烦。 定义校验类注解 4. 定义实体 5. 然后在切面中具体操作 校验注解类: ? 实体: ? 由于实体类较多,这里不再贴出详细的代码了。 切面中具体代码: ? 上面的核心代码是check方法,利用递归的方式可以遍历所有的属性,dispatcher方法会根据注解类分发调用对应的校验方法。

    1.5K20发布于 2018-10-29
  • 来自专栏Howl同学的学习笔记

    SpringMVC参数校验

    参数校验 我们在做Web层的时候,接收了各种参数,尽管前端已经做了验证,但难免恶意传参,所以要对传过来的数据保持不信任的态度来进行参数校验 笔者日常进行验证的方式如下: @RequestMapping( ,一个类中参数校验的代码就占了大部分,得不偿失 这时候就该考虑简便的参数校验方式了——JSR-303(基于注解) 2. Spring也提供了参数校验的方式,即实现其内部的validator接口来进行参数校验,接口有两个方法: public class UserValidator implements Validator 在Controller方法入参中需要校验参数前加入@Validated()表明需要校验,后方要加@BindingResult接收错误信息,若没加即接收不了错误信息会报错(若使用了全局异常处理则可以不加 笔者遇到的小插曲 我们知道前端传参过来都是字符串,经过Spring的类型转换器转换成为我们需要的类型才能正常使用,之前笔者没有使用JSR-303规范来校验参数的时候莫得发觉问题,但这也为现在埋下了坑 如果传个整型呢

    1.4K10发布于 2020-03-10
  • 来自专栏LongJava学习资料

    _SpringBoot参数校验

    SpringBoot自带了validation工具可以从后端对前端传来的参数进行校验,用法如下:首先得添加依赖 <! -- 参数校验 --> <dependency>           <groupId>org.springframework.boot</groupId>           <artifactId public String t1(@NotBlank String name){ System.out.println(name); return name; }}在要开启参数校验的类上方添加 Validated注解,代表该类开启参数校验,访问http://localhost:8080/t1,发现当没有传来参数时,会抛出 ConstraintViolationException 异常。  3.2 测试结果OK,接下来我们测试一下什么都没有输入,直接测试接下来输入如下图四、对象类型参数校验SpringBoot也可以校验对象参数中的每个属性,用法如下:4.1 添加实体类package com.example.springbootdemo4

    41620编辑于 2023-11-16
  • 来自专栏CBeann的博客

    Spring Boot 参数校验

    校验实践 前提 SpringBoot+web 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> 如上图所示,默认会校验完所有属性,然后将错误信息一起返回,但很多时候不需要这样,一个校验失败了,其它就不必校验了 package com.example.springbootvalidator.config 前提 上面的 校验实践 的基础之上进行 需求 验证sex性别参数是否合法,添加自己定义的校验注解进行校验 实践 自定义的属性注解 package com.example.springbootvalidator.myvalidator public @interface SexAnnotation { String message() default "sex参数错误"; //下面这两个属性必须添加 Class list.toString(); } 测试 参考 Spring Boot之Validation自定义实现总结_木小鱼的笔记-CSDN博客_validation 自定义 快速入手 Spring Boot 参数校验

    42310编辑于 2023-12-25
  • 来自专栏码匠的流水账

    聊聊webflux参数校验

    序 本文主要研究下webflux如何进行参数校验 使用javax.validation domain import javax.validation.constraints.Min; import javax.validation.constraints.NotEmpty validateRawReqBody(@RequestBody @Validated User user /**,BindingResult bindingResult**/) { //注意在参数添加 javax.validation虽然是方便,但是具体业务场景非常复杂,不是简单的单个字段校验就完事的,有的需要关联校验,这个时候javax.validation就无能为力了。 这个时候可能就需要手工来写校验。 Mono.error手工校验,基本可以处理大多数webflux参数校验场景。

    2.4K21发布于 2018-09-17
  • 来自专栏pandacode_cn

    Java 参数校验(Validator)

    # Java 参数校验(Validator) 应用在执行业务逻辑之前,必须通过校验保证接受到的输入数据是合法正确的,但很多时候同样的校验出现了多次,在不同的层,不同的方法上,导致代码冗余,浪费时间,违反 每一个控制器都要校验 过多的校验参数会导致代码太长 代码的复用率太差,同样的代码如果出现多次,在业务越来越复杂的情况下,维护成本呈指数上升。 可以考虑把校验的代码封装起来,来解决出现的这些问题。 要校验参数前,加上@Valid注解 // 2. ) { return "OK"; } # 二、直接校验参数 @Controller @Validated @RequestMapping(value = "validator" // 自定义注解一定要实现ConstraintValidator接口奥,里面的两个参数 // 第一个为 具体要校验的注解 // 第二个为 校验参数类型 public class IsMobileValidator

    1.8K20编辑于 2021-12-17
  • 来自专栏索码理

    初探Springboot 参数校验

    注解 JSR-303 提供了一系列注解,用于在Java中进行数据校验。这些注解主要用于对实体类的属性进行约束,以确保数据的有效性。 在这里插入图片描述 以下是一些常用的JSR-303 validation注解: @NotNull:用于对象的校验,确保对象不为null。 封装全局异常处理类 @RestControllerAdvice public class GlobalExceptionHandler { /** * 参数校检异常 * 再次测试 再次测试可以看到在响应结果中得到了我们想要的结果了,至此Springboot参数校验入门就完成了。 总结 Springboot 参数校验在实际工作中用处非常大,本文只是简单介绍一下有哪些注解和简单使用,后续会对Springboot参数校验做一个详细的介绍和使用,感兴趣可以关注一下。

    61211编辑于 2024-03-04
  • 来自专栏山行AI

    springboot validation参数校验

    在运行时,Bean Validation 框架本身会根据被注释元素的类型来选择合适的 constraint validator 对数据进行验证 BindingResult必须跟在被校验参数之后,若被校验参数之后没有 而正是这个差异导致了BindingResult无法接受到简单对象(简单的入参参数类型)的校验信息。 ModelAttributeMethodProcessor#resolveArgument():154 行的 validateIfApplicable(binder, parameter)语句,进行了参数校验 WebDataBinder binder = binderFactory.createBinder(webRequest, attribute, name); // 参数校验 throws Throwable { ExecutableValidator execVal = this.validator.forExecutables(); // 校验参数

    4.1K41发布于 2019-08-26
  • 来自专栏吟风者

    Spring Boot 参数校验

    lang = "javascript", script = "_this.startDate.before(_this.endDate)", message = "通过脚本表达式校验参数 针对 POST 和 PUT 请求,一般通过新建域(对象)模型来进行数据绑定和校验,constraint 通常附加在这些域模型的字段上(如上): /** * Valid注解标明要对参数对象进行数据校验 默认情况下,Hibernate Validator 只能对 Object 属性进行校验,并不能对单个参数进行校验,Spring 在此基础上进行了扩展,通过配置 MethodValidationPostProcessor 处理器,可以实现对方法参数的拦截校验。 Configuration public class ValidateConfig { /** * 配置MethodValidationPostProcessor拦截器,以实现对方法参数校验

    2.5K21发布于 2019-08-20
  • 来自专栏Lambda

    Springboot @Validated参数校验

    ,在Controller层一定要做参数校验的! 下面我们简单介绍下requestBody和requestParam/PathVariable的参数校验实战! requestBody参数校验 POST、PUT请求一般会使用requestBody传递参数,这种情况下,后端使用DTO对象进行接收。只要给DTO对象加上@Validated注解就能实现自动参数校验。 还有就是嵌套集合校验会对集合里面的每一项都进行校验,例如List<Job>字段会对这个list里面的每一个Job对象都进行校验 集合校验 如果请求体直接传递了json数组给后台,并希望对数组中的每一项都进行参数校验 方法级别的参数校验实现原理 上面提到的将参数一个个平铺到方法参数中,然后在每个参数前面声明约束注解的校验方式,就是方法级别的参数校验

    1.8K20编辑于 2022-10-04
  • 来自专栏用户9378957的专栏

    更简洁的参数校验,使用 SpringBoot Validation 对参数进行校验

    今天,推荐一种更简洁的写法,使用 SpringBoot Validation 对方法参数进行校验,特别是在编写 Controller 层的方法时,直接使用一个注解即可完成参数校验。 --可以完成参数校验功能--> <! 参数校验接下来开始体验 Spring Boot Validation。 ,会抛出异常 MethodArgumentNotValidException,同时也会打印那些参数没有通过校验,以及该参数校验规则。 : 参数 score = -20 校验错误:需要在0和9223372036854775807之间复制代码 传递校验我们也可以使用传递校验,即一个参数类中包含了另一个参数类,被包含的参数类也可以被校验

    11K54编辑于 2023-01-09
  • 来自专栏JAVA核心

    详解java参数校验之:顺序校验、自定义校验、分组校验(@Validated @GroupSequence)

    当将 MethodValidationPostProcessor 添加到 Spring 容器中时,它会自动拦截标注了 @Validated 注解的方法,并在方法调用之前执行参数校验操作。 使用 MethodValidationPostProcessor 可以方便地在方法级别上实现参数校验,而无需显式调用 Validator 对象进行验证。 如果校验失败,则会抛出相应的异常。 总而言之,MethodValidationPostProcessor 是一个后置处理器,用于实现方法参数校验。 @Autowired private Validator validator; 接下来,在方法中手动调用 validator.validate() 方法进行参数校验。 通过手动调用 validator.validate() 方法,可以实现对对象的参数校验,并且可以通过检查 ConstraintViolation 集合来处理校验失败的情况。

    2.6K10编辑于 2024-03-21
  • 来自专栏Michael阿明学习之路

    fastapi 查询参数和字符串校验 路径参数和数值校验

    必须参数 3. 查询参数列表 / 多个值 4. 声明更多元数据 5. 别名参数 6. 弃用参数 7. Path 路径参数 8. 别名参数 你需要在浏览器里使用 参数 item-good,但是 python 不支持 - 作为变量名 q: Optional[str] = Query(None, alias = "item-good" 弃用参数参数 deprecated=True 传入 Query 7. 按需对参数排序 fastapi 会自动根据 参数的名称、类型和默认值声明(Query、Path 等)来检测参数 from fastapi import Path @app.get("/items/{item_id *,表示让后面的所有参数作为键值对参数 @app.get("/items/{item_id}") async def read_items( *, item_id: int = Path(..

    1.6K20编辑于 2022-01-07
  • 来自专栏allsmallpi博客

    spring注解式参数校验

    @Valid User json) {  } 4.bean上加注解验证 @NotBlank private String name; 5.自定义全局异常捕获异常 因为我自定义的validator类校验缺少参数直接抛出异常 ,所以需要自定义全局异常捕获到这个异常,然后返回给前端 : 缺少必要参数。  min=0, max=4) private int scale;//基础规格 3.验证List不为空 @NotEmpty private List userList; 4.对象内包含List<对象>的校验 @Valid @NotEmpty private List userList; 这样即可以实现对list里面的对象的校验了 ---- 规则: @AssertFalse Boolean,boolean 如果想在验证用户对象时一起验证地址对象的话,在地址对象上加@Valid注解即可级联验证 ---- 参考: http://jinnianshilongnian.iteye.com/blog/1733708:Spring参数验证

    1.1K10发布于 2021-02-25
  • 来自专栏Vincent-yuan

    Spring Boot参数校验以及分组校验的使用

    一 前言 做web开发有一点很烦人就是要对前端输入参数进行校验,基本上每个接口都要对参数进行校验,比如一些非空校验、格式校验等。 具体来说分为单参数校验、对象参数校验,单参数校验就是controller接口按照单参数接收前端传值,没有封装对象进行接收,如果有封装对象那就是对象参数校验。 1 单参数校验参数校验只需要在参数前添加注解即可,如下所示: public Result deleteUser(@NotNull(message = "id不能为空") Long id) { ("/user") @Validated // 单参数校验需要加的注解 public class UserController { // do something } 2 对象参数校验 对象参数校验使用时 具体来说分为单参数校验、对象参数校验,单参数校验就是controller接口按照单参数接收前端传值,没有封装对象进行接收,如果有封装对象那就是对象参数校验

    2K30发布于 2021-08-12
  • 来自专栏军军不吃鸡

    java常用注解校验参数

    验证注解的元素值不为空(包括不为null或去除首位空格后长度为0) @NotEmpty 被注释的对象必须不为空(数据:String,Collection,Map,arrays) @Valid 递归的对关联对象进行校验 , 如果关联对象是个集合或者数组, 那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验 hibernate validator 附加的 constraints 注解 描述 @Length

    2.2K20编辑于 2022-10-26
  • 来自专栏大神带我来搬砖

    Spring boot系列——参数校验

    Spring boot开发web项目有时候我们需要对controller层传过来的参数进行一些基本的校验,比如非空、整数值的范围、字符串的长度、日期、邮箱等等。 Spring支持JSR-303 Bean Validation API,可以方便的进行校验。 在使用时用@Valid注解表示要校验这个bean。 return name; } public void setName(String name) { this.name = name; } } 直接校验参数 可以直接校验参数 @Controller @Validated @RequestMapping(value = "validator") public class ParameterValidatorDemoController

    1.7K50发布于 2018-05-16
  • 来自专栏Java实战博客

    @Validated – 接口参数校验注解

    Spring框架提供了接口参数校验的注解。@Validated。看下源码。 ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Validated { 上面说明作用域:类、方法、参数

    47740编辑于 2022-12-11
  • 来自专栏不一样的科技宅

    SpringBoot统一参数校验

    [unified_param_check_header.jpg] 前言   在日常的开发中,参数校验是非常重要的一个环节,严格参数校验会减少很多出bug的概率,增加接口的安全性。 比如说:在对接的时候前端动不动就甩个截图过来说接口有问题,你检查了半天发现前端传递的参数有问题。针对以上:今天给大家分享一下SpringBoot如何实现统一参数校验。 实现方式   使用 @Validated注解配合参数校验注解, 比如:@NotEmpty对参数进行校验。然后对抛出的异常ControllerAdvice进行捕获然后调整输出数据。 [form_request.png]   这个时候SpringBoot已经根据校验注解对参数进行校验了。并且输出了一大堆的错误信息。 ] ControllerAdvice @Slf4j @RestControllerAdvice public class ControllerAdvice { /** * 拦截表单参数校验

    1.4K66发布于 2020-09-19
  • 来自专栏关忆北.

    Easy Excel参数校验实现

    应用场景 在导入需求中,往往要求用户输入值的合法性,如是否为空的校验、正则校验、存在性校验,在以往实现方案中,通常是使用for循环来实现的,但是在Excel工具解析文件的过程中,其实已经逐行解析数据过一遍 Easy Excel通过Listener实现参数合规校验方案 举个导入的例子,导入若干条用户信息,包括姓名、手机号、性别等信息,其中姓名、手机号不能为空,并抛出某行错误原因。 = analysisContext.readRowHolder().getRowIndex() + 1; // 获取当前行号(从1开始) // 对姓名和手机号进行非空校验 hasError) { // 所有数据校验通过,继续后续操作 } } }; 通过监听器,您可以在读取或写入过程中的不同阶段进行逻辑处理、数据校验、数据转换等操作。监听器使您能够以事件驱动的方式对 Excel 数据进行处理,从而更好地控制和定制您的业务逻辑。

    1.3K20编辑于 2023-10-11
领券