当前位置: 首页 >> 热点 >
Springboot——参数校验
来源:博客园     时间:2023-05-27 17:35:35


(资料图)

springboot参数校验注解

在controller层需要对前端传来的参数进行校验

校验简单数据类型

使用springboot自带的validation工具可以从后端对前端传来的数据进行校验

使用方法:

创建项目时引入I/O场景下的validation起步依赖使用maven创建项目时,引入起步依赖:
            org.springframework.boot            spring-boot-starter-validation        
添加注解@Validated控制器开启参数校验功能在参数前添加校验标准的注解,判断参数
注解作用
@NotNull判断包装类是否为null
@NotBlank判断字符串是否为null或者是空串(去掉首位空格)
@NotEmpety判断集合是否为空
@Length判断字符的长度(最大或最小)
@Min判断数值最小值
@Max判断数值最大值
@Email判断邮箱是否合法

例如:

@RequestMapping("/t2")    @ResponseBody    public String t2(@NotBlank @Length(min = 1,max = 5) String username,                     @NotNull @Min(0) @Max(50) Integer age,                     @NotEmpty @RequestParam List address,                     @NotBlank @Email String email){        System.out.println(username);        System.out.println(age);        System.out.println(address);        System.out.println(email);        return "请求成功";    }
异常处理

当抛出ConstraintViolationException异常时,可以使用SpringMVC的异常处理器处理异常,也可以使用springboot的异常处理器。

springboot使用BasicErrorController来进行异常处理,当出现异常时,会跳转到resources/templates/error.html,只需要对error.html进行编辑就可以处理,当然后台还是会报异常的,如果需要详细的处理异常,那么就需要采用SpringMVC的异常处理器来处理了

校验对象类型参数

校验对象类型参数,实际是判断传来对象的属性

使用方法:

在对象属性前添加校验标准在对象参数前添加注解@Validated,并将异常信息封装到BindingResult对象中

例如:

public class User {    @NotBlank(message = "用户名不能为空")    private String username;    @NotNull(message = "id不能为空")    private int id;    @Override    public String toString() {        return "User{" +                "username="" + username + "\"" +                ", id=" + id +                "}";    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }}
@RequestMapping("/t3")    @ResponseBody    public String t3(@Validated User user, BindingResult result){        //判断是否有异常        if (result.hasErrors()){            List list = result.getAllErrors();            for (ObjectError err:list                 ) {                FieldError fieldError = (FieldError) err;                System.out.println(fieldError.getDefaultMessage());            }            throw new RuntimeException("参数验证");        }        System.out.println(user);        return "请求成功";    }

注意:对对象参数进行校验时不需要给controller添加@Validated注解,只需要给对象参数添加注解就可以,校验标准应该添加在对象的属性中

标签:

X 关闭

X 关闭