IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Comment fonctionne une Progress Bar

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 100
    Points : 71
    Points
    71
    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

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    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

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 100
    Points : 71
    Points
    71
    Par défaut [Résolu]
    et bien merci beaucoup pour ces explications.
    Y plus qu'à...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment creer une progress bar
    Par assiya dans le forum Forms
    Réponses: 7
    Dernier message: 09/12/2009, 15h00
  2. [winAPI] Comment créer une progress bar ownerdraw ?
    Par kidpaddle2 dans le forum Windows
    Réponses: 1
    Dernier message: 01/08/2006, 11h02
  3. Comment faire fonctionner une scroll bar ???
    Par toto4650 dans le forum MFC
    Réponses: 10
    Dernier message: 18/07/2005, 16h47
  4. comment fonctionne une interface graphique???
    Par elekis dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 27/10/2004, 23h10
  5. [VB.NET] Mise en place d'une progress bar
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 14
    Dernier message: 19/10/2004, 09h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo