2013-04-08 1 views
1

Java 애플릿을 사용하여 데이터베이스 레코드에 파일을 작성하는 예제를 작성하려고합니다. 하지만 문제는 애플릿을 실행 한 후 파일이 생성되었지만 가비지 데이터가 있음을 확인하는 것입니다.

애플릿에 서명했습니다 (이 튜토리얼에 따라 : http://www.narendranaidu.com/2007/11/3-easy-steps-to-self-sign-applet-jar.html)

작성한 jar (SaveToFile.jar)에 mysql-connector를 넣으려고했습니다. 그러나 같은 일이 일어났습니다. 그래서 데이터베이스 연결이 실제로 일어나면 혼란 스럽습니다.mysql 결과가 Java 애플릿을 사용하여 파일에 올바르게 작성되지 않았습니다.

appletTest/ 
    out/production/appletTest/ 
          applet/SaveToFile.class 
          SaveToFile.html 
          SaveToFile.jar 
          mysql-connector-java-5.1.24-bin.jar 
          file-applet.jnlp 
          keystore 

크롬, 돈을 어떤 응답을 제공하지 않는 (파이어 폭스 브라우저에 HTML 파일을 연 후 : 빌드 후

, 내 프로젝트 구조는 (여기 난 그냥 지은 부분을 보여주는거야)는 다음과 같습니다 이유를 알지 못한다!) 애플릿 실행 권한을 부여하면 data.txt 파일이이 동일한 디렉토리에 성공적으로 작성됩니다. MySQL의 테이블 드디어

<!DOCTYPE html> 
<html> 
<head> 
    <title>Applet Test</title> 
</head> 
<body> 
<script src="http://java.com/js/deployJava.js"></script> 
<script type="text/javascript"> 
    var attributes = { code:'applet.SaveToFile', width:22, height:22} ; 
    var parameters = {jnlp_href: 'file-applet.jnlp'} ; 
    deployJava.runApplet(attributes, parameters, '1.7'); 
</script> 
<applet 
     id="saveToFile" 
     width=22 
     height=22 
     code="applet.SaveToFile" 
     archive="SaveToFile.jar" 
     jnlp_href = 'file-applet.jnlp' 
     /> 
</body> 
</html> 

된다 : 여기

<?xml version="1.0" encoding="UTF-8"?> 
    <jnlp spec="1.0+" codebase="" href=""> 
     <information> 
     <title>Write To File</title> 
     <vendor>Vendor</vendor> 
    </information> 
    <resources> 
     <!-- Application Resources --> 
     <j2se version="1.7+" 
      href="http://java.sun.com/products/autodl/j2se" 
      max-heap-size="128m"/> 
     <jar href="SaveToFile.jar" main="true"/> 
    </resources> 
    <applet-desc name="Test Applet" 
     main-class="applet.SaveToFile" 
     width="22" 
     height="22"/> 
    <update check="background"/> 
    <security> 
     <all-permissions/> 
    </security> 
</jnlp> 

는 HTML입니다 : 여기
package applet; 

    public class SaveToFile extends Applet { 

    public void init() { 
     try { 
      getData(); 
     } catch (IOException ioe) { 
      ioe.printStackTrace(); 
     } 
    } 

    private void getData() throws SQLException, ClassNotFoundException, IllegalAccessException, InstantiationException { 
     String myDriver = "com.mysql.jdbc.Driver"; 
     String dbUrl = "jdbc:mysql://localhost/APPLET?user=root&password=root&characterSet=utf8&useUnicode=true&characterEncoding=utf-8&characterSetResults=utf8"; 
     Class.forName(myDriver); 
     Connection conn = DriverManager.getConnection(dbUrl); 
     Statement stmt = conn.createStatement(); 
     try { 
      ResultSet rs = stmt.executeQuery("SELECT * FROM applet"); 
      try { 
       String text = ""; 
       while (rs.next()) { 
        text += rs.getString("title"); 
       } 
       writeToFile(text); 
      } catch (SQLException e) { 
       e.printStackTrace(); 
      } finally { 
       try { 
        rs.close(); 
       } catch (Throwable ignore) { 
        ignore.printStackTrace(); 
       } 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       stmt.close(); 
      } catch (Throwable ignore) { 
       ignore.printStackTrace(); 
      } 
     } 
    } 

    public void writeToFile (String text) { 
     try { 
      DataOutputStream dataOut = new DataOutputStream(new FileOutputStream("data.txt")); 
      dataOut.writeUTF(text); 
      dataOut.close(); 
     } catch(Exception x) { 
      x.printStackTrace(); 
     } 
    } 
} 

가 JNLP입니다 : 여기

는 자바 코드

+----+--------+ 
| id | title | 
+----+--------+ 
| 1 | TITLE1 | 
| 2 | TITLE2 | 
| 3 | TITLE3 | 
| 4 | TITLE4 | 
+----+--------+ 
,451,515,

심지어 나는 (이 다음 http://www.tech-recipes.com/rx/1475/save-mysql-query-results-into-a-text-or-csv-file/)이 쿼리를 시도했지만 아무 것도이 시간이 일어나지 : 사람 사이에서 데이터베이스 상호 작용을 처리에 고정 무엇인가에 대한 예를 들어 줄 수 있다면 도움이 될 것 외에도

SELECT * FROM applet 
INTO OUTFILE 'tmp/data.txt' 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 

을 자바 스크립트 및 애플릿.

고맙습니다.

+0

실제 문제를 설명하지 않았다면 말할 수 있습니다. 당신은 심지어 data.txt 파일이 성공적으로 생성되었다고 말합니다. _ –

+0

@MarkRotteveel : 나는 파일에 그것이 가져서는 안되는 가비지 데이터를 가지고 있다고 말했습니다. – leevi

+0

가비지를 정의하십시오 (샘플을 보여주십시오). 마지막 질의는 클라이언트가 아닌 서버에 파일을 생성합니다. –

답변

0

확인. 나는이 문제를 성공적으로 해결했다. mysql 커넥터를 압축 해제하고 추출 된 모든 파일을 압축 jar의 애플릿 클래스 파일과 함께 저장하면 mysql 데이터 검색이 올바르게 작동한다. 다음은 창 (빌드 된 부분 아래)에서 사용한 명령입니다.

appletTest/ 
    out/production/appletTest/  

mkdir tmp 
cd tmp 
jar -xf ../mysql-connector-java-5.1.24-bin.jar 
cd.. 
jar -cvf SaveToFile.jar applet\SaveToFile.class -C tmp/ . 
rmdir tmp /S 

그리고 생성 된 jar 파일을 아카이브로 사용하면 데이터베이스에서 바로 작업을 수행 할 수 있습니다.

관련 문제