我的自签名小程序完美适用于applet查看器和我的本地Web浏览器。但是,当我根据网站服务器上的mysql数据库的db名称,用户名和密码更改连接字符串并通过ftp将项目上传到服务器时,applet无法连接到数据库。小程序代码是:
public void init() {
JPanel panel = new JPanel();
panel.add( new JLabel("Start"));
revalidate();
// TODO start asynchronous download of heavy resources
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://www.mywebiste.com:3306/database";
String user = "user";
String password = "password";
try {
Class.forName(driver);
Connection con = DriverManager.getConnection(url,user,password);
String sql4 = "Select * from form where Il='Ankara'";
//System.out.println(password + " " + userName);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql4);
panel.add( new JLabel("Connection"));
revalidate();
}
catch(Exception e) {
panel.add( new JLabel("Not Connected"));
revalidate();
}
Container content = getContentPane();
content.setLayout(new GridBagLayout());
content.add(panel);
}
答案 0 :(得分:1)
你是同源政策的受害者。
通过签署applet可以解决这个问题,但我强烈建议不要打扰。由于Java中最近涉及Applet和JNLP的所有安全问题,这项技术与渡渡鸟一样死亡。越来越多的系统默认禁用Java applet,更多的用户自己(或他们的IT部门)禁用它。
最好在服务器上的webapp中使用一些轻量级REST服务,在浏览器上使用一些javascript(或者如果你真的坚持使用applet),这些服务通过http使用这些服务。然后,您也不需要将数据库公开给网络。
即使对于内部应用程序,我也会认真考虑它(或者回过头来询问谁)。