是否可以通过Servlet或类似方法将Java桌面应用程序与MySQL连接起来?

问题描述 投票:0回答:1

我一段时间以来一直在开发Java桌面应用程序,基本上它的作用是在线对MySQL数据库的CRUD数据进行处理。我现在的问题是安全性,我不想对客户端应用程序上的任何用户信息进行硬核化。我正在考虑这样做的两种方法:

  1. 对客户端应用程序中的大多数MySQL语句进行编码,并使用服务器应用程序将用户名和密码信息传输到客户端,因此客户端可以直接连接到数据库。我不喜欢这个主意,因为我不希望用户有任何方式来获取数据库凭据。

  2. 使用3层架构。我已经将客户端应用程序几乎完全编码,将服务器运行在MySQL上,现在我需要一个中间层来处理所有逻辑操作,凭据和所有内容,并与客户端应用程序进行通信,例如:如果客户端应用程序询问对于清单列表,然后服务器检查其凭据,并向客户端应用发送包含所有清单的文件。

我的问题是这个:

  • 我应使用哪个组件来实现选项2?有人告诉我使用Servlet,我一直在阅读有关它的信息,但这将是最好的选择吗? Servlet用于Web应用程序,我不知道如何使我的客户端应用程序(将在桌面上运行)与Servlet通信并接收数据?
java mysql database servlets desktop-application
1个回答
0
投票

您应该对自己的第一选择表示怀疑。一方面,当MySQL和其他数据库服务器远离公共Internet进行防火墙保护时,它们的安全性要高得多。

您需要一个可以将数据传递到客户端层的服务器层。

重要安全提示不构建服务器层以接受来自客户端层的原始SQL查询。网络蠕变可能会使用它来发出诸如SELECT * FROM user之类的查询并破坏您的数据。或DROP TABLE user破坏系统。

制定一个API,您的客户端可以通过该API向您的服务器请求CRUD服务。您可能需要考虑一种REST风格的API,客户可以在其中说出诸如>]之类的内容。

获取https://example.com/user/id

或使用类似方法更新数据

POST https://example.com/user/id

tel=5551212&[email protected]

技巧是弄清楚您要在RE

代表性S tate T转移中使用哪种对象。然后,您可以使用http PUT创建它们,用POST替换或更新它们,并使用DELETE删除它们。

REST风格的API在客户端中很容易实现;他们使用普通的HttpClient operations。通过https可以轻松保护它们。

通常,它们通过秘密令牌(API密钥)进行授权,并随每个请求一起包含在http标头对象中。您可以阅读有关的内容。

因此,您的服务器代码必须实现您的API。如果选择使用Java语言来实现它,那么servlet是必经之路:它们是开发和部署Java Web服务器代码的方法。您可以将它们部署在TomcatJetty服务器环境中。

有很多有关如何执行此操作的资源。例如,https://www.journaldev.com/9170/restful-web-services-tutorial-java

© www.soinside.com 2019 - 2024. All rights reserved.