jsr 303 验证日期_Bean验证和JSR 303

本文介绍了JSR 303(Bean验证框架)的使用,包括前端和后端验证的历史背景,以及JSR 303的优势,如属性和整个bean级别的验证、国际化和自定义约束。通过示例展示了如何验证日期和其他属性,并讨论了约束组的概念,以适应不同场景的验证需求。
摘要由CSDN通过智能技术生成

jsr 303 验证日期

在本文中,我将向您展示如何使用新的Bean验证框架(又名JSR-303)。

遗产

在获得JSR 303(又名Bean验证框架)的结果之前,有两次有趣的尝试尝试验证框架。 每一个都来自层的末端,并专注于其范围。

前端验证

Struts是2001-2002年在表示层上学习和使用框架。 Struts使用MVC模型并专注于Controller,在带有Action Struts中表示。 视图是普通的JSP,Struts使用ActionForm以便将数据从Controller传递到View,反之亦然。 简而言之,这些是框架用于与View交互的POJO。

作为表示层框架,Struts关注的是验证用户输入。 动作表单有一个漂亮的方法,称为validate() 。 此方法的签名如下:

publicActionErrorsvalidate(ActionMappingmapping,HttpServletRequestrequest)

开发人员必须检查表单是否有效,然后填写(如果不是) ActionErrors对象(基本上是List )。 然后,如果ActionErrors对象不为空,Struts会将流重定向到错误页面(输入)。 由于手动检查很无聊且容易出错,因此使这种验证自动化可能是一个好主意。 即使在那时,声明式验证也被认为是关键。

Commons Validator徽标

这是Apache Commons Validator的目标。 其配置通过XML进行。 您指定:

  • 您有权访问的验证器。 有一些内置的,但您可以添加自己的
  • bean和验证器之间的关联:将通过哪些规则验证哪些bean

尽管Struts紧密集成了Commons Validator,但是您可以完全单独使用后者。 但是,最新的稳定版本(1.3.1)已于2006年末发布。当前开发的版本是1.4,但是Maven网站自2008年初以来就没有进行过更新。我的做法有些遗漏,因此我将其排除在外当我被迫使用Struts时,可以节省我的验证需求。

在这种情况下,我必须使用它,因为Struts插件知道如何使用两个XML配置文件来生成JavaScript客户端验证。

后端验证

以前,我们看到第一个验证框架来自用户输入。 另一方面,由于在数据库中强制执行了约束,因此插入/更新数据不需要进行此类验证。 例如,尝试将50个字符长的字符串插入VARCHAR(20)列将失败。

但是,让数据库处理验证有两个主要缺点:

  • 由于您需要连接到数据库,发送请求并处理错误,因此会降低性能
  • 这种错误不能轻易地映射到Java异常,如果可能的话,也可以映射到错误的特定属性

Hibernate验证器

最后,在将数据发送到数据库之前,最好在Java世界中验证域模型。 这就是Hibernate Validator的范围。 Commons Validator配置基于XML,而Hibernate Validator配置基于Java 5注释。

即使Hibernate Validator旨在验证域模型,您也可以使用它来验证任何bean。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值