2010-07-21 9 views
0

J'essaie de créer un nouveau fichier avec une applet Java, mais je ne sais pas comment envoyer ce fichier à la sortie de la réponse du navigateur, comme une page Web typique.Java Applet - Télécharger le fichier avec le navigateur

Avec une servlet, c'est facile avec javax.servlet.http.HttpServletResponse, mais est-ce possible avec une applet?

J'essaie de le faire sans signer l'applet ou utiliser n'importe quelle servlet.

+0

Je ne pense pas que votre question soit claire. Voulez-vous savoir comment obtenir l'applet dans le navigateur Web ou obtenir des fichiers dans l'applet en cours d'exécution? Ou autre chose? – andrewmu

Répondre

2

Ne pas utiliser une applet pour cela. Aller avec le servlet. Pourquoi voulez-vous faire cela à l'intérieur de l'applet? Il ne sera jamais capable d'écrire quoi que ce soit sur le disque si vous ne le signez pas, et il ne peut communiquer qu'avec le navigateur via une API Javascript, pas envoyer un fichier directement. Vous pouvez combiner la fonctionnalité dans votre applet parfaitement avec Servlets, et de diriger le navigateur vers une page pertinente:

AppletContext a = getAppletContext(); 
URL url = new URL(link_to_your_servlet); 
a.showDocument(url,"_blank"); 

Cela ouvrira une nouvelle fenêtre dans le navigateur et télécharger le fichier.

+0

merci pour votre réponse. Je vais prendre cela en considération. ;) –

0

Une applet est simplement un fichier JAR que vous placez sur votre serveur Web, puis vous ajoutez une description JNLP pour que le navigateur sache quoi faire. Pensez-y comme une page HTML complexe car elle ne va pas dans WEB-INF mais à côté des autres fichiers pour le navigateur (HTML, JavaScript externe, images, CSS, ...)

This article d'Oracle décrit les étapes .

0

Une applet peut demander des ressources au serveur Web dont elle provient, par ex. images - Applet.getImage() ou d'autres fichiers comme aller chercher si:

URL url = new URL("myfile.txt"); 
URLConnection uc = url.openConnection(); 
InputStream in = new BufferedInputStream(uc.getInputStream()); 

int d; 
while ((c = in.read()) != -1) { 
    // do something with d (remember to cast to byte!) 
} 
0

Vous pouvez ou ne voulez pas utiliser LiveConnect pour modifier le DOM de la page en cours. Cela dépend de ce que vous générez. Typiquement, vous voudriez générer sur le serveur.