使用嵌入在 html 页面中的小程序与数据库通信

Posted

技术标签:

【中文标题】使用嵌入在 html 页面中的小程序与数据库通信【英文标题】:Using an applet embedded in html page to communicate with database 【发布时间】:2011-07-19 21:03:20 【问题描述】:

我创建了一个与 MS Access 数据库通信的小程序(或者至少应该如此)。当我通过 Dr Java 或 NetBeans 运行它时它工作正常,但是当我将 .class 文件嵌入到 html 页面并打开 html 页面时,它似乎可以运行,但它应该对数据库进行的任何更改实际上都没有发生它也无法从数据库中检索数据。我需要做什么?

注意:html文件、class文件、java源文件都在我的电脑上,在同一个文件夹下。 html文件没有发布什么的,我只是自己创建来测试小程序的。

【问题讨论】:

【参考方案1】:

如果你想把数据库放在服务器上,你需要把它和小程序放在同一台服务器上。例如。使用 Jetty 并编写一个通过 JDBC 与数据库通信的 Servlet。然后,小程序必须与您的 Servlet 进行通信,可能作为 Web 服务。

【讨论】:

使用小程序不能直接与数据库通信吗? (通过服务器,我只是指一台上面有数据库的计算机 - 我不确定实际定义是什么)。 @joseph:是的,应该可以,只要使用JDBC连接就行了。但推荐。 谢谢,我现在正在使用 JDBC,但我的问题仍然存在,othman 提供的那个网站并没有真正解决我的问题。还有(这个问题是次要的),为什么不推荐呢?如果出于安全原因,我以某种方式对其进行了密码保护,无论如何,只有指定网络中的用户才能访问它 - 因此未经授权的访问不会成为问题,而且数据无论如何也不敏感。 @joseph:是的,出于安全原因。小心。【参考方案2】:

小程序在沙盒环境中运行。如果小程序需要访问用户系统资源,则需要对其进行签名。 将您的“.class”文件打包在一个 jar 中。在 jar 外部有一个 html 文件,该文件在 applet 标记内引用您的 jar。然后签署你的applet jar。见http://java.sun.com/developer/onlineTraining/Programming/JDCBook/signed.html

-----------更新------------------------------

有两种方法可以连接到服务器端的数据库。

1- 艰难的道路。不受信任的小程序不能接触计算机的硬盘。因此,您的小程序不能使用硬盘驱动器上的本机或其他本地文件(例如 JDBC 数据库驱动程序)。第一个替代解决方案是创建一个数字签名的小程序,它可以使用本地安装的 JDBC 驱动程序,能够直接连接到服务器端的数据库。

2- 简单的方法。不受信任的小程序只能打开与下载它们的服务器的网络连接。因此,您必须在从中下载小程序的服务器节点上放置一个数据库侦听器(数据库本身或中间件服务器)。小程序将打开到中间件服务器的套接字连接,该中间件服务器位于与下载小程序的网络服务器相同的计算机节点上。中间件服务器用作中介,连接数据库并从数据库中提取数据

【讨论】:

我读到了,但我希望小程序只能在我发布 html 时访问我的系统。我只希望它访问我计算机上的数据库(或我运行它的任何服务器),但不访问任何其他用户的主文件。我该怎么做?【参考方案3】:

(OP 对other thread 的评论。)

您能否解释一下小程序如何“回拨”到它自己的服务器?

我怀疑您当前方法的基本问题是 JRE 对数据库和小程序是否在同一个“服务器”上感到困惑。要做的第一件事是停止考虑文件夹或目录(或其关联的 URL),并做所有事情,包括通过访问小程序。您的本地服务器。所以小程序的 URL 应该类似于..

http://localhost:8080/the/applet.html

然后确保对数据库的所有调用也通过服务器完成。

【讨论】:

以上是关于使用嵌入在 html 页面中的小程序与数据库通信的主要内容,如果未能解决你的问题,请参考以下文章

在 DT 表中的一行中嵌入闪亮的小部件

嵌入 jsp 时,数据库值未显示在小程序中

开发微信小程序在html5中怎么实现的

嵌入式iframe子页面与父页面js通信方式

Qt嵌入浏览器(六)——QCefView实现JS通信接口

webview 嵌入 h5 页面互相通信