zoukankan      html  css  js  c++  java
  • 数据校验

    spring自带的验证器

    • maven添加依赖包,可以查看配置
    • 添加bean类的注解
    public class TestBean {
    
        @Pattern(regexp = "^[0-9]*$",message = "只能是数字字符串")
        private String userId;
    
        @NotNull( message = "昵称不能为空")
        private String userName;
        
        // get,set,toString 省略
    }
    
    • controller层添加注解@Valid
    @Controller
    public class test {
    
        @RequestMapping("/get")
        @ResponseBody()
        public Map get(@Valid TestBean testBean, HttpServletRequest req) {
            ...
        }
    }
    
    • 然后他就会自动进行数据验证了,一旦验证失误就会报错,然后我们需要全局监听错误
    // util/ExceptionHandle.java
    
    @ControllerAdvice
    public class ExceptionHandle {
        @ExceptionHandler(value = BindException.class)
        @ResponseBody
        public Map<String, Object> validatorErrorHandler(BindException bindException) throws Exception {
            Map<String, Object> map = new HashMap<String, Object>(2);
            List<FieldError> errors = bindException.getBindingResult().getFieldErrors();
    
            List message = new ArrayList();
            for (int i = 0, size = errors.size(); i < size; i++) {
                FieldError fieldError = errors.get(i);
                message.add(fieldError.getDefaultMessage());
            }
            map.put("message", StringUtils.join(message.toArray(), ","));
            map.put("status", HttpServletResponse.SC_BAD_REQUEST);
            return map;
        }
    
        @ExceptionHandler(value = Exception.class)
        @ResponseBody
        public Map<String, Object> ErrorHandler(Exception exception) throws Exception {
    
            Map<String, Object> map = new HashMap<String, Object>(2);
            map.put("status", HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
            map.put("message", exception.getMessage());
            return map;
        }
    }
    

    效验注解的使用

    @Null 限制只能为null
    @NotNull 限制必须不为null
    @AssertFalse 限制必须为false
    @AssertTrue 限制必须为true
    @DecimalMax(value) 限制必须为一个不大于指定值的数字
    @DecimalMin(value) 限制必须为一个不小于指定值的数字
    @Digits(integer,fraction) 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction
    @Future 限制必须是一个将来的日期
    @Max(value) 限制必须为一个不大于指定值的数字
    @Min(value) 限制必须为一个不小于指定值的数字
    @Past 限制必须是一个过去的日期
    @Pattern(value) 限制必须符合指定的正则表达式
    @Size(max,min) 限制字符长度必须在min到max之间
    @Past 验证注解的元素值(日期类型)比当前时间早
    @NotEmpty 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
    @NotBlank 验证注解的元素值不为空(不为null、去除首位空格后长度为0)
    @Email 验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式
    

    区别

    @NotEmpty 用在集合类上面
    @NotBlank 用在String上面
    @NotNull    用在基本类型,包装类型上
    
  • 相关阅读:
    jQuery选择器
    jQuery属性
    复选框的全选+全不选+ajax传递复选框的value值+后台接受复选框默认值
    [BZOJ1085][SCOI2005]骑士精神 搜索
    [BZOJ1004][HNOI2008]Cards 群论+置换群+DP
    [BZOJ1046][HAOI2007]上升序列 DP+贪心
    [BZOJ1016][JSOI2008]最小生成树计数 最小生成树 搜索
    [BZOJ1031][JSOI2007]字符加密Cipher 后缀数组
    后缀数组学习笔记
    [SPOJ8222]NSUBSTR
  • 原文地址:https://www.cnblogs.com/pengdt/p/12240583.html
Copyright © 2011-2022 走看看