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

Développement Web en Java Discussion :

Affichage message d'attente pendant mon traitement Java


Sujet :

Développement Web en Java

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Affichage message d'attente pendant mon traitement Java
    Bonjour, j'ai une application web en java. Celle-ci lance un traitement java tous les jours à la même heure. Je voudrais que pendant ce traitement, un message signalant que le traitement est en cours apparaisse.
    Le visuel de mon application est défini par des pages JSP.
    Quelqu'un à une idée ?
    Merci.

  2. #2
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 47
    Points : 44
    Points
    44
    Par défaut
    bonjour
    je ne sais pas si ce que tu cherche mais voila ce que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <script type='text/javascript' charset="utf-8">
    <!-- 
    			function makeRequest(dd)
    			{
    				$('#resultat').html('<img src="inc/image/ajax-loader.gif" >'); 
    				 $('#resultat').fadeIn(); // Inversion du html et du fadeIn
    				$.ajax({  
    					type: "GET",
    					cache: false,
    					url:  '/infostock/affichageArticleAjax?idArticle='+dd+'',  
    					data: null,  
    					success: function(Reponse)
    					{
    						document.getElementById('resultat').innerHTML = Reponse;
    					}
    				});
    			}	
    			//-->		
    		</script>
    prend ce qui est en rouge et pour l'image a utiliser voici un bon site
    http://www.ajaxload.info/

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    En fait, ce que je veux, c'est que lorsque dans ma classe MyJob, dans la méthode execute(), j'indique à ma page JSP d'afficher un logo avant l'appel de la méthode runAction() et ensuite ne plus afficher le logo après cette méthode.

    Voici ma classe My Job :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public class MyJob{
    
    	private BusinessManager businessManager;
    	
    	
    	public void execute() {
    		
    			// là je veux que mon logo soit affiché sur ma page JSP		
    			businessManager.runAction();
    
                            // là je ne veux plus qu'il soit affiché
    	}
    	
    	public void setBusinessManager(BusinessManager businessManager){
    		this.businessManager = businessManager;
    	}
    
    }

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Tu dois stocker quelque part (base de donnée? bean jsf si tu utilise jsf? classe statiques? (beurk) ), en fonction de l'architecture de ton application un booléen disant que l'opération est en cours. Ensuite, dans ton JSP, tu récupère cette information et tu affiche ou non l'image avec un c:if, par exemple.

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Le problème, c'est que je veux que mon logo s'affiche, dès que mon traitement se lance, sur n'importe quelle page où se trouve l'utilisateur.

    Je pensais donc faire autrement : avant d'appeler la méthode runAction(), rediriger l'utilisation vers une nouvelle URL (une nouvelle JSP) qui afficherait juste un logo d'attente. Lorsque mon traitement est fini, rediriger de nouveau vers la page d'accueil de mon application web.
    Est-ce possible ? Si oui, comment faire ? ^^

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Tu peux mettre un ServletFilter global dans ton application, qui redirigerais toutes les requêtes vers une page précise du genre "Maintenance en cours", si c'est ce que tu cherche.

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Ba en fait, oui c'est un truc de ce genre que je souhaite ^^.
    En fait, il faut que juste avant que mon traitement java se lance, j'affiche ma page correspondant à "maintenance en cours" et que dès que mon traitement est fini, je retourne sur la page d'accueil de mon appli web.
    Tu ferais comment ? Je vois pas trop, surtout pour la requête du serveur..

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Comme je l'ai dit, tu peux coder un Servletfilter qui, pendant le travail, redirigera toutes les requêtes vers une page précise. Le reste du temps, il les laissera passer sans rien faire.


    Maintenant, si tu veux que tous les browser qui avaient déjà une page ouverte, tout d'un coup passent à la page spécial sans action de la part de l'utilisateur, ça va être une bien plus grosse galère, car il faudra injecter du javascript pour faire le boulot dans toutes tes pages.

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    D'accord, oui à la base c'est ce que je voulais faire, mais je vais laisser tomber, c'est pas grave ^^. Merci encore

  10. #10
    Membre à l'essai
    Inscrit en
    Octobre 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    J'ai créé un filtre comme tu me l'avais conseillé mais lorsque j'essaye de rediriger vers la page signalant que mon traitement est en cours, j'ai message sous firefox comme quoi la page a été redirigé non correctement..

    Voici ma classe de mon filtre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    public class TraitementEnCoursFilter implements Filter{
     
    	@Override
    	public void destroy() {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public void doFilter(ServletRequest requete, ServletResponse reponse,
    			FilterChain filterChain) throws IOException, ServletException {
    		// TODO Auto-generated method stub
     
    		 HttpServletRequest request = (HttpServletRequest) requete;
    	     HttpServletResponse response = (HttpServletResponse) reponse;
    	     System.out.println(TraitementEnCours.getInstance().getOperationEnCours());
    		 if(TraitementEnCours.getInstance().getOperationEnCours()){ //si mon traitement est en cours
     
    			 response.sendRedirect("http://localhost:8080/SuiviBatchs/operationEnCours");  //correspond à ma page JSP qui affiche mon message d'attente
    			 return;
     
    		 }
    		 else{
    			 filterChain.doFilter(requete, reponse);
    		 }
    	}
     
    	@Override
    	public void init(FilterConfig arg0) throws ServletException {
    		// TODO Auto-generated method stub
     
    	}
     
    }
    Quelqu'un à une idée ?

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    n'utilise pas un response.sendRedirect, qui ne marchera pas, même si il est bien configuré, car le browser va demander operationEnCours, qui va tomber le filtre, qui va dire au browser d'aller voir operationEnCours

    Tu dois tout faire en interne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (condition)
      requete.getRequestDispatcher("/operationEnCours").forward(request,response);
    else
      filterChain.doFilter(requete, reponse);
    Et dans le mapping du filtre, tu dois préciser qu'il ne s'appliquent qu'aux requêtes et pas aux forwards:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <filter-mapping>
        <filter-name>MyFilter</filter-name>
        <url-pattern>*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>

  12. #12
    Membre à l'essai
    Inscrit en
    Octobre 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2012
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    ça marche nickel ! merci beaucoup

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 18/07/2014, 10h21
  2. Affichage d'un message d'attente pendant l'exécution d'une macro
    Par shadok6 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/10/2008, 14h49
  3. Message d'attente pendant traitement côté serveur
    Par bouliz dans le forum ASP.NET
    Réponses: 13
    Dernier message: 09/07/2007, 11h55
  4. Réponses: 3
    Dernier message: 29/11/2006, 10h45
  5. Message d'attente pendant pilotage Ole Excel
    Par yottatiger dans le forum C++Builder
    Réponses: 3
    Dernier message: 13/09/2005, 09h14

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