2015-01-28 3 views
0

db에서 데이터를 읽고 애플릿에 표시 한 Java 애플릿 클래스를 생성했습니다. 프로그램을 올바르게 실행하고 내가 이클립스 IDE에서 실행할 때 데이터를 가져온다 있지만 브라우저에서 HTML 코드를 사용하여 실행할 때 실행되지만 있지만 DB에서 데이터를 가져 오지 않습니다. 이것은 내가 사용하는 코드입니다.애플릿이 브라우저에서 실행 중일 때 MySQL 데이터베이스에서 데이터를 읽지 않습니다.

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> 
    <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 서버에있는 데이터베이스에서 읽기되지 않는 이유 나를 찾는 데 도움이 될 수있는 HTML 코드를입니다. 그 (것)들을 달리기 위하여 .Class를 추가해야하는 그들의 특정한 디렉토리는 무엇인가?

+0

어떤 오류가 발생합니까? 연결 문자열의 localhost가 정확하지 않습니다. 데이터베이스 서버의 IP 주소 또는 도메인 이름이어야합니다. localhost는 db-server가 아닌 client-machine을 가리 킵니다. 누군가가 서버에서 애플릿을 탐색 중이면 (물리적으로 앉아있는 경우) – Yazan

+0

그것은 특별한 오류가 아니며 단지 데이터를 표시하지 않습니다. 난 그냥 변경하고 내 서버 IP를 추가했지만 여전히 작동하지 않습니다. – user2489592

+0

애플릿을 시작하기 전에'throw e;'바로'e.printStacktrace();'를 사용하고 애플릿을 시작하기 전에 Java 콘솔을 엽니 다. (콘트롤 패널에서 생각합니다) – Yazan

답변

2

누군가 example.org에 애플릿을 배포했다고 가정 해보십시오. 브라우저에서 example.org에 액세스하면 코드가 실행 중입니다. 코드는 컴퓨터의 JVM에서 실행되므로 localhost는 현재 컴퓨터입니다. 매우 신중하지 않으므로 로컬 데이터베이스에 암호를 설정하지 않았습니다. 악의적 인 애플릿을 example.org에 배포 한 사람은 이제 데이터베이스의 데이터를 읽고 원하는 방식으로 사용할 수 있습니다.

애플릿에서 데이터베이스에 액세스하려면 서버 컴퓨터에서 실행중인 서버 코드가 있어야하며, 이는 일종의 네트워크 프로토콜 (RMI, 소켓 등)을 통해 데이터를 제공합니다.

+0

몇 가지 참조 나 예제를 지적 해 주시겠습니까? – user2489592

+0

http://eyeasme.com/Shayne/RMI/index.html check 이 하나는 꽤 쉽게 보인다. – Serhiy

관련 문제