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 :

recuperer des données de servlet vers jsp


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 208
    Points : 32
    Points
    32
    Par défaut recuperer des données de servlet vers jsp
    salut,

    j'ai un problème je veux savoir comment récupérer les données de servlet vers une page jsp

    mais le problème est que la servlet dois récupérer les donnés d'un fichier .xml

    grâce a l'url de l'emplacement de fichier .xml

    après je dois afficher ses donnes dans la page jsp

    selon mon besoin

    si je vous donne un exemple de fichier .xml


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="UTF-8"?>
    <applications>
       <application>
          <nom>firefox</nom>
          <nombre>45</nombre>
       </application>
     
     
       <application>
          <nom>chrome</nom>
          <nombre>15</nombre>
       </application>
     
    </applications>

    et un la class java qui recupere les donnés de fichier .xml

    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
    import java.io.*;
    import org.jdom.*;
    import org.jdom.input.*;
    import java.util.List;
    import java.util.Iterator;
     
    public class Exemple_XML{
       static org.jdom.Document document;
       static Element racine;
     
       public static void main(String[] args){
          SAXBuilder sxb = new SAXBuilder();
          try{
             document = sxb.build(new File("Application.xml"));
          }
          catch(Exception e){}
          racine = document.getRootElement();
          afficheALL();
       }
       static void afficheALL(){
        List listApplications = racine.getChildren("application");
        Iterator i = listApplications.iterator();
       while(i.hasNext()){
          Element courant = (Element)i.next();
         // System.out.println(courant.getValue());  //Afficher les noms + nombre
          System.out.println("\n"+courant.getChild("nom").getValue()+" \n"+courant.getChild("nombre").getValue());
         // System.out.println(courant.getChild("nom").getValue());
       }
    }
    }

    et j'ai un exemple de class java qui est nécessaire pour mon exemple qui sert à récupérer les donnes grâce à un URL donnés

    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
     
    import java.io.*;
    import java.net.*;
     
    public class HttpClient
    {
    private static  HttpClient instance;
      protected URL url;
      protected HttpURLConnection server;
     
     
      public HttpClient() {}
     
      /**
       * @param method: String object for client method (POST, GET,...)
       */
      public void connect(String method,String szUrl) throws Exception
      {
        try 
        {
          url = new URL(szUrl);
          server = (HttpURLConnection)url.openConnection();
          server.setDoInput(true);
          server.setDoOutput(true);
          server.setRequestMethod(method);
          server.setRequestProperty("Content-type",
                                    "application/x-www-form-urlencoded");
          server.connect();
        }
        catch (Exception e)
        {
          throw new Exception("Connection failed");
        }
      }
     
      public void disconnect()
      {
        server.disconnect();
      }
     
      public String displayResponse() throws Exception
      {
        String line;
        String result = null;
        try
        {
          BufferedReader s = new BufferedReader(
                                new InputStreamReader(
                                    server.getInputStream()));
          line = s.readLine();
          while (line != null)
          {
            result+=line;
            line = s.readLine();
          }
          s.close();
        }
        catch(Exception e)
        {
          throw new Exception("Unable to read input stream");
        }
        return result;
      }
     
      public void post(String s) throws Exception
      {
        try
        {
          BufferedWriter bw = new BufferedWriter(
                                    new OutputStreamWriter(
                                        server.getOutputStream()));
          bw.write(s, 0, s.length());
          bw.flush();
          bw.close();
        }
        catch(Exception e)
        {
          throw new Exception("Unable to write to output stream");
        }
      }
     
     
    public static HttpClient getInstance() {
    	if (instance==null)
    		instance=new HttpClient();
    	return instance;
    }
     
     
    }
    et pour 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
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    public class TestServlet extends HttpServlet {
     
     
    	@Override
    	protected void service(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
     
    HttpClient c = HttpClient.getInstance();
    String v="";
    try {
    	String message="";
    	c.connect("GET","http://www.google.fr");
     
    	//"?data="+message.toString()
     
    	v=(c.displayResponse());
         c.disconnect();
    } catch (Exception e) {
     
    	e.printStackTrace();
    }
     
     
     
    		PrintWriter out=response.getWriter();
     
    String s= "# ----------------------------------------\n";
     
     
     
    s+=v;
     
    out.write(s);
     
     
     
     
    	}
     
     
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		super.doGet(req, resp);
    	}
     
     
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		super.doPost(req, resp);
    	}
     
     
     
     
    }

    le changement qui je dois fiare pour traiter le fichier .xml

    est au niveau de l'URL par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.connect("GET","http://localhost/www/test.xml");

    pour résumer je veux par exemple grâce au fichier test.xml

    je veux récupérer les donnes grâce a servlet qui contient l'URL de l'emplacement de fichier de fichier test.xml et qui fait appel a la class HttpClient et la class qui parcour le fichier pour recuperer les donnés sous forme d'Objet

    je vous donne un exemple de class java qui fait parser le fichier .xml

    par exemple voila un sénario de test : par exemple dans un page index.jsp
    contenant un bouton et si clique sur ce bouton il me dirige vers un autre page acceul.jsp cette page contient par exemple

    un menu ; firefox et chrome

    donc la modification dois se faite dans ce bout de code de la page acceuil.jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <h:selectOneMenu >
    				<f:selectItem itemLabel="firefox" itemValue="firefox" />
    				<f:selectItem itemLabel="chrome" itemValue="chrome" />
     
     
     
     
    			</h:selectOneMenu>
    on dois normalement mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     itemValue="#TestServlet.nomObjet.nomAttribut"
    selon le nom de l'objet ércit dans la servlet



    j'espère qui j'arrive à rendre le problème claire

    merci d'avance

  2. #2
    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
    Qu'est-ce que vous essayez de faire au juste? Dans vos code il y a un metling pot de plein de trucs. Une page JSF, une servlet qui se connecte à google, un classes avec des membres statiques (ne jamais utiliser static en application web!!!!), et un main (qu'est-ce qu'il viens faire dans votre servlet)???

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 208
    Points : 32
    Points
    32
    Par défaut
    mon but final est d'afficher des statistiques sous forme de camembert dans des pages web

    a titre d'exemple j'ai un code qui affiche un statistique dont il y'a trois secteurs

    firfox :45 chrome :15 other: 40
    mais le problème est comment faire le statistique dynamiquement sans mettre statistiquement ses cordonnés (45,12,43)

    effectivement ses donnés je dois les récupérer de fichier test.xml

    ce fichier test.xml je dois le mettre sous le dossier www de fichier wamp

    et dans la servlet je fait appel grâce a l'URL de l'emplacement de fichier .xml


    la class qui contient le main c'est q'un exemple de class java qui j'ai la tester pour parser le fichier test.xml

    normalement je crée un class java qui ne contient que des méthodes et qui retourne des objets ou bien écrire ce code dans la servlet elle même

    à mon avie le scénario dois être comme suit dans le servelt on dois parcourir le fichier test.xml et après envoyer ces données récupérés vers la page web pour afficher des statistiques qui change chaque fois qu'on change le contenu de fichier test.xml


    voila un exemple de code d'une page web qui affiche un statistique sous forme de camembert
    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
    <html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">
    <head>
    <title>page test</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    		<title>Mon exemple Example</title>
     
     
     
    		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    		<script type="text/javascript" src="../js/highcharts.js"></script>
     
     
    		<script type="text/javascript" src="../js/modules/exporting.js"></script>
     
     
     
    		<script type="text/javascript">
                    
                            var chart;
                            $(document).ready(function() {
                                    chart = new Highcharts.Chart({
                                            chart: {
                                                    renderTo: 'container',
                                                    plotBackgroundColor: null,
                                                    plotBorderWidth: null,
                                                    plotShadow: false
                                            },
                                            title: {
                                                    text: 'Browser market shares at a specific website, 2010'
                                            },
                                            tooltip: {
                                                    formatter: function() {
                                                            return '<b>'+ this.point.name +'</b>: '+ this.y +' %';
                                                    }
                                            },
                                            plotOptions: {
                                                    pie: {
                                                            allowPointSelect: true,
                                                            cursor: 'pointer',
                                                            dataLabels: {
                                                                    enabled: true,
                                                                    color: '#000000',
                                                                    connectorColor: '#000000',
                                                                    formatter: function() {
                                                                            return '<b>'+ this.point.name +'</b>: '+ this.y +' %';
                                                                    }
                                                            }
                                                    }
                                            },
                                        series: [{
                                                    type: 'pie',
                                                    name: 'Browser share',
                                                    data: [
                                                            ['Firefox',   45.0],
                                                            
                                                            {
                                                                    name: 'Chrome',    
                                                                    y: 15,
                                                                    sliced: true,
                                                                    selected: true
                                                            },
                                                           ['Others',  40 ]
                                                            
                                                    ]
                                            }]
                                    });
                            });
                                    
                    </script>
     
    	</head>
    	<body>
     
    		<!-- 3. Add the container -->
    		<div id="container" style="width: 800px; height: 400px; margin: 0 auto"></div>
     
     
    	</body>
    comme je dis normalement ces donnés (45,25,40)dois être envoyés a travers servlet

    donc le code de javascript dois avoir un changement pour qu'il est capable de récupéré de donnes d'un autre emplacement



    comme je dis le fichier test.xml je dois le mettre sous le dossier www de wamp

    et la servlet dois nécessairement contient ces lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    protected void service(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
     
    HttpClient c = HttpClient.getInstance();
    String v="";
    try {
    	String message="";
    	c.connect("GET","http://localhost/www/test.xml");
     
     
    } catch (Exception e) {
     
    	e.printStackTrace();
    }


    je pense que le problème maintenant est un peu claire

    servlet ->se connecte a l'emplacement de fichier test.xml ->parser ce fichier ->recuperer les données nécessaire ->envoyées ces donnes dans la page web->charger ces données dans l'emplacement correcte dans le code de la page web ->finalement affichage de statistique

  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
    la lecture du fichier ne dois pas avoir lieu dans la servlet qui génère la page web (la page web affiche du texte), mais dans la servlet qui génère le camembert (qui est pointée par le tag <img>, lui même généré par la requete précédente.).

    Ensuite, httpclient est inutile. Si c'est un simple get, pour récupérer le fichier vous faites:

    InputStream source = new URL("http://server/path").openStream();

    ainssi, ca marche aussi bien avec des file, des ressources dans des jars que des serveurs http

    Après, pour le parsing, comme déjà dit, la classe avec les "static" vous évitez. Vous faites soit directement le parsing dans votre code, soit vous créez une classe spécialisée pour ca, que vous instanciez et à laquelle, par exemple, vous passez l'inputstream.

    Pour vous en dire plus, maintenant, faudrait qu'on sache sur quel point vous bloquez: lire le fichier? le parser? générer une image dynamiquement?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 208
    Points : 32
    Points
    32
    Par défaut
    merci pour vos réponse vraiment vous été mon sauveur
    j'espère avec la prochaine réponse j'arrive a résoudre mon problème qui est vraiment compliqués (gérer des statistique de manière dynamique grâce a un fichier .xml)

    vous dite que je peux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InputStream source = new URL("http://localhost/www/test.xml").openStream();
    car c'est juste un simple get

    l'étape dont laquel je suis bloqué est comment générer une image dynamiquement car vous dite que le statistique est pointée par le tag <img>

  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
    pour générer des graphes, regardez du coté de la librairie jfreechart, elle a bonne réputation

Discussions similaires

  1. Envoyer donnée Servlet vers JSP
    Par totot dans le forum Servlets/JSP
    Réponses: 66
    Dernier message: 29/07/2014, 18h54
  2. recuperer des données vers un autre fichier
    Par ALTINEA dans le forum Excel
    Réponses: 3
    Dernier message: 24/02/2010, 21h40
  3. [XL-2002] Recuperer des données d'un fichier excel vers un autre
    Par labinocle81 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/08/2009, 11h36
  4. recuperer une donnée de popup vers jsp
    Par Vaucluse84 dans le forum Struts 1
    Réponses: 1
    Dernier message: 20/05/2007, 22h36
  5. Réponses: 3
    Dernier message: 22/02/2004, 20h09

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