Rechercher : dans
Par :

Java + Appli web + HttpServletResponse

Dernière réponse le 6 fév 2007 à 14:14:38 vsiguier, le 18 déc 2001 à 14:20:34 
 Signaler ce message aux modérateurs

Bonjour,

Je cherche le moyen de renvoyer au client de mon appli web une réponse (HttpServletResponse) correspondant à 2 actions :
--> telechargement de fichiers
--> rafraichissement de l'affichage ( code html généré par une JSP )

Pour l'instant je réalise la fonctionnalité du download mais je ne sais pas comment formuler en même temps le rafraîchissement de la page.

Si quelqu'un a une idée, c'est avec grand plaisir !

Meilleures réponses pour « java + Appli web + HttpServletResponse » dans :
Installer Java dans Firefox (sous Windows) VoirJava est nécessaire pour certains sites web, notamment le site des impôts français. Voici comment l'installer dans Firefox sous Windows. Test Allez à cette adresse: http://java.sun.com/applets/jdk/1.4/demo/applets/Clock/example1.html Si Java...
[FreeMind] Publier une mindmap dans une page web VoirFreeMind est un logiciel de mindmapping. Vous avez plusieurs possibilités pour publier votre mindmap dans une page web. Flash applet Java Simple image PNG HTML+Javascript (texte seulement) HTML+Javascript (texte+icônes) HTML+Javascript...
[Web] Eliminer totalement les publicités dans les pages WEB VoirVoici une méthode radicale et simple pour éliminer 99% des publicités dans les pages web, quel que soit le site et quel que soit le type de publicité (popup, incluse, bannière, flash, IFrame, Java, CSS, applet Java...) 1. Installez...
Télécharger Web Developer Toolbar VoirWebDeveloper est une extension firefox représentant une formidable boîte à outils pour examiner et manipuler les pages web. On peut: Activer/Désactiver java, javascript, HTTP Referer, cache... Manipuler les cookies, les désactiver par domaines,...
J2EE - Java 2 Enterprise Edition VoirIntroduction au Java Framework Le «Java Framework» (Java 2 Platform) est composé de trois éditions, destinées à des usages différents : J2ME : Java 2 Micro Edition est prévu pour le développement d'applications embarquées, notamment sur des...
Web Services VoirAvec l'interconnexion des ordinateurs en réseau et en particulier à travers internet, il devient possible de faire fonctionner des applications sur des machines distantes. L'intérêt d'une application fonctionnant à distance peut à première vue...
Introduction aux Java Server Pages VoirPrésentation des Java Server Pages Les JSP (Java Server Pages) sont un standard permettant de développer des applications Web interactives, c'est-à-dire dont le contenu est dynamique. C'est-à-dire qu'une page web JSP (repérable par l'extension...

1

HackTrack, le 19 déc 2001 à 08:58:33

Salut vsiguier!

Peux-tu préciser comment fonctionne ton application stp?

Je suppose que, sur ta page Web, tu as placé un lien vers le fichier à downloader et que tu forwardes ta requête vers une servlet.

Maintenant, qu'entends-tu par "rafraîchissement"? Juste afficher un message signalant que le download est terminé? Autre chose? Précise et j'essaierai de te répondre aujourd'hui même.

;-)

Répondre à HackTrack

2

vsiguier, le 19 déc 2001 à 09:42:49

Salut HackTrack !

Merci de consacrer un peu de temps à mon problème.

Pour le download tu as tout compris à savoir que l'action sur le bouton appelle une servlet qui effectue le traitement à déquate.
En ce qui concerne le rafraîchissement que je souhaite faire, avant ou après la séquence de download peu m'importe, il consiste à afficher le résultat d'une JSP que j'appelle par l'intermédiaire d'une servlet en temps normal ( cette page JSP contient le bouton de download + des informations à mettre à jour en fonction de l'action de download ).

Voilà ce que je peux te dire pour le moment, si tu as besion d'informations plus précises n'hesites pas.

Merci pour ton aide.

Répondre à vsiguier

3

HackTrack, le 21 déc 2001 à 10:09:57

Voici la solution à laquelle je pense pour résoudre ton problème.

