实体类Bean校验器
框架源码地址
作者:stan
版本:V1.0
目录
├── 实体类Bean校验器是什么? ├── 实体类Bean校验器能做什么? ├── 怎么使用实体类Bean校验器?
实体类Bean校验器是什么?
在平时的业务开发当中,后台开发人员需要对前端传送的数据进行再次校验, 如果每次都写大量的if...else...语句块,会大量浪费开发人员的时间。 同时防止不法人员绕过系统前端页面直接调用API接口的,增加API接口的安全性。
实体类Bean校验器能做什么?
- 不安全
绕过系统页面直接请求API,校验不严格可能导致系统错误。
- 开发高效
减少开发人员重复编写校验字段代码,专注业务开发,提高开发效率。
- 简洁
减少大量重复的if...else...校验代码,使得代码更整洁,结构更清晰,优美。
- 内置校验规则注解
- 非空校验
@NotEmpty
- 数字校验
@Number
- 身份证校验
@IDCard
- Email校验
@Email
- 固定电话校验
@Tel
- 手机号码校验
@Mobile
- 自定义校验
@Pattern
@Pattern(msg = "校验失败提示语",name = "属性名",ex="正则表达式")
- 非空校验
怎么使用实体类Bean校验器?
实体类Bean校验器使用方法及其简单。
- 1 实体类使用校验注解
/** * 用户信息 * @author stan * @Date 2020/6/8 10:52 * @version 1.0 */ @Data public class UserInfo { @NotEmpty(msg = "用户名不能为空!",name = "用户名") private String userName; @Number(msg = "年龄不能为空!",name = "年龄") private Integer age; @IDCard(msg = "身份证校验失败!",name = "身份证") private String idNumber; @Email(msg = "邮箱格式有误!",name = "邮箱") private String email; @Tel(msg = "固定电话格式有误!请正确填写,例如:0755-26802502 或者 26802502",name = "固定电话") private String tel; @Mobile(msg = "手机号码格式有误!",name = "手机号码") private String phone; /** 学校-默认不需要校验 **/ private String school; }
- 2 controller中使用
- 2.1 使用实体类Bean校验器对添加了校验注解的Bean进行校验
- 例子:
/** * 校验已添加自定义注解的属性 * @author stan * @Date 2020/6/9 17:38 * @version 1.0 */ @RequestMapping("/validator") public String validator(UserInfo userInfo) throws Exception{ ValidateResult result = BeanValidatorFactory.validate(userInfo); if(!result.isResult()){ return JSONObject.toJSONString(result); } return "校验成功!欢迎使用Bean校验器工厂校验"; }
- 2.2 排除Bean中某些已添加校验注解的属性
- 例子:
/** * 排除不校验的属性 * @author stan * @Date 2020/6/9 17:38 * @version 1.0 */ @RequestMapping("/excludes") public String excludes(UserInfo userInfo) throws Exception{ List<String> excludes = new ArrayList<>(); excludes.add("email"); excludes.add("idNumber"); ValidateResult result = BeanValidatorFactory.validate(userInfo,excludes); if(!result.isResult()){ return JSONObject.toJSONString(result); } return "校验成功!欢迎使用Bean校验器工厂校验-不校验指定字段"; }
- 2.3 动态添加需要校验的属性,如果原有属性上有自定义校验注解,将按照新的校验格式校验
- 例子:
/** *@Description 添加其他校验属性 * 如果原有属性上有自定义校验注解,将按照新的校验格式校验 *@Author stan *@Date 2020-06-13 12:15 *@Param *@return */ @RequestMapping("/addField") public String addFile(UserInfo userInfo) throws Exception{ Set<PatternField> patternFields = new HashSet<>(); PatternField patternField = new PatternField(); patternField.setFieldName("idNumber"); patternField.setRegx("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"); patternField.setMsg("身份证验证失败,改成邮箱验证格式!"); patternFields.add(patternField); PatternField patternField1 = new PatternField(); patternField1.setFieldName("school"); patternField1.setRegx("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"); patternField1.setMsg("学校名称验证失败,改成邮箱验证格式!"); patternFields.add(patternField1); ValidateResult result = BeanValidatorFactory.validate(userInfo,patternFields); if(!result.isResult()){ return JSONObject.toJSONString(result); } return "校验成功!欢迎使用Bean校验器工厂校验-添加字段校验格式"; }