Springboot服务端数据校验

一,实体对象做数据校验

1,pojo类

 

public class User {
    /*
    * @NotNull:对基本数据类型的对象类型做非空校验
    * @NotBlank:对字符串类型做非空校验
    * @NotEmpty:对集合类型做非空校验
    * */
    @NotNull
    private Integer id;
    @NotBlank
    private String password;
    @NotBlank
    private String username;

    public Integer getId() {
        return id;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password == null ? null : password.trim();
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username == null ? null : username.trim();
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", password='" + password + '\'' +
                ", username='" + username + '\'' +
                '}';
    }
}

 

 

 

2,controller类

 

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/addUser")
    public String addUser(@Validated User user, BindingResult result)
    {
        //如果错了就进去
        if(result.hasErrors())
        {
            //这里只是为了输出一下数据校验信息
            List<ObjectError> list= result.getAllErrors();
            for (ObjectError err:list) {
                FieldError fieldError=(FieldError)err;
                String field = fieldError.getField();
                String msg = fieldError.getDefaultMessage();
                System.out.println(field+"\t"+msg);
            }
            return "addUser";

        };
        System.out.println(user);
        return "ok";
    };
}

 

 

 

3,html页面

  

 

 

 二,自定义错误提示信息

  1,在注解中定义提示信息  硬编码形式

      

 

 

  2,在配置文件中定义提示信息

      

 

 

    配置文件必须叫ValidationMessages.properties

      

 

 

      

 

 

    会有乱码问题需要借助jdk工具

    进入jdk的bin目录

      

 

 

    运行native2ascii.exe工具

      

 

 

    把中文打入下面运行得到码  复制到配置文件

      

 

 

      

 

 

  2,解决页面跳转异常

      

 

 

    直接跳到页面时因为这个user没有注入所以会报错

      

 

 

  3,修改参数key的值  添加@ModelAttribute注解

      

 

 

      

  4,其他校验规则

    @NotNull:判断基本数据类型的对象类型是否为null

    @NotBlank:判断字符串是否为null或者是空串(去掉首尾空格)  

    @NotEmpty:判断集合是否为空

    @Length:判断字符的长度(最大或者最小)

    @Min:判断数值最小值

    @Max:判断数值最大值

    @Email:判断邮箱是否合法

    

 

 

  5,Controller中其他参数的校验

 

     1,页面

 

      

 

 

     2,Controller类

        

 

      注意一定要在类上加@Validated注解

      

 

 

     3,异常类

      

 

 

 

 

 

 

 

 

 

 

 

 

    

  

 

 

 

 

 

 

 

 

 

     

 

    

 

 

 

 

 

 

 

 

    

 

posted @ 2020-05-04 10:15  拯代码  阅读(600)  评论(0)    收藏  举报