Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
哪种Java框架最适合使用GoogleWebToolkit?_Java_Gwt_Servlets - Fatal编程技术网

哪种Java框架最适合使用GoogleWebToolkit?

哪种Java框架最适合使用GoogleWebToolkit?,java,gwt,servlets,Java,Gwt,Servlets,GWT是我转向java进行web开发的主要原因。哪种java框架最适合使用它,同时也最大限度地提高了用于表单验证、数据库访问、分页等日常任务的代码重用 谢谢。我想你不是指web框架,因为GWT本身就是一个框架。我将使用JSF来处理应用程序/业务逻辑端。它使存储和范围bean以及访问数据库变得容易。为了阅读DB,你可以选择任何你喜欢的JPA风格。我对Eclipselink有很好的经验,但现在它们都实现了相同的接口。此外,您可能希望查看EJB,以便将所有内容组合在一起,并注入您需要的JPA。Spri

GWT是我转向java进行web开发的主要原因。哪种java框架最适合使用它,同时也最大限度地提高了用于表单验证、数据库访问、分页等日常任务的代码重用


谢谢。

我想你不是指web框架,因为GWT本身就是一个框架。我将使用JSF来处理应用程序/业务逻辑端。它使存储和范围bean以及访问数据库变得容易。为了阅读DB,你可以选择任何你喜欢的JPA风格。我对Eclipselink有很好的经验,但现在它们都实现了相同的接口。此外,您可能希望查看EJB,以便将所有内容组合在一起,并注入您需要的JPA。

Spring显然是您应该使用的工具。GWT有自己的RPC控制器框架,所以我真的无法想象需要一个Web应用程序框架(比如JSF)来做什么

JPA在几个方面都是合理的选择,但也存在问题

首先,将JPA对象发送到客户端可能是一个问题。GWT(至少高达1.5)强制执行一个非常严格的目录结构,因此您必须将实体放在GWT源代码树下。除此之外,将JPA实体序列化到客户端和从客户端序列化(通常是JSON)JPA实体可能存在问题

JPA实体是相当刚性的对象,几乎一对一地映射到表中。然而,在表示层中使用数据的方式往往不是这样。DirectSQL将允许您挑选和选择您需要和不需要的数据,这些数据是专门为该页面定制的。所以JPA实体通常会有很多您不感兴趣的字段,不应该序列化(特别是一对多关系的集合)

现在,SQL的这一方面——根据页面对其进行裁剪——常常被认为是实体的一个优势:您的代码不会最终被一个use-value对象弄得乱七八糟。问题是,在gWT+JPA中,您仍然会得到相同的东西,但不是在持久层或业务层,而是在表示层中得到它们。现在你可以称之为优势。我称之为六对一,六对一

实际上,我认为Ibatis比JPA更适合GWT应用程序模型,因为您使用的是直接SQL、为您的目的定制的对象,这些对象可以从数据库一直使用到客户端。现在,这个概念可能会吓坏Java领域中非常常见的分层狂热者,但请记住,分层是达到目的的一种手段,而不是目的本身。如果它对你有帮助,就使用它。如果没有,就不要

但在这一堆中,春天是绝对必须的


我还将向您介绍和。

如果您正在开发更多类似应用程序的站点,而不是基于页面的站点,我建议您看看开源框架。这是一个服务器驱动的框架,它在客户端使用GWT呈现前端,但也在服务器端自动处理和保留敏感的业务逻辑。这增加了一些安全性,您不必担心clientserver流量(如果您不想),但可以专注于以您喜欢的任何方式实现服务器端逻辑。 最大的优点是,您真的不必编写任何其他Java语言所需的代码。在框架中实现自己的新GWT组件也相当容易


免责声明:是的,我为IT工作,开发Vaadin,但看一眼并没有伤害到任何人,是吗

这些反应伤害了我的眼睛。JSF(如果你是受虐狂)或Spring(如果你是临床精神病患者;)

如果您使用内置的GWT RPC,那么您不需要web框架,只需使用RPC机制与服务器通信即可。对于后端数据库和业务逻辑,您只需使用标准的JPA会话bean和POJO。这是一个非常轻,易于使用和支持的堆栈没有任何头痛。如果你打算在GWT之外制作表单,那么请确保帮自己一个忙,并检查条纹

在ASCII图形中:

数据库


JPA会话bean和pojo


Web层处理GWT和EJB层之间的路由



GWT在浏览器中作为javascript运行,利用您在EJB层中定义的所有POJO

现在我使用的是GWT+Struts+Spring+Hibernate
最好使用json数据交换,而不是使用GWT webservice。

为此,我们可以将逻辑和表示分开。

我主要将GWT用于内部系统,但发现我所需要的只是一个组织良好的代码库、PAC模式和Hibernate。我需要的东西做得很好

我开始尝试使用像dozer这样的工具在客户端服务器上序列化bean,但很快发现这是不必要的。如果您需要一个foo上的条集合,那么请下拉列表aka getbar(foo)。您需要将foo-RPC保存到save()。保持简单,把你需要的写下来,把你需要的贴出来,不要再写了。在客户机上维护状态,这一切都很好地结合在一起

对我来说,最重要的是让我意识到GWT不是关于构建web应用程序的。它是关于在网络上构建应用程序的。非常不同的事情

格夫特


编辑:我忘了说,我确实有一个与DAO对象服务器端交互的逻辑层——但它们非常简单,只是用新对象实例化了

如果你想要乐趣,为什么不将playframework.org与GWT一起使用呢?
这可以让您非常快速地掌握速度,并在服务器端提供您所需的一切(例如,通过hibernate的jpa):

在我看来,最好的堆栈是前端的GWT/GIN/Guice,然后是后端的Guice注入jpa+数据库的某个提供者

春天是沉重的,它比你可能需要的要多得多。Guice非常轻量级,专门为依赖注入而构建。Gin基本上非常类似于GWT/Javascript上下文中的Guice

我也认为这有很多价值,特别是当你在使用新技术的早期阶段