栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java > SpringBoot

Java参数校验

SpringBoot 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java参数校验

你的项目中是否用到参数校验呢,还是说你就没有考虑入参为空的情况。今天教大家基于SpringBoot的注解来判断入参是否正确。

1、首先创建项目所需的Bean
package com.ifilldream.check_lean.demo.bean;

import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Max;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;


@Data
public class User {
    //message可以表达的再委婉一点,小编就直接刚了
    @NotNull ( message = "用户姓名不得为null")
    @NotEmpty( message = "用户姓名不得为空")
    private String name;

    @NotNull ( message = "用户年龄不得为空")
    @Max(value = 130,message = "年龄不得大于130岁")
    @Max(value = 1,message = "年龄不得小于1岁")
    private Integer age;

    @NotNull ( message = "用户手机不得为null")
    @NotEmpty( message = "用户手机不得为空")
    @Length( min = 11,max = 11,message = "用户手机长度必须为11位")
    private String telephone;

}
2、创建Controller
package com.ifilldream.check_lean.demo.controller;

import com.ifilldream.check_lean.demo.bean.User;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;


@RestController()
@RequestMapping("/ifilldream/user")
public class CheckController {

    @PostMapping("/add")
    public String addUser(@RequestBody @Valid User user){
 //Do something
 return "ok";
    }

}

注意,此处一定要加入@Valid注解用于验证。

3、测试效果


我们可以看到错误提示是非常详细的,但是这种返回格式并不是我们想要的,此时就需要统一拦截处理,转换成项目所需的返回格式了。

4、配置拦截
package com.ifilldream.check_lean.demo.filter;

import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;


@ControllerAdvice
@ResponseBody
public class ErrorHandler {
    @ExceptionHandler(Exception.class)
    public String handleExption(Exception e){
 String msg = null;
 if(e instanceof MethodArgumentNotValidException) {
     //将具体的错误提示提取出来
     msg = ((MethodArgumentNotValidException) e).getBindingResult().getFieldError().getDefaultMessage();
 }else {
     msg =  e.getMessage();
 }
 return msg;
    }
}


此处返回的是String,可以根据改成项目统一的返回类。有人就会问了,这个方法的反射效率会不会很低,其实并不低的,可以放心使用。
这里只简单的介绍了入参校验,更多校验请参考以下注解:

@Null  被注释的元素必须为null
@NotNull  被注释的元素不能为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  被注释的元素必须在合适的范围内

统一首发平台为微信公众号"轻梦致新",搜索关注公众号,第一时间阅读最新内容。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/235158.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号