春季 + GWT 或春季 vs GWT背景视图问题

2022-09-02 01:21:27

背景

我正在使用GWT,Java和EclipseLink开发Web应用程序。这些选择中的每一个都是我为实施此程序所做的选择。GWT是唯一一个没有牢牢掌握与春季相比究竟是什么的选择。现在,我使用GWT小部件来实现客户端,并使用GWT RequestFactory来实现EclipseLink中实体的服务器 - 客户端通信。

视图

因此,我将GWT主要视为一个小部件库,其中包含用于服务器 - 客户端通信的简单框架。这与我对Spring的看法大致相同,Spring是一个小部件库,具有更先进和复杂的框架来控制服务器 - 客户端通信 - 它可能无法像GWT那样方便地实现AJAX。

因此,考虑到这些,我将GWT视为理解并最终与Spring合作的垫脚石。然而,再次谷歌搜索这个话题,我遇到了几个像这样的话题,以及那个似乎与Spring是什么的原始概念背道而驰,以及这对GWT意味着什么。

问题

  1. 对GWT和Spring的看法是否有误解?如果是这样,我们将不胜感激!
  2. 在Spring Framework中,GWT小部件的对应部分是什么?
  3. 在春季框架中,GWT RequestFactory的对应部分是什么?

答案 1

这实际上取决于您计划在应用程序中使用的方式。GWT

GWT最适合用于单主机页面 Web 应用程序。
这意味着所有流同步和业务逻辑都是使用 在客户端完成的。
这是真正闪耀的地方(请参阅此处了解更多详细信息)。GWTGWT

但是,如果您沿着这条路走下去,您最终将得到基本上两个不同的应用程序。例如,您将有一个使用Spring开发的前端和一个后端。您的后端(Spring或您使用的任何内容)将仅充当“数据存储”,为您提供要在GWT前端中显示的数据。因此,您可能不会使用任何功能。GWTSpring MVC's

当然,您也可以使用和使用GWT只是为了将Web 2.0功能添加到您的网站,但是对于该用例,我建议使用jQuery,Closure或其他javascript框架。Spring MVC

对于您的问题:

对GWT和Spring的看法是否有误解?如果是这样,我们将不胜感激!

如果您按预期使用(单主机页面Web应用程序),则不会使用Spring的MVC部分。您仍然可以使用授权身份验证ORM和Spring框架的许多其他组件,但是GWT处理所有视图。
Spring或多或少仅充当GWT前端应用程序的数据存储。这就像有两个不同且独立的应用程序,它们通过通信协议(,,等)连接。GWTRequestFactoryRESTRPC

在Spring Framework中,GWT小部件的对应部分是什么?

在Spring Framework中没有GWT小部件的真正对应部分(也许在某种程度上是JSF)。Spring是关于服务器端的,所以所有的视图都是在服务器端创建的。而GWT则完全是关于客户端的。

在春季框架中,GWT RequestFactory的对应部分是什么?

RequestFactory是前端应用 (GWT) 和后端应用 (Spring) 之间的通信协议。使用时,您不需要任何通信协议,因为视图是在您已经拥有数据的服务器端生成的。Spring MVC


答案 2

GWT不是一个小部件库,而是一个完整的框架,用于生成在客户端而不是服务器端运行的完整Web应用程序。基本区别在于spring(MVC模式)是以服务器为中心的,因此它连接到ddbb,执行业务逻辑并生成要发送到客户端的视图,因为GWT(MVP模式)在生成视图的浏览器中运行演示器,并且它只是连接到服务器以获取结果或对象(远程方法)。

也就是说,根据您的GWT应用程序,您可能需要服务器端的逻辑,以及其他元素,如ddbb,spring等。

关于何时选择GWT或任何其他框架的决定取决于您是否需要在浏览器中运行的丰富(类似桌面)的应用程序。

从逻辑上讲,您可以在任何复杂程度上混合GWT和spring,但合乎逻辑的方法是让spring负责数据模型及其业务逻辑,GWT负责其余的工作。

学习这种组合的最佳方法是探索使用Spring-roo生成的小项目。它可以创建一个完整的项目,其中包含所有设置的maven,spring,gwt,mvp和rf。只需安装 roo 1.2.2 并在 roo 控制台中运行以下命令集:

project --topLevelPackage com.project.contacts
persistence setup --provider ECLIPSELINK --database HYPERSONIC_PERSISTENT
database properties set --key database.url --value jdbc:hsqldb:/var/tmp/contacts.db
entity jpa --class com.project.contacts.domain.Contact --testAutomatically
field string name --notNull --sizeMin 1 --sizeMax 30 --class ~.domain.Contact
field string surname --notNull --sizeMin 1 --sizeMax 30 --class ~.domain.Contact
field string phone --notNull --sizeMin 1 --sizeMax 15 --class ~.domain.Contact
web gwt setup
web gwt all --proxyPackage ~.client.proxy --requestPackage ~.client.request
quit

然后执行

mvn gwt:run

我看到roo的主要问题是,当您修改模型时,它使用“aspectj”来更新托管分类,但是一旦您的项目设置好了,您就可以使用eclipse删除roo依赖项和aspectj文件。


推荐