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 :

[Servlet] Problème d'affichage


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 47
    Points
    47
    Par défaut [Servlet] Problème d'affichage
    Bonjour,

    je fais communiquer une servlet et une applet entre elles.
    Voici la méthode utilisée dans l'applet et pour utiliser la servlet :
    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
     
    class exec implements ActionListener
      {
        public void actionPerformed(ActionEvent e) {
         try {
           URL url = new URL("http://localhost:8080/AppletServlet2/ServletMessage");
           URLConnection connexion = url.openConnection();
           connexion.setDoOutput(true);
           PrintWriter sortie = new  PrintWriter(connexion.getOutputStream(),true);
           sortie.println(t5.getText());
           BufferedReader entree = new BufferedReader(new InputStreamReader(connexion.getInputStream()));
           JOptionPane.showMessageDialog(p1,entree.readLine(),"Réponse",JOptionPane.INFORMATION_MESSAGE);
         }
         catch (IOException erreur) {
           erreur.printStackTrace();
           JOptionPane.showMessageDialog(p1,"Problème pour lancer le traitement","Erreur",JOptionPane.ERROR_MESSAGE);
         }
        }
      }
    Et voici le code de la servlet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class ServletMessage extends HttpServlet{
     
      public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
         doPost(request, response);
      }
     
      public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        BufferedReader entree = new BufferedReader(new InputStreamReader(request.getInputStream()));
        String message = entree.readLine();
        PrintWriter sortie = new PrintWriter(response.getOutputStream(), true);
        sortie.println(message);
      }
    }
    Comme vous pouvez le voir dans le premier bout de code, je voudrais qu'apparaisse une popup avec le contenu de t5.getText() quand je clique sur un bouton qui lance la méthode exec().
    J'ai bien sur ma popup le contenu de cette variable mais le problème est que je l'ai à l'envers.
    t5.getText() = "Pas de fichier chargé
    Par la servlet, la popup affiche : égrahc reihcif ed saP

    Vous avez une application ?
    Venez nombreux sur ce forum, il est génial !!!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Je doit avouer que c'est bizarre mais a quoi ressemble 'message' quand il est de retour sur la servlet ??
    (ca permettrais de savoir a quel moment l'inversion est faite meme si d'apres moi ce code est correct mais bon c'est moi qui le dit ca vaut pas grand chose !! )
    UML avec VIOLET

  3. #3
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 407
    Points
    1 407
    Par défaut
    ca doit etre parce que tu ecrits ds le flux en lifo.

    Enfin je pense....

    @+

  4. #4
    Membre du Club Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 47
    Points
    47
    Par défaut
    Dans le code de la servlet, j'ai essayé de mettre ceci :
    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 ServletMessage extends HttpServlet{
     
      public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
         doPost(request, response);
      }
     
      public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        BufferedReader entree = new BufferedReader(new InputStreamReader(request.getInputStream()));
        String message = entree.readLine();
        String message_sortant = "";
        for (int i=0; i<message.length() ;i++)
        {
          message_sortant += message.charAt(i);
        }
        PrintWriter sortie = new PrintWriter(response.getOutputStream(), true);
        sortie.println(message_sortant);
      }
    }
    Comme vous pouvez le voir, j'ai fait une boucle de 0 à la longueur du message mais le résultat est toujours identique.

    En réponse à RanDomX, comment régler le pb de l'écriture en lifo ???

    En réponse à FreshVic, j'ai essayé de faire affiché 'message' dans la servlet mais il ne veut pas l'afficher (je ne sais po pkoi). J'ai fait un System.out.println("message) dans ma classe ServletMessage que j'ai mis dans mon premier post mais rien.
    Mais il est possible que quand je suis dans ma servlet et que je viens de recevoir le flux à renvoyer (entree.readLine()), il soit dejà en inverse mais je ne vois pas comment le voir.

    Voilà !!![/code]
    Venez nombreux sur ce forum, il est génial !!!

  5. #5
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 407
    Points
    1 407
    Par défaut
    a mons avis la réponse est la dedans.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (int i=0; i<message.length() ;i++) 
    { 
          message_sortant += message.charAt(i); 
    }
    Je t'avoue que j'ai pas lut ton code, car trop abscond, pas formatté ApacheStyle (oui ok je suis monomaniaque...).

    Si tu fais la boucle a l'envers, ca devrait etre bon.
    C'est juste une intuition.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (int i=message.length(); i>=0 ;i--) 
    { 
          message_sortant += message.charAt(i); 
    }
    Essais ca!

    @+

  6. #6
    Membre du Club Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 47
    Points
    47
    Par défaut
    Ouai j'ai fait également la boucle à l'envers mais le pb est identique.
    J'ai pour celà que c'est vraiment bizarre !!!!!


    Mais je ne vois pas du tout d'où peut venir le pb !!!
    Venez nombreux sur ce forum, il est génial !!!

  7. #7
    Membre du Club Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 47
    Points
    47
    Par défaut
    Quelqu'un a une idée car je reste dans le flou total !!!


    Venez nombreux sur ce forum, il est génial !!!

  8. #8
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 407
    Points
    1 407
    Par défaut
    Fais voir l'endroit ou il y a ce bout de code :

    @+

  9. #9
    Membre du Club Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 47
    Points
    47
    Par défaut
    Le problème n'est pas t5.getText() car j'ai fait le test d'autres exemples :
    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
     
    class exec implements ActionListener
      {
        public void actionPerformed(ActionEvent e) {
         try {
           URL url = new URL("http://localhost:8080/AppletServlet2/ServletMessage");
           URLConnection connexion = url.openConnection();
           connexion.setDoOutput(true);
           PrintWriter sortie = new  PrintWriter(connexion.getOutputStream(),true);
           sortie.println("toto2");
           BufferedReader entree = new BufferedReader(new InputStreamReader(connexion.getInputStream()));
           JOptionPane.showMessageDialog(p1,entree.readLine(),"Réponse",JOptionPane.INFORMATION_MESSAGE);
         }
         catch (IOException erreur) {
           erreur.printStackTrace();
           JOptionPane.showMessageDialog(p1,"Problème pour lancer le traitement","Erreur",JOptionPane.ERROR_MESSAGE);
         }
        }
      }
    Dans le cas ci-dessus, je le fais avec toto2.

    Et voilà mon code de servlet :
    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 ServletMessage extends HttpServlet{
     
      public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
         doPost(request, response);
      }
     
      public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        BufferedReader entree = new BufferedReader(new InputStreamReader(request.getInputStream()));
        String message = entree.readLine();
        String message_sortant = "";
        for (int i=0; i<message.length() ;i++)
        {
          message_sortant += message.charAt(i);
        }
        PrintWriter sortie = new PrintWriter(response.getOutputStream(), true);
        sortie.println(message_sortant);
      }
    }
    Venez nombreux sur ce forum, il est génial !!!

  10. #10
    Membre du Club Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 47
    Points
    47
    Par défaut
    Alors, personne n'a d'idées.

    Venez nombreux sur ce forum, il est génial !!!

  11. #11
    Membre du Club Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 47
    Points
    47
    Par défaut
    Beh en fait, comme je l'explique plus haut, j'ai bien ma communication entre mon applet et mon serveur qui fonctionne via la servlet.
    Pour tester celà, j'envoie un message de mon applet au serveur et je demande à ce dernier de me renvoyer le message sur une popup que j'affiche.

    Le pb est que le message renvoyé est à l'envers (toto devient otot) alors que je ne lui demande pas de le faire.

    Comme je le dis, j'ai essayé de faire une boucle for pour lui forcer à l'écrire dans le bon sens mais pas moyen.

    Voilà
    Venez nombreux sur ce forum, il est génial !!!

  12. #12
    Membre du Club Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 47
    Points
    47
    Par défaut
    Ouai lol, j'ai essayé cette boucle et ca fonctionne pas mieux. C'est toujours à l'envers.
    C'est pour celà que je ne comprend pas du tout.

    RanDomX m'a parlé d'un flux en lifo mais je ne sais ps trop ce que c'est.
    Venez nombreux sur ce forum, il est génial !!!

  13. #13
    Membre du Club Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 47
    Points
    47
    Par défaut
    Bon je viens d'inverser mon texte dans l'applet au lieu que dans la servlet et ca fonctionne. Ce qui parait logique.

    Mais j'aimerais quand même bien comprendre pourquoi il est inversé !!!!
    Venez nombreux sur ce forum, il est génial !!!

  14. #14
    Membre du Club Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par ZeKiD
    J'avoue que comme çà je ne sais pas vraiment.
    Probablement que tu devrais d'abord stocker ta String de résultat avant de le mettre dans JOptionPane.
    Sinon çà marche donc ??
    Tu voudrais que je stocke d'abord le résultat, ok mais où mais pour quelle utilité ?

    Je ne comprend pas ta question suivante : Ca marche donc ??
    Venez nombreux sur ce forum, il est génial !!!

  15. #15
    Membre du Club Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 47
    Points
    47
    Par défaut
    Bon je viens de faire des tests et je viens de voir que l'inversion vient de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    System.out.println(T1.getText());
    BufferedReader entree = new BufferedReader(new InputStreamReader(connexion.getInputStream()));
    System.out.println(entree.readLine());
    Le premier System.out.println écrit le texte comme il faut et le deuxième l'écrit à l'envers donc ca vient de la ligne du milieu.

    Le pb est que je ne peux rien faire affiché quand je suis dans le code de la servlet, c ca ?
    Venez nombreux sur ce forum, il est génial !!!

  16. #16
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    As tu essayé de mettre un \n à la fin de ton texte.
    Car là ce que tu fais c'est que tu essaies de lire une ligne.
    Donc s'il y a pas de caractère de fin de ligne !! Je ne sais pas ce qui se passe.
    Tu peux essayer sinon en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    BufferedInputStream entree = new BufferedInputStream (connexion.getInputStream()); 
    byte[] b = new byte[1024];
    String resultat = "";
    while( (entree.read(b)!=-1){
       resultat += new String(b,"ISO-8859-1");
    }

  17. #17
    Membre du Club Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 47
    Points
    47
    Par défaut
    Je veux bien essayer ton test mais je le met ou ? Dans le code de la servlet ou dans le code de mon applet ?

    Quel est le but de ce bout de code car il ne fait rien affiché ?
    Venez nombreux sur ce forum, il est génial !!!

  18. #18
    Membre du Club Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 47
    Points
    47
    Par défaut
    Ok je comprend mais dans ce cas là, tu veux que j'affiche quoi pour voir si le pb est réglé , résultat ?
    Venez nombreux sur ce forum, il est génial !!!

  19. #19
    Membre du Club Avatar de gandalf_le_blanc
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 161
    Points : 47
    Points
    47
    Par défaut
    Je me demande si tu ne t'es pas trompé dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while (entree.read(b)!=-1)
           {
                  resultat += new String(b,"ISO-8859-1");
           }
    Car quand j'affiche résultat dans une popup pour voir comment ca fonctionne, j'ai une popup infini dans le sens où il y a des caractère infini qui s'affiche !!!!
    Venez nombreux sur ce forum, il est génial !!!

  20. #20
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while ( (entree.read(b))!=-1) 
           { 
                  resultat += new String(b,"ISO-8859-1"); 
           }
    Essaie avec les paranthèses ....
    çà vient certainement de là
    Désolé !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/03/2013, 12h19
  2. Réponses: 1
    Dernier message: 02/03/2013, 09h49
  3. Problème d'affichage de servlet
    Par MalcolmIT dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 16/10/2011, 16h08
  4. Réponses: 3
    Dernier message: 22/08/2007, 16h53
  5. Réponses: 1
    Dernier message: 14/05/2006, 20h02

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