如何从客户端桌面应用程序向服务器端 Spring 应用程序发出请求



我们将创建一个客户端-服务器端应用程序,其中客户端最初被请求为桌面应用程序。我们没有使用 Java 创建这些应用程序的经验,但我们已经开始考虑我们将要使用的工具。

例如,我们决定使用 Spring 作为接收请求的框架,通过最终从数据库 (MySQL) 获取数据来处理它们,然后返回响应。

我还不确定这些响应(以及来自客户端应用程序的请求)的格式是什么,但它应该尽可能独立于客户端,这样如果客户改变意见并决定他/她想要一个 Web 或移动应用程序,我们不需要更改处理所有请求的服务器端代码。

通过查看我们中的一个人提供的项目的源代码,他已经在这个领域有一些经验,显然他已经使用HttpServletRequestHttpServletResponse对象作为控制器所有方法的参数。我认为这是一个服务器端的Spring应用程序。在这种情况下,具体来说,它将是一个控制器类,用于处理对某个 URL 的请求。

代码更容易理解,因为它类似于我前段时间使用Javascript,Node,Express和Mongo的方式。这一切都基于 MVC 模式。在该环境中,通过在浏览器上写入 URL 或使用XMLHttpRequest (AJAX) 发出请求。

现在,我的疑问和问题是:

  1. 如果我们真的需要创建一个桌面应用程序,例如使用 Swing,我们将如何向 Spring 控制器发出请求?

  2. 服务器端代码与客户端代码分离的最佳方法是什么?JSON 在这里有用吗?如果是,它将如何粗略地使用?

  3. 我们是否应该在客户端也使用一个框架,该框架具有在必要时向 Spring 控制器发出请求的特定工作,还是以某种方式对请求进行硬编码就足够了?这个框架最终将如何处理Swing?

  4. JDBC适合这里吗?我想在服务器端代码中。但是我们什么时候应该使用它呢?

抱歉,这些问题很多,但我们以前没有介绍过这些环境,所以我们不知何故迷失了方向。

如果你打算在服务器端使用Spring MVC和REST控制器,你需要一个REST客户端库,它将向后端发送HTTP请求。它不一定需要以任何方式连接到Spring。

  1. 您可以从此答案中检查 REST 客户端,然后选择您喜欢的客户端。UniRest可能是桌面应用程序的不错选择。

  2. 解耦是通过提供 Restful API 来完成的,这意味着任何可以发送 HTTP 请求的客户端都可以使用您的后端服务。您可以使用任何编程语言编写客户端应用程序(在您的情况下是桌面应用程序),使用所需的任何框架。通信是通过HTTP完成的,这是解耦的一个很好的例子(例如,与RMI不同)。是的,JSON 可能是一个不错的选择,其余大多数 API 都使用 JSON 作为数据交换格式。但是你不需要,你也可以使用XML或任何其他格式(但我强烈建议JSON和Jackson作为库)

  3. 您也可以在客户端应用程序上遵循MVC方法,但这取决于您使用的框架等,但基本上您需要的只是将请求发送到后端,您可以按照自己的任何方式进行操作。要有一个漂亮的结构,您可以将数据端点隐藏在接口后面,接口的特定实现会调用后端并提供数据。您还可以将终结点 URL 外部化为配置文件,以保持组织良好的结构。或者,如果它只是一个简单的项目,那么是的,您可以硬编码并内联执行所有操作。这完全取决于你。

  4. 在Java中,JDBC仅用于连接到数据库。因此,如果您没有(关系)数据库,则根本不需要它。既然你提到你将使用MySQL,你需要它在服务器端。只需获取MySQL JDBC驱动程序(如果您使用Maven,请从此处获取依赖项),它是用于MySQL连接的JDBC API的实现。

最后一件事:与其使用旧的和过时的Swing,不如考虑使用JavaFX。这是在 Java 中执行桌面应用程序用户界面的新首选方法。

最新更新