# Java > Dveloppement Web en Java > Servlets/JSP >  [JSP] thread ? Message d'avancement des operations en cours

## buffyann

Bonjour,

dsol pour le titre, je ne savais pas quoi mettre d'autre.

aprs recherche vaine sur le forum, j'ai une simple question.
Dans une page JSP, j'effectue un traitement lourd (indexation d'une centaine de fichiers PDF).
La page met un temps long  s'affcher du fait de ce traitement.
J'aimerais pouvoir ouvrir une pop-up par exemple, qui m'indique o j'en suis dans mon traitement genre :



> Indexation de fichier n2 en cours Avancement : 1%
> Indexation de fichier n3 en cours Avancement : 3%
> Indexation de fichier n6 en cours Avancement : 5%


comment puis je faire ?
quelqu'un m'a parl de faire un thread ? est ce le seul moyen et est ce propre ? je ne m'y connais pas trop en thread   ::?:  

merci  tous d'avance

----------


## RanDomX

j'ai deja fait un truc similaire et c galere.

le mieux ct de passer par une page temporaire avec un message et qui se recharge automatiquement toutes les x secondes.

Et sur la nouvelle page qui s'affiche rgulierement, tu integres une donnes qui donne l'avancement.

L'interet de la chose c qu'en passant un int par exemple tu peux generer une page avec une barre de progression ( en fait une image dont le int reprsente la taille sur une dimmension ...)

@+

----------


## buffyann

ok, je vois vaguement l'ide mais j'ai pas bien compris comment implementer tout a :
pour l'instant ma page fait un truc du style 


```

```

il faudrait actualiser le message  chauqe passage dans la boucle mais comment faire, j'ai pas bien compris...

----------


## RanDomX

ah non ne passe pas par une boucle.

Tu as d'un cot ta classe qui fait l'indexation et qui sait sur quel ficher elle est ( disons le 59 eme ).

A chaque fois qu'elle a finit l'indexation d'un fichier elle mets a jour une variable publique ou une varible prive accessible par un accesseur getIndex().

Ensuite tu cre une page jsp simple avec un autoreload dans le header pour qu'elle se recharge toute seule (en n'oubliant pas de desactiver le cache)

Et dans cette page lorsqu'elle s'affiche elle fait appel  la variable d'index ou au getIndex directement dans la classe d'indexation.

Ensuite pour ce qui est graphique je te laisse faire .

Si tu a un doute sur un truc n'hsites pas...


@+

----------


## buffyann

ok, je comprends mieux, je vais faire quelques tests et je te tiens au courant
au fait, tant que j'y suis, comment on specifie le reload de la JSP...?  ::oops::  
merci en tout cas  ::wink::

----------


## RanDomX

reload toutesd les 20 secondes par exemples:


```

```

N'oublies pas de spcifier aussi que qd t arriv a 100 % il faut repartir sur une page "normale".

Mais ca en jsp c facile , tu tests sur le getIndex et si c 100, tu fait un RequestDispatcher.forward(une autre page)...

pour le cache:


```

```


@+

----------


## lunatix

a lire ... http://www.onjava.com/pub/a/onjava/2...gressbars.html

----------


## buffyann

merci, a  a l'air bien interessant, je vais peut tre me replier sur cette solution car jen'arrive pas  faire marcher la methode de RandomX, il ne m'affiche le message qu'une fois le traitement termin ..?!

----------


## lunatix

je pense que la methode de randomX et celle de l'article ne font qu'un   ::wink::

----------


## RanDomX

hue j'ai lu tres rapidement mais c pas exactement pareil mais ca m'a l'air pas mal comme mthode.

Disons qu'au moins la solution est complete l.

@+

----------


## buffyann

merci  vous deux mme si maintenant, je n'en n'est plus besoin, en fait   ::oops::   mais en tout cas, je saurais le faire la prochaine fois

----------


## iubito

la mthode prsente plus haut.
Comment faire pour lancer le traitement.
Par exemple, au premier chargement de la page, instancier ma classe statique (c bien a statique?) qui se dbrouille pour traiter tous les fichiers.
Ensuite  chaque reload on rcupre une variable public de la classe.
Et quand c'est fini, on peut dsinstancier la classe ?

Le problme, si plusieurs utilisateurs lancent la mme page (bien videmment sur des donnes diffrentes, mais mme genre de traitement)... comment faire pour l'instance de ma classe ? parce que si elle est statique, y'a qu'une seule instance pour tout le monde, non?

ou alors peut-tre qu'il faut que je l'instancie au dmarrage du serveur et que je ne l'arrte jamais...

----------


## RanDomX

ben non pas statique justement sinon tu tombes sur le probleme que tu souleves.

Chaque utilisateur cre son thread s'en sert et le met  null qd c fini....

si tu regardes bien il y a une methode start et une methode stop ( c un thread  ::D:  )


@+

----------


## iubito

mais alors ce que je capte pas, c comment il retrouve la classe, quand la jsp fait un des multiples rechargement ?

----------


## RanDomX

il le recupere dasn la session utilisateur:



```

```

----------

