我创建了一个与MS Access数据库通信的applet(至少应该是这样)。当我通过Dr Java或NetBeans运行它时它工作正常,但当我将.class文件嵌入到html页面并打开html页面时,它似乎运行但它应该对数据库实际发生的任何更改都没有它也无法从数据库中检索数据。我需要做什么?
注意:html文件,类文件和java源文件都在我的计算机上,并且在同一文件夹中。 html文件没有发布或者任何东西,我只是自己创建它来测试applet。
答案 0 :(得分:2)
小程序在沙箱环境中运行。如果applet需要访问用户系统资源,则需要对其进行签名。 将你的“.class”文件打包在一个jar中。在jar之外有一个html文件,它引用你的applet标签内的jar。然后签署您的applet jar。见http://java.sun.com/developer/onlineTraining/Programming/JDCBook/signed.html
----------- UPDATE ------------------------------
有两种方法可以连接到服务器端的数据库。
1-艰难的道路。不受信任的小程序无法触及计算机的硬盘。因此,您的applet不能在硬盘驱动器上使用本机或其他本地文件(例如JDBC数据库驱动程序)。第一种替代解决方案是创建一个数字签名的小程序,它可以使用本地安装的JDBC驱动程序,能够直接连接到服务器端的数据库。
2-简单的方法。不受信任的applet只能打开与下载它们的服务器的网络连接。因此,您必须将数据库侦听器(数据库本身或中间件服务器)放在从中下载applet的服务器节点上。 applet将打开与中间件服务器的套接字连接,该中间件服务器位于与从中下载applet的web服务器相同的计算机节点上。中间件服务器用作中介,连接到数据库并从数据库中提取数据
答案 1 :(得分:2)
如果您想在服务器上使用数据库,则需要将其与applet所在的服务器放在同一台服务器上。例如。使用Jetty并编写一个通过JDBC与数据库通信的Servlet。然后,applet必须与您的Servlet通信,可能作为Web服务。
答案 2 :(得分:1)
(OP在other thread上的评论。)
请问您能解释一下applet如何“回家”到自己的服务器上?
我怀疑您当前方法的基本问题是JRE对于DB和applet是否在同一个“服务器”上感到困惑。首先要做的是停止考虑文件夹或目录(或其关联的URL),并做所有事情,包括访问applet,通过。你的本地服务器。所以applet的URL应该是......
http://localhost:8080/the/applet.html
然后确保所有对DB的调用都是通过服务器完成的。