所以我写了一个连接到MySQL服务器并用MySQL服务器做一些事情的JApplet。 当我在Eclipse中测试它时工作得很好。我有IP地址,数据库名称,我正在使用的用户名(root)以及目前硬编码到程序中的密码。 如果我将IP作为localhost,或者127.0.0.1(同样的东西,但是)或192.168.x.x(我的PC的本地地址),从Eclipse运行的JApplet将连接到MySQL服务器,没有任何问题。此外,如果我打开另一个终端并以这种方式登录mysql也可以。
但是,如果我使用Eclipse对项目进行jar操作,请在HTML applet标记中包含mysql驱动程序,并在同一台计算机上通过Web浏览器运行它。它不起作用。
以下是我正在使用的HTML标记:
<applet code="mysqlApp.MysqlInterface.class"
archive="LoginDemo.jar, mysql-connector-java-5.1.18-bin.jar"
height="150" width="450">
Your browser does not support the <code>applet</code> tag.
</applet>
我在Firefox 10中试过它。*我的路由器上转发了端口3306,我的软件防火墙已关闭。此外,MySQL服务器绑定到0.0.0.0(它接受所有接口上的连接尝试)并启用TCP / IP(不使用跳过网络选项)。我得到一个消息对话框窗口,说没有可以建立sql连接(我编写了它要做的事情),我在Java控制台中得到以下异常:
SQLException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver
has not received any packets from the server.
SQLState: 08S01
VendorError: 0
我也在最新版本的Internet Explorer for Windows 7 x64中尝试过,当我点击应该将它连接到服务器的按钮时,网页会冻结。
没有打印到运行mysqld的控制台(我使用管理终端使用mysqld --console运行它)
有人有什么想法吗?我一直在寻找一个解决方案,但我发现它似乎可能有效的一切都有一两个小细节,使它不适用于我的问题。
是的,我知道我不应该让applet直接与数据库通信,如果要在生产代码中使用它(主要的安全问题),但我现在处于这样做的早期阶段并试图弄清楚这一点出于测试目的。
感谢。
答案 0 :(得分:1)
你应该让你的applet通过ajax与一些后端(java或php)进行通信。然后使用后端与mysql通信。 ajax的好地方是http://prototypejs.org/assets/2010/10/12/prototype.js。