使用 DTO 和哈希映射的 Java 服务器端表单验证

Posted

技术标签:

【中文标题】使用 DTO 和哈希映射的 Java 服务器端表单验证【英文标题】:Java server side form validation using DTO and hash map 【发布时间】:2013-05-27 00:16:30 【问题描述】:

我正在使用 MVC 模式开发应用程序。

控制器:servlet

型号:我关注DAO/DTO pattern访问数据库

视图:简单的 JSP EL 和 JSTL

为了访问数据库,我使用DAO pattern。我想在 DTO 类中放置错误消息的验证方法和 HashMap 以验证 FORM 数据,类似于Putting validation method and hashmap into DTO。

我的问题是 - 这是一种正确的方法吗?如果不是这样做的理想方法是什么?

作为总结:当我们使用 DAO/DTO 模式时,我想知道服务器端表单验证的真实解决方案。请帮帮我。

【问题讨论】:

我想请你们回答这个问题@balusc,任何想法请帮助... 引用自***关于DTO 的文章(强调我的):“...... DTO 没有任何行为,除了存储和检索自己的数据(访问器和修改器)。DTO 是简单的对象,不应包含任何需要测试的业务逻辑。”顺便说一句,在 Java EE 世界(前 J2EE)中,DTO 模式通常被称为 Transfer Object (TO)。另请参阅Transfer Object 的精彩描述,以更好地了解其使用场景。 服务器端返回错误信息的常见场景见this answer。 【参考方案1】:

我认为您需要分别对待您正在实施的架构和您用于实施该架构的框架。

Java 有一套丰富的工具可用于处理应用程序的三个标准层,选择取决于预期负载和服务器资源等一些因素,如果您有两个或三个用户的应用程序,那么这只是个人喜好问题.

就 DAO/DTO 而言,您还有一些选择,例如,您可以使用 hibernate 构建数据访问层,然后为您的服务层 API 使用 DTO。在这种情况下,您可能希望使用一种工具在您的域模型和您的 DTO 之间进行映射(例如 jDTO Binder)。

另一种常见的方法是使用 Spring JDBC 模板,您可以更疯狂地使用相同的域对象作为服务层 API 的一部分。

最后,事实是,你可以按书本做,也可以根据你的场景、品味和经验完全不同的选择。

【讨论】:

以上是关于使用 DTO 和哈希映射的 Java 服务器端表单验证的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 中将双向实体映射到 DTO

这是使用 Mapper 映射实体和 dto 的正确方法吗?

如何将DTO映射到多个实体?

我应该将 DTO 映射到客户端和服务器端的域实体/从域实体映射吗?

哈希映射和映射有啥区别[重复]

算法笔记-哈希算法2