Апплет не читает данные из базы данных MySQL при работе в браузере

Я создал класс Java-апплета, который читает данные из БД и отображает их в апплете. программа работает правильно, и я извлекаю данные, когда запускаю ее из Eclipse IDE, но когда я запускаю ее из браузера, используя HTML-код, она запускается, но не получает данные из БД. это код, который я использовал.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import javax.swing.JApplet;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.JLabel;


public class Driver extends JApplet {
  private Connection connect = null;
  private Statement statement = null;
  private PreparedStatement preparedStatement = null;
  private ResultSet resultSet = null;
  private JLabel lbl = null;
  private String label;

  public void init() {
      try {

          try {
              // this will load the MySQL driver, each DB has its own driver
              Class.forName("com.mysql.jdbc.Driver");

              // setup the connection with the DB.
              connect = DriverManager
                  .getConnection("jdbc:mysql://localhost/jdbc?"
                      + "user=root&password=");

              // statements allow to issue SQL queries to the database
              statement = connect.createStatement();
              // resultSet gets the result of the SQL query
              resultSet = statement
                  .executeQuery("select * from jdbc.info");
             // writeResultSet(resultSet);
              while (resultSet.next()) {
                  String user = resultSet.getString("id");
                  String name = resultSet.getString("name");
                  label = user +" "+ name;
                }     
            } catch (Exception e) {
              throw e;
            } finally {
             // close();
            }

          SwingUtilities.invokeAndWait(new Runnable() {
              public void run() {
                  lbl = new JLabel(label);
                  add(lbl);
              }
          });


      } catch (Exception e) {
          System.err.println("createGUI didn't complete successfully");
      }
  }

  public static void main(String[] args) throws Exception {
        Driver dao = new Driver();
        dao.init();
  }


} 

И это HTML-код

<html>
  <head>
    <title>My first app reding from db</title>
  </head>
  <body>
    My first app reding from db<br />
    <applet code="jdbcdemo/Driver.class" width="700" height="700" />
  </body>
</html>

Может ли кто-нибудь помочь мне выяснить, почему апплет не читает из базы данных, которая находится на локальном сервере Wamp. это определенный каталог, где я должен добавить.Class для его запуска?

1 ответ

Представьте, что кто-то развернул апплет на example.org. Из вашего браузера вы получаете доступ к example.org, и код выполняется (и localhost теперь фактически является вашей машиной, потому что код выполняется в JVM на вашем компьютере). Поскольку вы не очень осторожны, вы не установили пароль для своей локальной базы данных. Тот, кто развернул вредоносный апплет на example.org, теперь может читать данные из вашей базы данных и использовать их так, как он хочет.

Чтобы иметь возможность доступа к базе данных из апплета, у вас должен быть серверный код, работающий на сервере, который будет предоставлять вам данные через некоторый сетевой протокол (RMI, Sockets и т. Д.).

Другие вопросы по тегам