Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Général Conception Web > Débuter
Débuter Forum d'entraide pour débuter dans la création de sites Web
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/01/2008, 13h59   #1
Nouveau Membre du Club
 
Inscription : juin 2007
Messages : 89
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 89
Points : 34
Points : 34
Par défaut Comment fonctionne une Progress Bar

Bonjour,

Voilà ma question générale :

Je développe une appli en java/jsp. Je cherche à envoyer un traitement au serveur et pendant ce traitement, je voudrais une page avec une barre de progression. Quand le traitement se termine (réponse renvoyée par le serveur comment ?) on affiche la page suivante.

Comment ça fonctionne ? Que dois on utiliser ? js ? ext ? ajax ?

après cela j'irai sur le bon forum.

Merci de votre aide
loulag07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 15h27   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 309
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 309
Points : 8 590
Points : 8 590
T'as plusieurs façon de procéder, la plus élégante aujourd'hui étant Ajax, je pense car il y a un vrai travail en tâche de fond que tu peux requêter régulièrement.

En gros, je dirais qu'il y a 3 façons de faire :
  1. La vieille façon : tu remplis ton formulaire et tu cliques pour le soumettre. Ca balance les infos sur une JSP qui affiche simplement le code HTML présentant la barre de progression et un formulaire "caché" (i.e. un formulaire contenant que des <input type="hidden">) qui est posté aussitôt la page chargée (avec un <body onload="document.forms[0].submit();">) sur une JSP ou un servlet effectuant le traitement long. Il faut absolument que ce servlet ou JSP ne renvoie rien au navigateur tant que le traitement n'est pas terminé. Quand le traitement est terminé, le servlet redirige le navigateur ou affiche la page "bravo c'est terminé". Ce qu'il se passe alors c'est que le navigateur conserve à l'affichage la page contenant la barre de progression tant qu'il n'y a rien reçu du servlet. Le pb de cette solution c'est qu'elle est un peu lourde et tordue (c'est pas top de "rebondir" sur une page qui reposte les données) et en plus, on peut être confronté à un pb de timeout du navigateur : s'il attend trop longtemps une réponse de la part du servlet, il pourrait couper la connexion.
  2. La vieille façon améliorée : là, on passe par une iframe. Le mécanisme au départ est le même. La différence c'est que la page présentant la barre de progression contient une iframe de taille nulle. Le formulaire est toujours posté dès chargement de la page par le <body onload="..."> mais il est posté dans l'iframe. A ce moment-là, le servlet (qui est appelé dans l'iframe) lance le traitement mais envoie régulièrement des données vides (genre une 5 ou 6 d'espaces toutes les 30 secondes) pour maintenir la connexion avec le navigateur. Quand le traitement est terminé, le servlet renvoie un bout de code HTML + JavaScript qui redirige la page principale vers un joli écran "bravo c'est terminé".
  3. La façon Ajax (comme le nom l'indique, c'est la méthode la plus propre, n'est-ce pas ) : c'est ta première page qui présente le formulaire de lancement de la tâche qui fait tout. Quand tu cliques sur le bouton "lancer le traitement", ça appelle un JavaScript qui affiche la barre de progression (par exemple, tu affiche un DIV par-dessus ton formulaire) et envoie les données au servlet de traitement par XmlHttpRequest (le composant principal Ajax). Le servlet répond n'importe quoi, et ton JavaScript appelle régulièrement un autre servlet qui lui dit où en est le traitement. Tant que ce servlet ne dit pas que le traitement est fini, ben, tu fais rien, mais dès qu'il dit que c'est OK, hop, tu passes à la suite ("bravo c'est terminé") soit par redirection, soit par affichage d'un DIV, etc.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 15h37   #3
Nouveau Membre du Club
 
Inscription : juin 2007
Messages : 89
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 89
Points : 34
Points : 34
Par défaut [Résolu]

et bien merci beaucoup pour ces explications.
Y plus qu'à...
loulag07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h33.


 
 
 
 
Partenaires

Hébergement Web