|
|
|
|
vsiguier, le mardi 18 décembre 2001 à 14:20:34Salut 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. ;-)
|
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
|
Salut tous le monde,
la solution est "sendRedirect". @+ |