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

时间:2016-03-05 11:13:27

标签: java spring swing spring-mvc jdbc

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

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

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

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

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

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

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

  2. 将服务器端代码与客户端代码分离的最佳方法是什么? JSON在这里有用吗?如果是的话,它会被大致使用多少?

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

  4. JDBC适用于何处?我想在服务器端代码中。但我们应该什么时候使用呢?

  5. 对不起,这些问题很多,但我们之前没有介绍过这些环境,所以我们不知所措。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

  5. 最后一件事:考虑使用JavaFX,而不是使用旧的和过时的Swing。它是使用Java进行桌面应用程序用户界面的新首选方式。