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

Servlets/JSP Java Discussion :

Utiliser une servlet pour afficher le résultat dans une meme page JSP


Sujet :

Servlets/JSP Java

  1. #21
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut
    j'ai essayé la meme chose avec une servlet qui genere une image comme ca mais ca n'a pas marché:
    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
    36
    37
     
     
    public class servletchoice extends HttpServlet {
    	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
     
    		response.setContentType("image/png");
    		TimeSeriesDemoTest http = new marouene.TimeSeriesDemoTest("Http");
    		 String choix = request.getParameter("choix");
     
     
     
     JFreeChart imagechart;
    try {
     
    	imagechart = http.tracercourbe("date","avg(http)","httptable","Evolution du transfert Http","Debit en Ko/s","Group by "+choix+";");
    	 OutputStream out = response.getOutputStream(); 
    	 ChartUtilities.writeChartAsPNG(out, imagechart, 700, 500);	
    	 request.setAttribute("image",out);
    	request.getRequestDispatcher("Server1Http.jsp").forward(request, response);		 
     
    } catch (SQLException e) {
    	e.printStackTrace();
    }
     
    	}
     
    	 protected void doGet(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
     processRequest(request, response);
    }
    	 protected void doPost(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
     processRequest(request, response);
    }
     
    	}

    avec en JSP ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <form action='servletchoice' method='Post'>
    		<p>&nbsp;</p>
    	Suivre la variation en :		<select size="1" name="choix">
      <option> </option>
      <option>date</option>
      <option >mois</option>
      <option> année</option>
    </select> <input type="submit" value="OK">
     
    		</form>		
    		<%  if(request.getAttribute("image")!=null )   
                            { 
                    %> <img border="1" src="<%request.getAttribute("image");}%>" width="600 height="300"><br>
    Sinn j'ai testé ma servlet et elle marche nickel elle genere une image

  2. #22
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Ton image est une donnée binaire, tu ne peux pas l'inclure comme ça dans une page HTML.

    Il te faut créer une servlet qui va générer l'image et dans ta page HTML mettre le lien vers la servlet qui va générer l'image.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #23
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut
    enfet j'ai reussi a inclure une image de la facon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	  <img border="1" src="Http" width="600 height="300"><br>
    avec http une servlet qui retourne une image
    mais en essayant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <%  if(request.getAttribute("image")!=null )   
                            { 
                    %> <img border="1" src="image" width="600 height="300"><br>
    dans ma servlet j'ai mis ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     OutputStream out = response.getOutputStream(); 
    	 ChartUtilities.writeChartAsPNG(out, imagechart, 700, 300);	
    	 request.setAttribute("image",out);
    		request.getRequestDispatcher("Server1.jsp").forward(request, response);
    voici l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Impossible d'utiliser faire-suivre (forward) après que la réponse ait été envoyée
    	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:302)
    	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)

  4. #24
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut
    est ce que je dois enregistrer l'image sous le disque avant ou ?...

  5. #25
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Tu dois avoir deux servlets, l'une pour afficher la page et l'autre pour l'image.

    Sur la page tu as une balise <img> avec un lien vers la servlet pour l'image.
    Pour le lien, soit tu inclues les paramètres de génération de l'image, soit tu ne mets pas de paramètre et tu stockes tes paramètres en session (pense à les supprimer de la session une fois que tu n'en as plus besoin).

    Inutile de stocker les images dur disque ... Sauf si tu veux faire de la mise en cache, mais utilise une API pour ça.

    Ton erreur est logique car tu envoies une image plus une page. Quand le dispatcher veut envoyer la page il peut pas car tu as déjà répondu à la requête en envoyant l'image.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  6. #26
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut
    la servlet pour l'image je pense que c'est bon elle est faite .
    mais pour la servlet qui me genere la page, je dois la faire comment, un forward vers ma page ou bien elle contien carrément du html, car si c'est le cas, j'ai bq de code ><

  7. #27
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    De quoi as-tu besoin pour générer ta page ?
    Si tu n'as pas besoin de resource dynamique utilise une page HTML, si tu as une page dynamique simple utilise une JSP, si tu as des traitements à faire pour construire ta page utilise une servlet et ensuite tu "forward" sur ta JSP.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  8. #28
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut
    c'est une page dynamique simple...jsp
    ca doit etre de ce genre la ?
    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 servletchoice extends HttpServlet {
    	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
     
    		response.setContentType("image/png");
    		TimeSeriesDemoTest http = new marouene.TimeSeriesDemoTest("Http");
    		 String choix = request.getParameter("choix");
     
     
     
     JFreeChart imagechart;
    try {
     
    	imagechart = http.tracercourbe("date","avg(http)","httptable","Evolution du transfert Http","Debit en Ko/s","Group by "+choix+";");
    	 OutputStream out = response.getOutputStream(); 
    	 ChartUtilities.writeChartAsPNG(out, imagechart, 700, 500);	
    	 request.setAttribute("image",out);
    	request.getRequestDispatcher("Server1Http.jsp").forward(request, response);		 
     
    } catch (SQLException e) {
    	e.printStackTrace();
    }
     
    	}
     
    	 protected void doGet(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
     processRequest(request, response);
    }
    	 protected void doPost(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
     processRequest(request, response);
    }
     
    	}
    désolé si jt'ai pas bien compris

  9. #29
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut
    il n'ya pas une facon de contourner ce probleme de deuxième forward? et de faire comme pour une donnée simple?

  10. #30
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Tu dois avoir une servlet qui ne fait que générer l'image, pas de forward, rien.

    Dans ta page tu as une balise <img/> qui pointe vers ta servlet.

    Inutile d'avoir une servlet pour afficher une simple page JSP, pointe directement sur la page
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/12/2014, 13h09
  2. Réponses: 3
    Dernier message: 08/09/2014, 00h13
  3. Réponses: 2
    Dernier message: 23/05/2014, 08h41
  4. Réponses: 3
    Dernier message: 12/08/2011, 09h42
  5. Réponses: 2
    Dernier message: 04/06/2009, 14h49

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