1

我正在使用 Struts 和 Hibernate 编写一个 Web 应用程序。最近,我发现了GWTVisualization API。这一切看起来都非常有趣,并提供了我的应用程序需要的 AJAX 功能。我是新手,很迷茫。。。。

在哪里放置数据访问级别检查?

在 Web 应用程序中,用户对数据具有不同级别的访问权限。例如,不同数据的读/写权限的不同组合。当访问或修改任何数据时,应用程序会检查某种用户配置文件。用户将根据结果获得数据访问权限——拒绝查看访问权限或可以查看数据但无法更改数据等。我不确定在哪里进行此特定检查。我想我可以将它编码在DAO 中,每次处理数据操作时,根据配置文件手动检查查询的数据。或者,放在业务逻辑/显示层,如果用户没有数据访问权限,就拿离用户的按钮。还是两者兼而有之或者hibernate中有没有配置文件我可以在某个地方为所有映射的表指定数据访问权限?

传递信息的最佳实践

模型/视图/控制器之间非常需要通信,对 GWT 进行 RPC 调用,并将数据传递给可视化代码以呈现图表和其他内容。我猜它肯定需要某种将 Java 对象转换为 JSON 对象的转换器,以便进行 gwt-rpc 调用并使用 Visualization API 绘制图表。我对么?此外,就在 Struts 和 Hiberante 中传递信息而言——编写数据传输对象是个好主意吗?然后就一直传豆子?或者(我今天刚刚遇到这个......甚至不确定我是否理解正确)可能将对象绑定到JNDI上,并从程序的其他部分访问它们?

任何输入/澄清将不胜感激。非常感谢你!

4

3 回答 3

2

访问级别检查:

我会将访问级别检查分离到它自己的类中,并让您的“控制器”在调用 DAO 之前先调用访问管理器。即,每个操作在执行DAO 调用以获取/插入数据之前执行检查。

但是,如果您使用 gwt,更好的方法是进行 RPC 调用而不是使用 struts 操作。rpc 调用成为我上面提到的“控制器”,并且可以使用我上面提到的管理器进行访问检查 - 即消除操作。

至于访问管理器,我建议枚举所有细粒度的访问权限,并将这些权限组合成一个可以与每个用户/配置文件/任何内容相关联的集合。

在 gwt 上传递信息 对于使用 hibernate 来说是一件痛苦的事情——你可以尝试使用Gilead,但我没有取得太大的成功,它对我来说太麻烦了。您对 json 转换的想法是进入 gwt imho 的正确方法。gwt 1.5 支持所谓的 javascript 对象覆盖,它允许您返回 json,并直接将其“叠加”到 gwt java 对象中,而您只需要很少的代码。查看这篇文章了解更多信息。

另一种方法是推出自己的 DTO 生成设施(这是 Gilead 的意思,但我认为它不会自动生成?不确定)。将其作为构建的一部分实施。如果它不是一个大项目,它的一些额外工作是不值得的。

于 2009-02-07T02:23:12.063 回答
1

关于您的第一个问题,我不能说太多,因为我真的不喜欢将 Struts 用于与 GWT 相关的任何事情。

至于你的第二个问题,不,你不应该使用任何 JSON。听起来您的后端是 Java,这意味着 GWT RPC 机制只能与 POJO 一起使用。因此,您只需创建绘图所需的对象并在客户端和服务器之间来回传递它们。GWT 将开箱即用地为您完成所有 RPC 工作。

编写数据传输对象可能是必要的,但前提是您的休眠模型文件包含 GWT 编译器无法理解的内容。我通常使用 EJB3 和 Stripes(而不是 Hibernate 和 Struts),在我的情况下,我不需要编写任何数据传输对象,我只需使用 EJB3 POJO 并在我的客户端和服务器之间传递它们。

于 2009-02-06T03:01:08.743 回答
0

服务器端的数据访问级别检查是最安全的方法。但是 GWT 仍然会生成一个打包的 JS。您可以在客户端执行此操作。但在这种情况下,每次都应该从服务器端检查/获取用户配置文件。

传递信息:我在向量中使用分隔字符串。而且运行良好...

于 2009-10-30T19:52:59.703 回答