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

    参数校验

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

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

    SpringMVC参数校验

    参数校验 我们在做Web层的时候,接收了各种参数,尽管前端已经做了验证,但难免恶意传参,所以要对传过来的数据保持不信任的态度来进行参数校验 笔者日常进行验证的方式如下: @RequestMapping( ,一个类中参数校验的代码就占了大部分,得不偿失 这时候就该考虑简便的参数校验方式了——JSR-303(基于注解) 2. Spring也提供了参数校验的方式,即实现其内部的validator接口来进行参数校验,接口有两个方法: public class UserValidator implements Validator @Email 被注释的元素必须是电子邮箱地址 @Length 被注释的字符串的大小必须在指定的范围内 @NotEmpty 被注释的字符串的必须非空 @Range 被注释的元素必须在合适的范围内 ​ 3. 在Controller方法入参中需要校验参数前加入@Validated()表明需要校验,后方要加@BindingResult接收错误信息,若没加即接收不了错误信息会报错(若使用了全局异常处理则可以不加

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

    _SpringBoot参数校验

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

    42720编辑于 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 参数校验

    44210编辑于 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.5K21发布于 2018-09-17
  • 来自专栏吟风者

    Spring Boot 参数校验

    String url; @Pattern(regexp = "^1[3|4|5|7|8][0-9]{9}$", message = "正则校验是否为正确的手机号") private lang = "javascript", script = "_this.startDate.before(_this.endDate)", message = "通过脚本表达式校验参数 针对 POST 和 PUT 请求,一般通过新建域(对象)模型来进行数据绑定和校验,constraint 通常附加在这些域模型的字段上(如上): /** * Valid注解标明要对参数对象进行数据校验 默认情况下,Hibernate Validator 只能对 Object 属性进行校验,并不能对单个参数进行校验,Spring 在此基础上进行了扩展,通过配置 MethodValidationPostProcessor 处理器,可以实现对方法参数的拦截校验

    2.5K21发布于 2019-08-20
  • 来自专栏索码理

    初探Springboot 参数校验

    注解 JSR-303 提供了一系列注解,用于在Java中进行数据校验。这些注解主要用于对实体类的属性进行约束,以确保数据的有效性。 value = 18) private Integer age; @Email(message = "邮箱格式不正确") private String email; } 3. 封装全局异常处理类 @RestControllerAdvice public class GlobalExceptionHandler { /** * 参数校检异常 * 3. 再次测试 再次测试可以看到在响应结果中得到了我们想要的结果了,至此Springboot参数校验入门就完成了。 总结 Springboot 参数校验在实际工作中用处非常大,本文只是简单介绍一下有哪些注解和简单使用,后续会对Springboot参数校验做一个详细的介绍和使用,感兴趣可以关注一下。

    62111编辑于 2024-03-04
  • 来自专栏pandacode_cn

    Java 参数校验(Validator)

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

    1.9K20编辑于 2021-12-17
  • 来自专栏山行AI

    springboot validation参数校验

    wrapUnit; /** * 最小单位 */ @NotBlank(message = "最小单位不能为空") private String minUnit; 3. 在运行时,Bean Validation 框架本身会根据被注释元素的类型来选择合适的 constraint validator 对数据进行验证 BindingResult必须跟在被校验参数之后,若被校验参数之后没有 而正是这个差异导致了BindingResult无法接受到简单对象(简单的入参参数类型)的校验信息。 ModelAttributeMethodProcessor#resolveArgument():154 行的 validateIfApplicable(binder, parameter)语句,进行了参数校验 WebDataBinder binder = binderFactory.createBinder(webRequest, attribute, name); // 参数校验

    4.1K41发布于 2019-08-26
  • 来自专栏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 层的方法时,直接使用一个注解即可完成参数校验。 --可以完成参数校验功能--> <! Size(min=2, max = 4, message = "名字字符长度必须为 2~4个") private String name; @Pattern(regexp = "^1(<em>3</em>\ ,会抛出异常 MethodArgumentNotValidException,同时也会打印那些<em>参数</em>没有通过<em>校验</em>,以及该<em>参数</em><em>校验</em>规则。 : <em>参数</em> score = -20 <em>校验</em>错误:需要在0和9223372036854775807之间复制代码 传递<em>校验</em>我们也可以使用传递<em>校验</em>,即一个<em>参数</em>类中包含了另一个<em>参数</em>类,被包含的<em>参数</em>类也可以被<em>校验</em>

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

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

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

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

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

    必须参数 3. 查询参数列表 / 多个值 4. 声明更多元数据 5. 别名参数 6. 弃用参数 7. Path 路径参数 8. ,默认为 None, 最大长度50 更多限制 Query(None, min_length=3, max_length=50) 正则限制 Query(None, min_length=3, 必须参数 将 默认值替换成 ... q: Optional[str] = Query(..., min_length=3, max_length=50, regex="^fixedquery$") 3. 弃用参数参数 deprecated=True 传入 Query 7. 按需对参数排序 fastapi 会自动根据 参数的名称、类型和默认值声明(Query、Path 等)来检测参数 from fastapi import Path @app.get("/items/{item_id

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

    spring注解式参数校验

    3.controller的bean加上@Valid @RequestMapping(value=”/template”, method = RequestMethod.POST)  @ResponseBody @Valid User json) {  } 4.bean上加注解验证 @NotBlank private String name; 5.自定义全局异常捕获异常 因为我自定义的validator类校验缺少参数直接抛出异常 ,所以需要自定义全局异常捕获到这个异常,然后返回给前端 : 缺少必要参数。  可由字母数字下划线组成") private String username; 2.验证必须为int且范围在 A-B之间 @Range(min=0, max=4) private int scale;//基础规格 3. 验证List不为空 @NotEmpty private List userList; 4.对象内包含List<对象>的校验 @Valid @NotEmpty private List userList

    1.1K10发布于 2021-02-25
  • 来自专栏军军不吃鸡

    java常用注解校验参数

    验证注解的元素值不为空(包括不为null或去除首位空格后长度为0) @NotEmpty 被注释的对象必须不为空(数据:String,Collection,Map,arrays) @Valid 递归的对关联对象进行校验 , 如果关联对象是个集合或者数组, 那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验 hibernate validator 附加的 constraints 注解 描述 @Length 例如: @DecimalMin(value = "0.01",message = "金额不得小于0.01元") ) 3.数字超过Long.MAX_VALUE或Long.MIN_VALUE以下或者数字是小数

    2.2K20编辑于 2022-10-26
  • 来自专栏Vincent-yuan

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

    一 前言 做web开发有一点很烦人就是要对前端输入参数进行校验,基本上每个接口都要对参数进行校验,比如一些非空校验、格式校验等。 具体来说分为单参数校验、对象参数校验,单参数校验就是controller接口按照单参数接收前端传值,没有封装对象进行接收,如果有封装对象那就是对象参数校验。 ("/user") @Validated // 单参数校验需要加的注解 public class UserController { // do something } 2 对象参数校验 对象参数校验使用时 { @NotBlank private String operatorType; @NotBlank private String phoneNum; } 3 具体来说分为单参数校验、对象参数校验,单参数校验就是controller接口按照单参数接收前端传值,没有封装对象进行接收,如果有封装对象那就是对象参数校验

    2K30发布于 2021-08-12
  • 来自专栏Java实战博客

    @Validated – 接口参数校验注解

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

    48040编辑于 2022-12-11
  • 来自专栏大神带我来搬砖

    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
  • 来自专栏关忆北.

    Easy Excel参数校验实现

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

    1.4K20编辑于 2023-10-11
  • 来自专栏不一样的科技宅

    SpringBoot统一参数校验

    [unified_param_check_header.jpg] 前言   在日常的开发中,参数校验是非常重要的一个环节,严格参数校验会减少很多出bug的概率,增加接口的安全性。 比如说:在对接的时候前端动不动就甩个截图过来说接口有问题,你检查了半天发现前端传递的参数有问题。针对以上:今天给大家分享一下SpringBoot如何实现统一参数校验。 实现方式   使用 @Validated注解配合参数校验注解, 比如:@NotEmpty对参数进行校验。然后对抛出的异常ControllerAdvice进行捕获然后调整输出数据。 [form_request.png]   这个时候SpringBoot已经根据校验注解对参数进行校验了。并且输出了一大堆的错误信息。 (min = 1 , max = 99 , message = "年龄范围在1~99岁") private Integer age; @Pattern(regexp = "^[1][3,4,5,7,8

    1.4K66发布于 2020-09-19
领券