Jboot v3.7.5 发布,全网最优雅的数据验证方式

栏目: 软件资讯 · 发布时间: 3年前

内容简介:Jboot 是一个基于 JFinal、JFinal-Undertow、Dubbo、Seata、Sentinel、ShardingSphere、Nacos 等开发的微服务框架,帮助开发者降低微服务开发门槛。同时完美支持在 idea、eclipse 下多 maven 模块,对 java 代码、...

Jboot 是一个基于 JFinal、JFinal-Undertow、Dubbo、Seata、Sentinel、ShardingSphere、Nacos 等开发的微服务框架,帮助开发者降低微服务开发门槛。同时完美支持在 idea、eclipse 下多 maven 模块,对 java 代码、html、css、js 等资源文件进行热加载。爽爽开发,快乐生活。

到目前为止,Jboot 已经开源超过了 4 年的时间,迭代了 160+ 个版本,已经被超过 1000+ 公司在使用,其中包含了多个知名的上市公司。

Jboot V3.7.5  增强 Jboot  的验证方式,在 Jboot 之前的 @EmptyValidate、@RegexValidate 等基础上,进一步基于 JSR 303 – Bean Validation 简化了验证方式,相比 Spring 更加优雅简单。

@NotNull 验证

在 Controller (或 Service 等)中,我们可以直接通过 @NotNull 注解给 Controller 添加,例如:

 public void test(@NotNull String para) {
        renderText("test6");
    }

可能你说,在参数中添加 @NotNull 在 Spring 也支持呀,但是如果使用 @Size 等验证,Spring 是无法直接给参数添加的,比如:

 public void test(@Size(min=2,max=10) String para) {
        renderText("test6");
    }

这个要做要求前端传入的 para 参数的长度必须是在 2 ~ 10 直接。

@Size 验证

@Size 验证,不仅仅可以验证 String 数据的长度,也可以验证 int long 等数据类型的值的大小范围。比如:

 public void test(@Size(min=2,max=10) int value) {
        renderText("test6");
    }

这个要求 value 的值必须在 2 ~ 10 直接。

当然,我们还可以使用 @Size 来验证 Map/List/数组的长度,比如配合 @JsonBody 来接收前端传入的值:

public void list(@Size(min=2,max=10) @JsonBody() List<MyBean> list) {        
      System.out.println("list--->" + list);        
      renderText("ok");
  }

要求前度传入的 MyBean Json 数组的长度必须是在 2~10 之间。

@NotEmpty 验证

@NotEmpty 不仅仅可以验证 String 类型不能为 null 和 空字符串,也可以验证 Map、List、数组等不能为空,比如:

public void list(@NotEmpty() @JsonBody() List<MyBean> list) {        
      System.out.println("list--->" + list);        
      renderText("ok");
  }

要求前端掺入的 MyBean Json 数组必须有值。

@Valid 验证

@Valid 是针对整个 Java Bean 验证,也可以对 JFinal 的 Model 进行验证。的 MyBean Json 数

比如 MyBean 定义如下:

public class MyBean {
    private String id;  
 
    @NotBlank(message = "密码不能为空")
    private String password;

    @Size(min=0,max=2,message = "性别的值只能是 0 1 2")
    private int sex;

    @Min(value = 18,message = "未成年禁止入内")  
    private Integer age; 
}

 在 Controller 或者 Service 中,如下代码可以直接对 MyBean 进行验证:

 public void test(@Valid() MyBean bean) {
        renderText("test6");
    }

如果 MyBean 是一个 JFinal 的 Model,我们只需要在 getter 方法添加注解即可。

除了以上的基本示例以外,Jboot 的验证还支持了更多的验证:

注解 说明
@NotNull 限制必须不为null
@DecimalMax(value) 限制必须为一个不大于指定值的数字
@DecimalMin(value) 限制必须为一个不小于指定值的数字
@Digits(integer,fraction) 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction
@Max(value) 限制必须为一个不大于指定值的数字
@Min(value) 限制必须为一个不小于指定值的数字
@Pattern(value) 限制必须符合指定的正则表达式
@Size(max,min) 限制字符长度必须在min到max之间
@NotEmpty 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
@NotBlank 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格
@Email 验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

在使用在写验证注解中,我们不仅仅在 Controller 里进行对 http 请求数据进行验证,一样可以在 Service (provider)中对传入的参数进行验证。

在前端中,如果出现验证失败,会返回如下的 Json 内容(可以通过配置 ErrorRender 来修改掉如下的内容):

{
    "throwable": "io.jboot.components.valid.ValidException: 必须小于或等于200",
    "errorMessage": "age max value is 200, but current value is 1001 at method: io.jboot.test.validate.ValidateController.test17(int)",
    "errorCode": 400,
    "state": "fail",
    "message": "必须小于或等于200"
}

在 Service 中验证失败会向外抛出 ValidException 异常。

当然还有更多的功能此处不再一一举例,欢迎给位小伙伴使用 Jboot 开发的时候爽起来。

开发文档:

https://jbootprojects.gitee.io/docs/

同时,Jboot 官方也推出了企业级开发框架 JbootAdmin,详情 https://jbootprojects.gitee.io/docs/jbootadmin/

maven 依赖:

<dependency>
    <groupId>io.jboot</groupId>
    <artifactId>jboot</artifactId>
    <version>3.7.5</version>
</dependency>

Hello World:

@RequestMapping("/")
public class HelloworldController extends JbootController {

    public void index(){
        renderText("hello world");
    }

    public static void main(String[] args){
        JbootApplication.run(args);
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法技术手册(影印版第2版)(英文版)

算法技术手册(影印版第2版)(英文版)

(美)乔治·T·海涅曼//加里·波利斯//斯坦利·塞克欧 / 东南大学 / 2017-10-01 / 96.0

一起来看看 《算法技术手册(影印版第2版)(英文版)》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具