有没有办法通过servlet或类似的方式将Java桌面应用程序与MySQL连接起来?
一段时间以来,我一直在开发一个Java桌面应用程序,它的基本功能是在线CRUD MySQL数据库的数据。我现在的问题是安全性,我不想在客户端应用程序上硬核任何用户信息。我正在考虑两种方法:有没有办法通过servlet或类似的方式将Java桌面应用程序与MySQL连接起来?,java,mysql,database,servlets,desktop-application,Java,Mysql,Database,Servlets,Desktop Application,一段时间以来,我一直在开发一个Java桌面应用程序,它的基本功能是在线CRUD MySQL数据库的数据。我现在的问题是安全性,我不想在客户端应用程序上硬核任何用户信息。我正在考虑两种方法: 在客户端应用程序中对大多数MySQL语句进行编码,并使用服务器应用程序将用户和密码信息传输到客户端,这样客户端就可以直接连接到数据库。我不喜欢这个想法,因为我不想让用户以任何方式获取数据库凭据 使用3层体系结构。我的客户端应用程序几乎完全编码,服务器运行在MySQL上,现在我需要一个中间层来处理所有逻辑操作、
- 我应该使用哪个组件来实现选项2?我被告知要使用servlet,我一直在读关于它的文章,但这是最好的选择吗?Servlet用于web应用程序,我不知道如何让我的客户端应用程序(将在桌面上运行)与Servlet通信并接收数据
- 你对自己的第一选择持怀疑态度是对的。首先,MySQL和其他数据库服务器在远离公共互联网的情况下会更加安全
您需要一个服务器层,它可以将数据传送到您的客户机层
重要安全提示不要构建服务器层来接受来自客户端层的原始SQL查询。网络爬虫可能会使用它向用户发出类似
SELECT*的查询
,并破坏您的数据。或删除表格用户
,以丢弃系统
制定一个API,通过该API,您的客户端可以从您的服务器请求CRUD服务。你可能想考虑一个休息风格的API,客户可以这样说:
得到
或者使用以下内容更新数据:
职位
电话=5551212和电子邮件=mickey@disney.com
诀窍是找出你想在REpresentationalStateT传输中使用什么类型的对象。然后您可以使用HTTPPUT来创建它们,POST来替换或更新它们,DELETE来删除它们
REST风格的API很容易从客户机内部实现;他们使用普通的。它们很容易用https进行保护
它们通常通过一个秘密令牌(API密钥)进行授权,该密钥随每个请求一起携带在http头对象中。你可以读一下
因此,服务器代码必须实现API。如果您选择使用Java语言来实现它,servlets就是一种方法:它们是开发和部署JavaWeb服务器代码的方法。您可以将它们部署在或服务器环境中
关于如何做到这一点,有大量的资源可用。例如,或通过web浏览器的远程用户界面
第三种选择:在服务器端运行所有业务逻辑的Web应用程序,用户界面使用自动生成的HTML/CSS/JavaScript在Web浏览器中远程运行。用户将运行web浏览器,而不是您的web浏览器
在这种情况下,客户端不会直接接触数据库,也不会运行任何敏感代码。我认为这是旧版本的现代转世(服务器上的应用程序,远程呈现的UI)
有两个这样的平台:
- 在服务器上运行纯Java。建立在久经考验的技术之上
- (以前称为RealBasic)在服务器上运行专有编译的面向对象编程语言