2009-06-12 6 views
2

Je souhaite créer une applet dans un fichier texte. Je pense avoir surmonté le problème de sécurité avec mon propre certificat, mais le fichier texte ne reçoit pas la sortie.Applet Java signé écrit dans un fichier texte

Mon Applet peut être vu à tomrenn.com/fallball, et devrait demander si vous faites confiance au certificat.

Je ne suis pas sûr d'Applet peut écrire dans un fichier texte dans le contenu web hébergé, donc je me demande si cela est possible; et sinon, au moins être en mesure de le faire sur la machine locale. J'avais utilisé un FileOutputStream, mais mon professeur a recommandé cette méthode de sortie très basique.

public void writeToFile() 
{ 
    try { 
    java.io.File file = new java.io.File("highscores.txt"); 
    java.io.PrintWriter output = new java.io.PrintWriter(file); 
    output.print(name + " " +score); 
    output.close(); 
    } catch (IOException e) { 
    System.err.println ("Unable to write to file"); 
    System.exit(-1); 
    } 
} 

Ce n'est pas ce que j'implantera, juste essayer de voir si je reçois une sortie. Merci d'avoir regardé ma question!

Répondre

3

D'un Applet, vous ne pouvez pas écrire directement au système de fichiers du serveur. Vous pouvez envoyer une requête au serveur pour que le serveur écrive dans son propre système de fichiers, mais une applet ne peut pas écrire sur un système de fichiers sur une machine distante. (Bien sûr, à moins qu'il ne soit monté sur NFS ou autre.) Pour émettre une telle requête, vous pouvez utiliser Apache HttpClient pour émettre des requêtes HTTP, par exemple. Cela peut être plus lourd que ce que vous recherchez. Vous pouvez également demander au client d'envoyer un message POST au serveur pour lui dire "Ceci est mon meilleur score" et laisser le serveur gérer les meilleurs scores.

A signé Applet a le droit d'écrire sur le système de fichiers local de la personne qui exécute l'Applet. Si vous écrivez dans le "répertoire courant" (plutôt que d'un chemin complet absolu), alors assurez-vous de savoir dans quel répertoire l'applet fonctionne. Sinon vous pouvez en effet créer un fichier, mais ne pas pouvoir le trouver!

1

Applets courir sur le client ne peut donc pas accéder au disque des serveurs. Le code que vous avez publié écrira sur le disque local du client. Je suggère de le changer cependant pour spécifier le répertoire que vous voulez placer le fichier. Le répertoire des utilisateurs semble un bon endroit pour elle

java.io.File file = new java.io.File(System.getProperty("user.home"), "highscores.txt"); 
2

Si vous voulez une applet pour stocker des données sur la machine locale, de la 6u10 javax.jnlp.PersistenceService est disponible. La création d'une "applet signée" sécurisée est difficile, et je ne la recommanderais à personne.

+0

@finnw Oh signer une applet, vous pouvez simplement suivre le tutoriel. S'assurer que votre "applet signé" est sécurisé, est un peu plus compliqué, bien que réalisable depuis 6u19. –

+0

@Tom Hawtin, s'il vous plaît expliquer ce que vous voulez dire – finnw

+0

@finnw La sécurité est comme difficile. Cela n'arrive pas automatiquement. –

1

il suffit de signer votre applet. il est facile d'utiliser netbeans.

  1. Ouvrez le projet dans netbeans.
  2. Faites un clic droit sur votre projet et sélectionnez propriétés maintenant vous aurez une nouvelle fenêtre.
  3. allez dans> application> webstart sur cette fenêtre.
  4. cochez enable webstart.
  5. appuyez sur le bouton personnaliser à la signature et choisissez "auto-signé par une clé générée".
  6. cochez "Descripteur d'applet" et ciblez votre applet.
  7. appuyez sur OK.

  8. reconstruire le projet (NetBeans maintenant va créer des certificats avec tous les privilèges)

  9. utilisation "launch.html" à vos projets dist dir pour exécuter l'applet via jnlp.

C'est tout.

** version de netbeans utilisée = 7,0 ** JDK utilisé = 1,6 ** Les certificats expireront dans 6 mois.

Merci