Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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 如何从客户端桌面应用程序向服务器端Spring应用程序发出请求?_Java_Spring_Swing_Spring Mvc_Jdbc - Fatal编程技术网

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

Java 如何从客户端桌面应用程序向服务器端Spring应用程序发出请求?,java,spring,swing,spring-mvc,jdbc,Java,Spring,Swing,Spring Mvc,Jdbc,我们将创建一个客户端-服务器端应用程序,其中客户端最初被请求为桌面应用程序。我们没有使用Java创建这些应用程序的经验,但我们已经开始考虑我们将要使用的工具 例如,我们决定使用Spring作为框架来接收请求、处理请求,最终从数据库(MySQL)中获取数据,然后返回响应 我还不确定这些响应(以及来自客户端应用程序的请求)的格式,但它应该尽可能独立于客户端,这样,如果客户改变意见并决定他/她想要一个web或移动应用程序,我们就不需要更改处理所有请求的服务器端代码 通过查看我们其中一人提供的项目源代码

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

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

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

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

代码更容易理解,因为它类似于我以前使用Javascript、Node、Express和Mongo的方式。这一切都基于MVC模式。在这种环境中,请求要么通过在浏览器上写入URL,要么通过使用
XMLHttpRequest
(AJAX)进行

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

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

  • 将服务器端代码与客户端代码解耦的最佳方法是什么?JSON在这里有用吗?如果是,将大致使用多少

  • 我们是否也应该在客户端使用一个框架,在必要时向Spring控制器发出请求,或者对请求进行硬编码就足够了?这个框架最终将如何处理Swing

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


  • 很抱歉,这些问题很多,但我们以前没有接触过这些环境,所以不知何故我们迷路了

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

  • 您可以查看其他客户机,然后选择您喜欢的客户机。UniRest可能是桌面应用程序的一个好选择

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

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

  • 在Java中,JDBC仅用于连接到数据库。因此,如果您没有(关系)数据库,则根本不需要它。因为您提到要使用MySQL,所以需要在服务器端使用它。只要抓取MySQL JDBC驱动程序(如果您使用Maven从中获取依赖项),它就是用于MySQL连接的JDBCAPI的实现


  • 最后一件事:不要使用旧的和过时的秋千,考虑使用JavaFX。这是用Java编写桌面应用程序用户界面的新的首选方式。

    您可以在客户端站点上使用它来执行请求。只需将您的请求序列化为JSON,将其发送到SERVICE,并将来自服务器的JSON取消序列化。“您也可以在客户端应用程序上采用MVC方法,但这取决于您使用的框架等”。我们使用的框架是指我们在客户端使用的REST库,还是什么?如果没有,哪些框架允许我在客户端设置MVC方法?或者rest库正是这样吗?请您大致澄清更好的第3点(如果您有时间并且愿意:)?我想我不太明白你在说什么……第四点。更有经验的团队成员建议使用MySQLWorkbench来处理数据库。那么在这一点上我们为什么需要JDBC呢?或者,如果我们仍然需要它,它到底适合哪里?@nbro不,rest库与此完全无关。MVC是一种分离模型、视图和控制器的模式,这意味着将业务逻辑与UI及其关联数据分离。这取决于您使用的UI框架。@nbro MySQL workbench是一个图形工具,用于操作数据库、发送查询等。它是一个用户产品,不可编程,不提供API等。它与JDBC完全不同。JDBC是一种API,意味着您可以在代码中使用它,从Java代码中调用它的方法/接口来与数据库通信,获取所需的数据,更新数据等等。