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 :

JSP : Méthodes Java


Sujet :

Servlets/JSP Java

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut JSP : Méthodes Java
    Bonjour,
    J'ai crée une fonction recherche qui récupère des informations dans un fichier xml et les affiches , je voudrais les afficher sur une page web via un fichier jsp
    mais quand je crée ma fonction dans le jsp avec <%! %> il ne reconnait pas out.println. Je voudrais savoir comment faire en sorte que ma fonction affiches les donnée sur la page web. (j'ai aussi une servlet qui récupère les données qui permettront de faire la recherche et les envoies à la fonction recherche)

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    package packageTreatment;
     
    import java.io.*;
     
    import org.jdom2.*;
    import org.jdom2.input.*;
     
    import java.util.List;
    import java.util.Iterator;
    import java.util.StringTokenizer;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletResponse;
     
    public class Rechercher
    {
       static org.jdom2.Document document;
       static Element racine;
       static String name;  
       /*
       public static void main(String[] args)
       {
    	   //String nom = "Menethil";
    	   //String prenom = "Arthas";
     
     
          SAXBuilder sxb = new SAXBuilder();
          try
          {
     
             document = sxb.build(new File("WebContent/annuaire.xml"));
          }
          catch(Exception e){}
     
          affiche(nom,prenom);
       }
       */
     
       public static void cherche(String parNom, String parPrenom, HttpServletResponse response) throws ServletException, IOException
       {
     
     
    	   SAXBuilder sxb = new SAXBuilder();
    	   try
    	   {
     
    		   document = sxb.build(new File("WebContent/annuaire.xml"));
    	   }
    	   catch(Exception e){}
     
     
    	   racine = document.getRootElement();
     
    	   List<Element> personne = racine.getChildren("personne");
    	   Iterator<Element> i = personne.iterator();
    	   while(i.hasNext())
    	   {
    		   Element courant = (Element)i.next();
    		   String id = courant.getAttributeValue("id");
     
    		   if(teste(parNom,parPrenom,id))
    		   {
     
    			   System.out.println(courant.getChild("prenom").getText());
    			   System.out.println(courant.getChild("nom").getText());
    			   System.out.println(courant.getChild("adresse").getText());
    			   System.out.println(courant.getChild("email").getText());
    			   System.out.println(courant.getChild("numFixe").getText());
    			   System.out.println(courant.getChild("numPortable").getText());
    			   System.out.println(courant.getChild("commentaire").getText());
     
    		   }
     
          }
       }
     
     
     
       static boolean teste (String nom, String prenom, String id)
       {
    	   String[] nomPrenom = new String[2];
    	   int i=0;
     
    	   boolean bool = false ;
     
    	   StringTokenizer st = new StringTokenizer(id,"||");
    	   while (st.hasMoreTokens())
    	   {
    		  nomPrenom[i] = st.nextToken();
    		  i++;
     
    	   }
     
    	   if ( (nomPrenom[0].equals(prenom)) || (nomPrenom[1].equals(nom)) )
    	   {
    		   bool = true ;
    	   }
     
    	   return bool;
     
       }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Mais tu mets quoi dans <%! %> ? Parce que ce tag c'est pour déclarer, pas pour appeler...

    Déclarer comme quand tu écris private int truc=0; dans une classe Java). Si tu utilises <%! %> pour déclarer une méthode dans ta jsp, tu ne peux pas y utiliser directement out, car c'est une variable locale (locale à la méthode de la classe Java qui sera créée à partir du fichier Jsp) et non membre de la classe. Si tu veux pouvoir écrire dans le flux de la jsp avec une méthode, il faut passer le out en paramètre : le out est de type JspWriter.

    Exemple :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <%! private void uneMethodeQuiEcritDansOut(JSpWriter out) {
     
               out.println("coucou");
     
    }%>
     
     
    <%  // appel de la méthode
     
       uneMethodeQuiEcritDansOut( out );
     
    %>
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    Pour File il me dit : File cannot be resolved to a type
    document = sxb.build(new File("WebContent/annuaire.xml"));


    Dans la servlet je voudrais appeler cherche() mais je ne sais pas comment faire pour appeler une fonction d'un fichier jsp dans 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    <%!
     
     
    public static void cherche(String parNom, String parPrenom, HttpServletResponse response,JspWriter out) 
    {
            
               Document document;
               Element racine;
               String name; 
                    
               SAXBuilder sxb = new SAXBuilder();
               try
               {
     
                       document = sxb.build(new File("WebContent/annuaire.xml")); //   <-----------------------------------------------------------
               }
               catch(Exception e){}
     
     
               racine = document.getRootElement();
               
               List<Element> personne = racine.getChildren("personne");
               Iterator<Element> i = personne.iterator();
               while(i.hasNext())
               {
                       Element courant = (Element)i.next();
                       String id = courant.getAttributeValue("id");
                       
                       if(teste(parNom,parPrenom,id))
                       {
                               //string(courant.getChild("prenom").getText(),courant.getChild("nom").getText(),courant.getChild("adresse").getText(),courant.getChild("email").getText(),courant.getChild("numFixe").getText(),courant.getChild("numPortable").getText(),courant.getChild("commentaire").getText(),response);
                               
                               out.println(courant.getChild("prenom").getText());
                               out.println(courant.getChild("nom").getText());
                               out.println(courant.getChild("adresse").getText());
                               out.println(courant.getChild("email").getText());
                               out.println(courant.getChild("numFixe").getText());
                               out.println(courant.getChild("numPortable").getText());
                               out.println(courant.getChild("commentaire").getText());
                               
                       }
                         
       }
    }
     
    static boolean teste (String nom, String prenom, String id)
    {
               String[] nomPrenom = new String[2];
               int i=0;
               
               boolean bool = false ;
               
               StringTokenizer st = new StringTokenizer(id,"||");
               while (st.hasMoreTokens())
               {
                      nomPrenom[i] = st.nextToken();
                      i++;
                      
               }
               
               if ( (nomPrenom[0].equals(prenom)) || (nomPrenom[1].equals(nom)) )
               {
                       bool = true ;
               }
               
               return bool;
               
    }
      
     
     
     
     
     
    %>

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par pitchu Voir le message
    Pour File il me dit : File cannot be resolved to a type
    document = sxb.build(new File("WebContent/annuaire.xml"));
    C'est qu'il manque un import de java.io.File...


    Dans la servlet je voudrais appeler cherche() mais je ne sais pas comment faire pour appeler une fonction d'un fichier jsp dans la servlet
    Ça n'est pas le peine d'y compter : tu ne pourras pas appeler une méthode de la jsp en dehors de la jsp. Mais pourquoi faire une méthode dans la jsp, si c'est pour l'appeler dans la servlet ?

    Si tu as besoin de générer une page html (ou autre) depuis une servlet, écris dans le out de la servlet. Si tu veux faire une méthode utilitaire que tu peux appeler depuis une jsp ou une servlet, fait cette méthode dans une classe Java, en static, avec un paramètre out de type JspWriter : tu pourras l'appeler indifféremment depuis une jsp ou depuis une servlet. Exactement comme tu as fais avec ta classe Ajouter. D'ailleurs pourquoi ne pas faire une classe : Annuaire, avec un méthode ajouter(), chercher(), etc ? Que tu peux appeler de n'importe où...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    j'ai crée la page directement dans Rechercher, mais dans la servlet comment j'initialise JspWriter out .

    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
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		response.setContentType("text/pain");
     
    		//PrintWriter pw = response.getWriter();
    		JspWriter out = null ;
     
    		String nom,prenom ;
     
    		nom = request.getParameter("nom");
    		prenom = request.getParameter("prenom");
     
    		Rechercher.cherche(nom,prenom,response,out);
     
    	}
    fichier Rechercher.java

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    package packageTreatment;
     
    import java.io.*;
     
    import org.jdom2.*;
    import org.jdom2.input.*;
     
    import java.util.List;
    import java.util.Iterator;
    import java.util.StringTokenizer;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.jsp.JspWriter;
     
    public class Rechercher
    {
       static org.jdom2.Document document;
       static Element racine;
       static String name;  
     
       public static void cherche(String parNom, String parPrenom, HttpServletRequest request,JspWriter out) throws ServletException, IOException
       {
     
    		Document document = null ; 
    		String file = "annuaire.xml" ;		
    		SAXBuilder builder = new SAXBuilder(); 
     
    		try {
    			document = builder.build(new File(request.getServletContext().getRealPath(file)));
    		} catch (JDOMException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
     
    	   racine = document.getRootElement();
     
    	   List<Element> personne = racine.getChildren("personne");
    	   Iterator<Element> i = personne.iterator();
     
    	   out.write("<table border=\"1\">") ;
    		out.write("<caption> CONTACTS </caption>") ;
     
    		 out.write("<tr>");
    		 	out.write("<th> prenom </th>");
    		 	out.write("<th> nom </th>");
    		 	out.write("<th> adresse </th>");
    		 	out.write("<th> email </th>");
    		 	out.write("<th> numFixe </th>");
    		 	out.write("<th> numPortable </th>");
    		 	out.write("<th> commentaire </th>");
    		 out.write("</tr>");
     
     
     
    	   while(i.hasNext())
    	   {
    		   Element courant = (Element)i.next();
    		   String id = courant.getAttributeValue("id");
     
    		   if(teste(parNom,parPrenom,id))
    		   {
    			   //string(courant.getChild("prenom").getText(),courant.getChild("nom").getText(),courant.getChild("adresse").getText(),courant.getChild("email").getText(),courant.getChild("numFixe").getText(),courant.getChild("numPortable").getText(),courant.getChild("commentaire").getText(),response);
     
     
    				 out.write("<tr>");
    				 	out.write("<td>"+ courant.getChild("prenom").getText()+"</td>");
    				 	out.write("<td>"+ courant.getChild("nom").getText()+"</td>");
    				 	out.write("<td>"+ courant.getChild("adresse").getText()+"</td>");
    				 	out.write("<td>"+ courant.getChild("email").getText()+"</td>");
    				 	out.write("<td>"+ courant.getChild("numFixe").getText()+"</td>");
    				 	out.write("<td>"+ courant.getChild("numPortable").getText()+"</td>");
    				 	out.write("<td>"+ courant.getChild("commentaire").getText()+"</td>");
    				 out.write("<tr>");	
     
    			out.write("</table>");
     
    		   }
     
          }
       }
     
       static boolean teste (String nom, String prenom, String id)
       {
    	   String[] nomPrenom = new String[2];
    	   int i=0;
     
    	   boolean bool = false ;
     
    	   StringTokenizer st = new StringTokenizer(id,"||");
    	   while (st.hasMoreTokens())
    	   {
    		  nomPrenom[i] = st.nextToken();
    		  i++;
     
    	   }
     
    	   if ( (nomPrenom[0].equals(prenom)) || (nomPrenom[1].equals(nom)) )
    	   {
    		   bool = true ;
    	   }
     
    	   return bool;
     
       }
     
    }

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Dans la servlet, c'est pas un JspWriter, mais un PrintWriter.

    Sinon, comment écrire la page html réponse à la requête envoyée à la servlet, soit comment récupérer le PrintWriter qui permet de le faire ? Tout ça c'est dans les tutoriels (65.4.6. Un exemple de servlet HTTP très simple) :

    Là :
    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 MyHelloServlet extends HttpServlet {
     
       public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
     
           response.setContentType("text/html");
     
           PrintWriter out = response.getWriter();
     
           out.println("<html>");
           out.println("<head>");
           out.println("<title>Bonjour tout le monde</title>");
           out.println("</head>");
           out.println("<body>");
           out.println("<h1>Bonjour tout le monde</h1>");
           out.println("</body>");
           out.println("</html>");
     
       }
    }
    C'est quand même pas bien compliqué de lire ça et voir qu'on écrit du html dans la réponse à la requête http ! Pour apprendre à programmer, il ne suffit pas de copier des trucs : il faut les lire et les comprendre. Ce qui permet de reconnaitre les similitudes et les différences entre les choses, plutôt que d'essayer de faire du copier/coller d'un truc dans un autre sans comprendre ce que fait quoi.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    merci de votre aide

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

Discussions similaires

  1. Appeler une méthode Java dans une JSP
    Par imranito1990 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 24/06/2014, 18h44
  2. réutilisation méthode Java dans une JSP
    Par dtwelve dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 03/09/2009, 14h23
  3. [JSP] Méthode post entre 2 jsp
    Par SteelBox dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 13/03/2009, 01h20
  4. JSP Appel méthode JAVA
    Par maxime17s dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/06/2007, 11h59

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