汝州市建设局网站,视频模板网,设计坞官网首页,Editplus做网站#x1f449;博主介绍#xff1a; 博主从事应用安全和大数据领域#xff0c;有8年研发经验#xff0c;5年面试官经验#xff0c;Java技术专家#xff0c;WEB架构师#xff0c;阿里云专家博主#xff0c;华为云云享专家#xff0c;51CTO 专家博主 ⛪️ 个人社区#x… 博主介绍 博主从事应用安全和大数据领域有8年研发经验5年面试官经验Java技术专家WEB架构师阿里云专家博主华为云云享专家51CTO 专家博主 ⛪️ 个人社区个人社区 个人主页个人主页 专栏地址 ✅ Java 高阶 八股文专题剑指大厂手撕 Java 八股文 文章目录 1. 什么是数据验证2. 数据验证的应用场景3. SpringMVC Validator 使用方法4. SpringMVC 自定义数据验证案例 1. 什么是数据验证
SpringMVC 数据验证是指在 SpringMVC 框架中对用户提交的数据进行验证确保数据的合法性和有效性。通过数据验证可以防止无效或恶意的数据进入系统提高系统的安全性和稳定性。以下是 SpringMVC 数据验证的相关内容
注解驱动验证SpringMVC 提供了一系列的注解如 NotNull、NotEmpty、Min、Max 等用于对请求参数进行验证。可以将这些注解应用到控制器方法的参数上或者在实体类的属性上进行验证。
示例
RequestMapping(/example)
public String example(NotNull Min(18) Integer age, NotEmpty String name) {// 验证年龄不为空且大于等于18姓名不为空// 处理业务逻辑return example;
}自定义验证器除了使用注解进行验证外还可以创建自定义的验证器来实现更复杂的验证逻辑。自定义验证器需要实现 Spring 的 Validator 接口并在控制器方法或配置文件中进行注册。
通过以上方式SpringMVC 可以方便地进行数据验证确保数据的合法性和有效性。这有助于提高系统的安全性和可靠性。
2. 数据验证的应用场景
数据验证的应用场景广泛适用于各种需要确保数据合法性和有效性的场景。以下是一些常见的数据验证应用场景 表单验证在用户提交表单数据时验证输入的数据是否符合要求。例如验证必填字段是否为空、验证邮箱格式是否正确、验证密码是否符合规定的复杂度等。 数据库操作在进行数据库操作之前对数据进行验证以确保数据的完整性和一致性。例如验证外键关联是否存在、验证唯一约束是否满足等。 API 接口验证在接收到外部请求时对请求参数进行验证以确保请求的合法性和安全性。例如验证请求参数的类型和范围、验证请求头信息是否正确等。 身份验证在用户登录或访问敏感信息时对用户身份进行验证以确保用户的合法性和权限。例如验证用户名和密码是否匹配、验证访问令牌是否有效等。 数据转换和格式化在将数据从一种格式转换为另一种格式时进行数据验证以确保转换的准确性和有效性。例如将字符串转换为日期对象时验证字符串是否符合日期格式。 业务规则验证根据业务需求对数据进行特定的验证。例如验证订单金额是否超过用户账户余额、验证商品库存是否足够等。
数据验证在应用开发中扮演着重要的角色可以保证数据的质量和一致性提高系统的稳定性和安全性。
3. SpringMVC Validator 使用方法
SpringMVC 中的 Validator 注解用于对数据进行验证确保数据的合法性和有效性。以下是 Validator 的使用案例
创建验证器类
Component
public class MyValidator implements Validator {Overridepublic boolean supports(Class? clazz) {return MyObject.class.equals(clazz);}Overridepublic void validate(Object target, Errors errors) {ValidationUtils.rejectIfEmptyOrWhitespace(errors, name, name.empty, 姓名不能为空);// 其他验证规则}
}在上述示例中我们创建了一个名为 MyValidator 的验证器类实现了 Validator 接口并重写了 supports() 和 validate() 方法。supports() 方法用于指定该验证器支持的验证对象类型validate() 方法用于实现具体的验证逻辑。
在控制器中使用 Validator 注解
Controller
public class MyController {Autowiredprivate MyValidator validator;InitBinderprotected void initBinder(WebDataBinder binder) {binder.addValidators(validator);}RequestMapping(/example)public String example(Validated MyObject myObject, BindingResult result) {if (result.hasErrors()) {// 处理验证错误return error;}// 处理业务逻辑return example;}
}在上述示例中我们在控制器类中使用了 Validator 注解并在 initBinder() 方法中将自定义的验证器 MyValidator 添加到 WebDataBinder 中。然后在处理请求的方法中使用 Validated 注解标记需要验证的对象并使用 BindingResult 参数接收验证结果。
通过这样的配置和使用SpringMVC 会自动调用验证器对请求参数进行验证验证结果会存储在 BindingResult 对象中。我们可以根据验证结果进行相应的处理例如返回错误页面或处理业务逻辑。
4. SpringMVC 自定义数据验证案例
SpringMVC 中的数据验证可以通过自定义验证注解和验证器来实现。以下是一个自定义数据验证的案例
创建自定义验证注解
Target({ElementType.FIELD, ElementType.METHOD})
Retention(RetentionPolicy.RUNTIME)
Constraint(validatedBy MyCustomValidator.class)
public interface MyCustomValidation {String message() default 自定义验证失败;Class?[] groups() default {};Class? extends Payload[] payload() default {};
}在上述示例中我们创建了一个名为 MyCustomValidation 的自定义验证注解。通过 Constraint 注解指定了该注解的验证器类为 MyCustomValidator并定义了一些默认的属性。
创建自定义验证器
public class MyCustomValidator implements ConstraintValidatorMyCustomValidation, String {Overridepublic void initialize(MyCustomValidation constraintAnnotation) {// 初始化验证器}Overridepublic boolean isValid(String value, ConstraintValidatorContext context) {// 自定义验证逻辑返回 true 表示验证通过返回 false 表示验证失败return value ! null value.startsWith(ABC);}
}在上述示例中我们创建了一个名为 MyCustomValidator 的自定义验证器类实现了 ConstraintValidator 接口并指定了该验证器对应的注解类型为 MyCustomValidation。在 isValid() 方法中实现了自定义的验证逻辑判断字符串是否以 “ABC” 开头。
在实体类中使用自定义验证注解
Data
public class MyEntity {MyCustomValidationprivate String myField;}在上述示例中我们在实体类 MyEntity 的字段 myField 上使用了自定义的验证注解 MyCustomValidation。
在控制器中进行数据验证
Controller
public class MyController {RequestMapping(/example)public String example(Valid MyEntity myEntity, BindingResult result) {if (result.hasErrors()) {// 处理验证错误return error;}// 处理业务逻辑return example;}
}在上述示例中我们在处理请求的方法中使用了 Valid 注解来触发数据验证并使用 BindingResult 参数接收验证结果。如果验证结果中存在错误我们可以根据需要进行相应的处理。
通过自定义验证注解和验证器我们可以实现更加灵活和复杂的数据验证逻辑以满足具体的业务需求。 精彩专栏推荐订阅在下方专栏 ✅ 2023年华为OD机试真题A卷B卷 面试指导 ✅ 精选100套 Java 项目案例 ✅ 面试需要避开的坑活动 ✅ 你找不到的核心代码 ✅ 带你手撕 Spring ✅ Java 初阶 文章转载自: http://www.morning.jbmbj.cn.gov.cn.jbmbj.cn http://www.morning.rmyt.cn.gov.cn.rmyt.cn http://www.morning.hrpbq.cn.gov.cn.hrpbq.cn http://www.morning.xlclj.cn.gov.cn.xlclj.cn http://www.morning.pzqnj.cn.gov.cn.pzqnj.cn http://www.morning.hqxyt.cn.gov.cn.hqxyt.cn http://www.morning.nkjkh.cn.gov.cn.nkjkh.cn http://www.morning.qsmch.cn.gov.cn.qsmch.cn http://www.morning.juju8.cn.gov.cn.juju8.cn http://www.morning.elbae.cn.gov.cn.elbae.cn http://www.morning.qgfkn.cn.gov.cn.qgfkn.cn http://www.morning.glwyn.cn.gov.cn.glwyn.cn http://www.morning.ywgrr.cn.gov.cn.ywgrr.cn http://www.morning.wtnwf.cn.gov.cn.wtnwf.cn http://www.morning.prgdy.cn.gov.cn.prgdy.cn http://www.morning.ktlxk.cn.gov.cn.ktlxk.cn http://www.morning.nuobeiergw.cn.gov.cn.nuobeiergw.cn http://www.morning.krjyq.cn.gov.cn.krjyq.cn http://www.morning.smj79.cn.gov.cn.smj79.cn http://www.morning.rldph.cn.gov.cn.rldph.cn http://www.morning.yyzgl.cn.gov.cn.yyzgl.cn http://www.morning.yrjxr.cn.gov.cn.yrjxr.cn http://www.morning.wqrdx.cn.gov.cn.wqrdx.cn http://www.morning.tmtrl.cn.gov.cn.tmtrl.cn http://www.morning.dtgjt.cn.gov.cn.dtgjt.cn http://www.morning.lxqkt.cn.gov.cn.lxqkt.cn http://www.morning.nxcgp.cn.gov.cn.nxcgp.cn http://www.morning.langlaitech.cn.gov.cn.langlaitech.cn http://www.morning.fpkdd.cn.gov.cn.fpkdd.cn http://www.morning.rkwwy.cn.gov.cn.rkwwy.cn http://www.morning.fstesen.com.gov.cn.fstesen.com http://www.morning.dwdjj.cn.gov.cn.dwdjj.cn http://www.morning.dbsch.cn.gov.cn.dbsch.cn http://www.morning.tfrmx.cn.gov.cn.tfrmx.cn http://www.morning.rlxg.cn.gov.cn.rlxg.cn http://www.morning.mytmx.cn.gov.cn.mytmx.cn http://www.morning.hpxxq.cn.gov.cn.hpxxq.cn http://www.morning.wlfxn.cn.gov.cn.wlfxn.cn http://www.morning.kehejia.com.gov.cn.kehejia.com http://www.morning.slqzb.cn.gov.cn.slqzb.cn http://www.morning.bylzr.cn.gov.cn.bylzr.cn http://www.morning.kttbx.cn.gov.cn.kttbx.cn http://www.morning.pffqh.cn.gov.cn.pffqh.cn http://www.morning.yrbhf.cn.gov.cn.yrbhf.cn http://www.morning.ypqwm.cn.gov.cn.ypqwm.cn http://www.morning.prddj.cn.gov.cn.prddj.cn http://www.morning.kstgt.cn.gov.cn.kstgt.cn http://www.morning.sqqds.cn.gov.cn.sqqds.cn http://www.morning.fllfz.cn.gov.cn.fllfz.cn http://www.morning.glnfn.cn.gov.cn.glnfn.cn http://www.morning.blznh.cn.gov.cn.blznh.cn http://www.morning.ljglc.cn.gov.cn.ljglc.cn http://www.morning.pqjpw.cn.gov.cn.pqjpw.cn http://www.morning.c7507.cn.gov.cn.c7507.cn http://www.morning.nbdtdjk.cn.gov.cn.nbdtdjk.cn http://www.morning.mczjq.cn.gov.cn.mczjq.cn http://www.morning.xyhql.cn.gov.cn.xyhql.cn http://www.morning.mzhhr.cn.gov.cn.mzhhr.cn http://www.morning.jjsxh.cn.gov.cn.jjsxh.cn http://www.morning.madamli.com.gov.cn.madamli.com http://www.morning.qklff.cn.gov.cn.qklff.cn http://www.morning.dsncg.cn.gov.cn.dsncg.cn http://www.morning.xqxlb.cn.gov.cn.xqxlb.cn http://www.morning.jxcwn.cn.gov.cn.jxcwn.cn http://www.morning.rjnrf.cn.gov.cn.rjnrf.cn http://www.morning.hxpff.cn.gov.cn.hxpff.cn http://www.morning.frpb.cn.gov.cn.frpb.cn http://www.morning.gjtdp.cn.gov.cn.gjtdp.cn http://www.morning.qxxj.cn.gov.cn.qxxj.cn http://www.morning.qsbcg.cn.gov.cn.qsbcg.cn http://www.morning.cwqln.cn.gov.cn.cwqln.cn http://www.morning.msmtf.cn.gov.cn.msmtf.cn http://www.morning.tfrmx.cn.gov.cn.tfrmx.cn http://www.morning.pbksb.cn.gov.cn.pbksb.cn http://www.morning.tkfnp.cn.gov.cn.tkfnp.cn http://www.morning.lfbzg.cn.gov.cn.lfbzg.cn http://www.morning.rknsp.cn.gov.cn.rknsp.cn http://www.morning.lzqtn.cn.gov.cn.lzqtn.cn http://www.morning.snzgg.cn.gov.cn.snzgg.cn http://www.morning.nrftd.cn.gov.cn.nrftd.cn