使用GWT,Struts和Hibernate在Web应用程序中进行数据处理

时间:2009-02-05 20:20:31

标签: hibernate gwt struts jndi google-visualization

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

在何处进行数据访问级别检查?

在网络应用中,用户对数据具有不同的访问级别。例如不同数据的读/写权限的不同组合。当访问或修改任何数据时,应用程序将检查某种用户配置文件。根据结果​​给用户提供数据访问权限 - 拒绝查看访问权限或者可以查看数据但无法更改数据等。我不确定在何处进行此特定检查。我想我可以在 DAO 中编码,每次处理数据操作时,都要根据配置文件手动检查查询数据。或者,将其置于业务逻辑/显示层中,如果用户没有数据访问权限,请将该按钮从用户处取走。还是两者?或者在hibernate 中是否存在配置文件?我可以为映射的所有表指定数据访问权限吗?

传递信息的最佳做法

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

任何意见/澄清都将受到赞赏。非常感谢你!

3 个答案:

答案 0 :(得分:2)

访问级别检查:

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

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

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

传递信息 gwt与hibernate一起工作很痛苦 - 你可以尝试使用Gilead,但我没有取得多大成功,对我来说太麻烦了。你对json转换的想法是gwt imho的正确方法。 gwt 1.5支持什么称为javascript对象覆盖,它允许你返回json,并直接用你的小代码“叠加”到gwt java对象中。 check out this post了解更多信息。

另一种方法是推出你自己的DTO生成设施(这是吉利德打算做的,但我不认为它会自动生成?不确定)。将它作为构建的一部分来实现。如果它不是一个大型项目,它的一些额外工作是不值得的。

答案 1 :(得分:1)

我不能谈论你的第一个问题,因为我真的不喜欢将Struts用于任何与GWT相关的问题。

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

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

答案 2 :(得分:0)

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

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