Sur ton bouton html "Download", définit l'action en donnant le chemin de ta servlet:

Exemple:
<button name ="download" value="<!--chemin_et_nom_du_fichier-->" action="/servlet/DownloadServlet">Download</button>

Dans ta servlet, définit une méthode qui va effectuer le téléchargement et qui te renvoie un boolean.
Tu appelles cete méthode dans ta méthode "doPost()", "doGet()" ou "service()".
Tu ajoutes un paramètre ("download") à la réponse dont la valeur est le résultat du download(tru ou false).
Tu forwardes ta requête vers ta JSP (DownloadFeedback.jsp).
Exemple:
public void doPost(HttpServletRequest request, httpServletResponse response){
//petit truc qui permet à l'utilisateur d'utiliser la méthode POST ou GET pour accéder à la servlet
handle(request, response);
}

public void doGet(HttpServletRequest request, httpServletResponse response){
//petit truc qui permet à l'utilisateur d'utiliser la méthode POST ou GET pour accéder à la servlet
handle(request, response);
}

public void handle(HttpServletRequest request, httpServletResponse response){
.
.
.
boolean hasBeenDownloaded = download(fileToDownLoad);
.
.
.
response.addParameter("download",hasBeenDownloaded);//je ne suis pas sûr de la syntaxe et du nom de la méthode. Vérifie dans les API.
getServletConfig().getServletContext().getRequestDispatcher("/jsp/DownloadFeedback.jsp").forward(request,response);
}

private boolean download(File file){
boolean isDownloaded = false;
//insère ici ton code pour downloader le fichier;
// si le fichier est downloadé, isDownloaded prend la valeur true
// sinon il reste à false
return isDownloaded;
}


Dans ta JSP (DownloadFeedback.jsp), tu dois utiliser la directive JSP "include", qui va inclure une servlet qui générera le code HTML à afficher
en fonction de la valeur du paramètre créé ci-dessus.
<jsp:include page="/servlet/CheckDownloadServlet" flush="true" />

Dans la méthode doPost() ou doGet() de la servlet (CheckDownloadServlet)(qui ne te servira qu'à générer ta page en fonction du paramètre),
tu dois effectuer un test et générer le code différemment suivant que le paramètre est "true" ou "false".

String download = request.getSession().getParameter("download");

if(download.equals("true")){
//génére ici le code html (le download s'est bien passé)
}else{
//génére ici du code html différent (le download ne s'est pas bien passé)
}

Et voilà!

Normalement, ça devrait fonctionner. J'espère que c'est clair, sinon n'hésite pas à me contacter.

;-) HackTrack

Répondre à HackTrack

4

vsiguier, le 21 déc 2001 à 12:18:35

Salut HackTrack !

J'ai essayé ce que tu m'as conseillé mais sans succès.
Il refuse de forwarder vers "/jsp/DownloadFeedback.jsp" malgré le fait que servletContext.getRequestDispatcher("/jsp/DownloadFeedback.jsp") n'est pas null !

Peut-être il y a-t'il un problème avec la manière dont je download le fichier au par avant ( dans la méthode boolean download(request, response) ) ... j'écris dans l'objet HttpServletResponse
les données du fichier zip à télécharger ( l_ByteArrayOutputStream ).

création du zip :
ByteArrayOutputStream l_ByteArrayOutputStream = new ByteArrayOutputStream();
ZipOutputStream l_ZipOutputStream = new ZipOutputStream(l_ByteArrayOutputStream);

écriture dans la reponse http :
ServletOutputStream l_ServletOutputStream = response.getOutputStream();
l_ServletOutputStream.write(l_ByteArrayOutputStream.toByteArray()); l_ServletOutputStream.flush();

Définition de l'entête de la réponse :
response.setContentType("application/zip");
response.setHeader("Content-Disposition","attachment; filename=View.zip;");

et enfin je renvoie true

Merci pour ton aide et comme d' hab si tu as une idée...

Répondre à vsiguier

5

 Kamel, le 6 fév 2007 à 14:14:38

Salut tous le monde,
la solution est "sendRedirect".
@+

Répondre à Kamel