Spring Boot实战小技巧(二):校验HTTP请求参数

本文介绍SpringBoot中实体类属性值校验的常用注解,如@Null、@NotNull等,以及如何在Controller层利用这些注解进行请求参数校验。

1 属性值校验注解

使用Spring Boot框架时,可以在实体类的属性定义上增加注解,实现属性值校验,常用的校验注解如下:

注解描述
@Null被注释的元素必须为null
@NotNull被注释的元素不能为null
@NotBlank被注释的元素不能为空字符串或null
@AssertTrue被注释的元素必须为true
@AssertFalse被注释的元素必须为false
@Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值。
@Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值。
@DecimalMin(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值。
@DecimalMax(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值。
@Size(max,min)被注释的元素的大小必须在指定的范围内。
@Digits(integer,fraction)被注释的元素必须是一个数字,其值必须在可接受的范围内。
@Past被注释的元素必须是一个过去的日期。
@Future被注释的元素必须是一个将来的日期。
@Pattern(value)被注释的元素必须符合指定的正则表达式。
@Email被注释的元素必须是电子邮件地址。
@Length被注释的字符串的大小必须在指定的范围内。
@NotEmpty被注释的字符串必须非空。
@Range被注释的元素必须在合适的范围内。

2 值校验注解应用

示例代码如下:

public class PersonEntity {

    /**
     * 公司名称,必填
     */
    @NotBlank(message = "参数companyName为空")
    @Size(max = 100, message = "参数companyName长度超过100")
    private String companyName;

    /**
     * 注册id,必填
     */
    @NotBlank(message = "参数id为空")
    @Size(max = 50, message = "参数id长度超过50")
    private String id;

    /**
     * 身份证号
     */
    @NotBlank(message = "参数idCard为空")
    @Size(max = 18, message = "参数idCard长度超过18")
    @Pattern(regexp = "^[1-9]\\d{5}(18|19|(2\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$" +
            "|^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$", message = "参数idCard格式错误")
    private String idCard;

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getIdCard() {
        return idCard;
    }

    public void setIdCard(String idCard) {
        this.idCard= idCard;
    }
}

示例代码中,注解的message属性为参数校验错误时的提示信息。

3 请求参数校验示例

Controller层处理HTTP请求时,在实体类属性校验注解的帮助下,可以轻松判断请求参数是否符合要求。在请求参数前加上@Valid参数,即可在接收HTTP请求时,根据校验注解设置的约束条件进行参数校验。

在接收HTTP请求时,增加参数BindingResult result,可通过BindingResult 类的hasErrors方法判断参数校验是否通过,并通过getDefaultMessage方法获取参数错误提示信息。参数校验未通过时,可直接提示错误并返回请求失败结果给客户端。
示例代码如下:

@GetMapping(value = "/checkPerson")
    public int checkPerson(@Valid PersonEntity param, BindingResult result) {
        if (result.hasErrors()) {
            logger.error(result.getFieldError().getDefaultMessage());
            return 0;
        }
        return 1;
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mars Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值