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

2D Java Discussion :

[JFreeChart] afficher un graphe dans une page jsp


Sujet :

2D Java

  1. #21
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Je t'ai déjà conseillé de vérifier le type de tes champs date dans la table.
    Parce que là, tel que tu as codé la requête, tu considères que les dates sont de type String.
    Or, quand tu lis le ResultSet, tu récupères le contenu du champ rs.getTimestamp("datex").
    Tu devrais donc logiquement avoir un message d'erreur sur la requête car manifestement, les types ne sont pas compatibles.

    En tout cas, si ton graphe est vide, c'est que ta requête ne renvoie pas de records.
    Modératrice Java - Struts, Servlets/JSP, ...

  2. #22
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Salut, j ai remarqué une chose :

    j'ai changé le méthode 'Post' par 'Get' de la page graph.jsp 'formulaire' ,ainsi la servlet 'doPost' par 'doGet', je remarque lors de l'envoi du formulaire, des doublons de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost:8016/Graph/ServletGraph_v1?g=melbaroudi&groupe=melbaroudi&m=Ping+rtwan&monitor=Ping+rtwan&date1=2009-03-23+11%3A05%3A23.0&dated=2009-03-23+11%3A05%3A23.0&date2=2009-03-23+12%3A45%3A08.0&datef=2009-03-23+12%3A45%3A08.0
    et je comprends pas pourquoi , tu penses que c est à cause de ça que ça marche pas.

    merci infiniment

  3. #23
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Il est normal que tu aies des doublons puisque par exemple, dans ton formulaire, tu as le champ g et le champ groupe et tu initialises le champ groupe avec la valeur du champ g. Donc, automatiquement, tu retrouves les champs g et groupe dans l'url avec la même valeur.
    C'est pareil pour m et monitor, date1 et dated, date2 et datef.

    Comme dans la servlet, tu récupères les valeurs de groupe, monitor, dated et datef, et que ce sont ces valeurs que tu passes dans la clause where, ça ne devrait pas poser de problème.

    Par contre, assure-toi que les valeurs passées dans l'url correspondent bien à celles que tu as dans la table afin que la clause where renvoie bien des records.
    Modératrice Java - Struts, Servlets/JSP, ...

  4. #24
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Merci encore, j'ai bien vérifié les données qui sont dans la table par rapport aux données renvoyés à l'url, c'est bon c est le mêmes.

    les Types de Champs de ma table est les suivant :

    value2 (varchar)
    datex (varchar)

    1 . en fait qd j'execute la servlet tte seule en utilisant la requete en dur avec les champs value2 et datex en varchar :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String requete = "select * from PingTest where groupName like '%melbaroudi%'and monitorName like'%Ping rtwan%'and datex BETWEEN '2009-03-23 11:05:23'and '2009-03-23 11:50:08'";
    ça marche et ça me trace mon graphe nickel. mais dynamiquement en utilisant mon formulaire tjs pas

    2 . j'ai converti comme tu m as dis les dates en Type Date (j'éspère que c est comme ça qu'il faut faire), pour cela j ai utilisé une classe StringToDate.java et mon code donne :

    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
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    package test;
     
    import java.io.File;
    import test.StringToDate;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.Timestamp;
    import java.text.ParseException;
     
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartUtilities;
    import org.jfree.chart.JFreeChart;
    import org.jfree.data.time.Minute;
    import org.jfree.data.time.TimeSeries;
    import org.jfree.data.time.TimeSeriesCollection;
     
     
    public class ServletGraph_v1 extends HttpServlet  {
     
     
    	private static final long serialVersionUID = 1L;
     
    	ServletOutputStream outb;
    	Connection connection;
        Statement statmt;
        ResultSet rs;
        String url = "jdbc:mysql://localhost:3306/test";
    	String username = "root";
    	String password = null ;
        String driver ="com.mysql.jdbc.Driver";
        Timestamp datedeb;
        Timestamp datedef;
     
        //Initialiser les variables globales
     
        public void init() throws ServletException {
        	try{
        		Class.forName(driver);
        	}
        	catch (ClassNotFoundException e){
        		System.out.println("Pilote non retrouvé");
        	}
        	try{
        		connection = DriverManager.getConnection(url,username,password);
        	}
        	catch(SQLException sqle){System.out.println("Erreur lors de la connexion à la base de données");
        	destroy();}
      }
     
      //Traiter la requête HTTP Get
     
      public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
     
    	/*
    	 res.setContentType("text/html");
    	PrintWriter out = res.getWriter();
    	 */ 
     
    	String groupName = req.getParameter("groupe");
    	String moniteur = req.getParameter("monitor");
    	String datedebut = req.getParameter("dated");
    	String dateFin = req.getParameter("datef");
     
     
    	System.out.println("recupération des données");
    	/*
    	out.println("<html>");
        out.println("<body>\n"+groupName+"\n<br>"+moniteur+"\n<br>"+datedebut+"\n<br>"+dateFin+"</body>");
    	out.println("<html>");
    	*/
     
    	outb = res.getOutputStream();
        StringBuffer tampon = new StringBuffer(2000);
     
        try{
     
        Timestamp sDate= StringToDate.toDBDateFormat(datedebut);
        Timestamp zDate= StringToDate.toDBDateFormat(dateFin);
     
        tampon.append("select * from pingtest where groupName like '%");
        tampon.append(groupName);
        tampon.append(" %'and monitorName like'%");
        tampon.append(moniteur);
        tampon.append("%'and datex between '");
        tampon.append(sDate);
        tampon.append("'and'");
        tampon.append(zDate);
        tampon.append("'");
        tampon.append(";");
     
    	}catch (ParseException b){System.out.println("Erreur Parse");}
     
    	System.out.println("je suis là");
     
        String requete = tampon.toString();
    	//String requete = "select * from PingTest where groupName like '%melbaroudi%'and monitorName like'%Ping rtwan%'and datex BETWEEN '2009-03-23 11:05:23'and '2009-03-23 11:50:08'";
     
        final TimeSeries series = new TimeSeries("Minute", Minute.class);
     
        try {
            statmt = connection.createStatement();
            rs = statmt.executeQuery(requete);
     
    		while(rs.next()){
     
    	    	Timestamp v1 = rs.getTimestamp("datex");
    	    	double v2=rs.getDouble("value2");
    	    	series.addOrUpdate( new Minute(v1), v2);
    	    } 
    		rs.close();
        }
        catch (SQLException sqle){System.out.println("Erreur de requete");}
     
        System.out.println("coucou");
     
        final TimeSeriesCollection dataset = new TimeSeriesCollection(series);
        final String chartTitle = "Graph of Monitor Ping";
        final JFreeChart chart = ChartFactory.createTimeSeriesChart(
            chartTitle,
            "Time", 
            "Value",
            dataset,
            true,
            true,
            false
        );
     
        OutputStream out = res.getOutputStream(); 
        res.setContentType("image/png"); 
    	ChartUtilities.writeChartAsPNG(out, chart, 700, 600);
    	File fichier = new File("image.png");
    	 try { 
    	       ChartUtilities.saveChartAsPNG(fichier, chart, 400, 250); 
    	     } catch (IOException e) { 
    	       e.printStackTrace(); 
    	     } 
    	System.out.println("aloooo");
      }
     
      //Nettoyer les ressources
      public void destroy() {
        try {
               connection.close();
               }
               catch (SQLException sqle){System.out.println("Erreur de fermeture de connexion à la base de données");}
               System.out.println("hahahah");
        }
     
    }
    et tjs mon graphe est vide.. la console d'Eclipse m' affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    recupération des données
    je suis là
    coucou
    aloooo
    22 juin 2009 18:03:50 org.apache.catalina.core.StandardContext reload
    INFO: Le rechargement de ce contexte a démarré
    hahahah
    22 juin 2009 18:03:50 org.apache.catalina.loader.WebappClassLoader validateJarFile
    INFO: validateJarFile(C:\eclipse\projet\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\webapps\Graph\WEB-INF\lib\servlet-api-2.3.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
    et finalement ma classe StringToDate :

    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
    package test;
    import java.sql.Timestamp;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
     
    public class StringToDate {
     
        public static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     
        public static Date stringToDate(String sDate) throws ParseException {
            return formatter.parse(sDate);
        }
     
        public static Timestamp toDBDateFormat(String sDate) throws ParseException {
            return new Timestamp(stringToDate(sDate).getTime());
        }
     
        public static void main(String[] args) throws ParseException {
     
        	String inputDate = null ;
            Timestamp t= toDBDateFormat(inputDate);
            System.out.println("1ere methode:"+t);
        }
     
    }
    Merci bcp de me donner 1 coup de main.

  5. #25
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Si la requête ramène bien des données quand tu codes les dates en dur avec des simples quotes, cela signifie qu'il n'y a pas besoin de faire de conversion.

    Tu devrais afficher la requête dans la console une fois que tu as récupéré les valeurs pour voir à quoi elle ressemble.
    Modératrice Java - Struts, Servlets/JSP, ...

  6. #26
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    Yopppi, ça marche je sais pas comment te remercier, c trés gentil de ta part, effectivement j ai affiché la requete et je me suis rendu compte qu il y avait un espace ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tampon.append(" %' and monitorName like'%");
    je l ai rectifié comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tampon.append("%' and monitorName like'%");
    et ça marche.

    Maintenant, je vais continuer la deuxiéme étape de mon projet qui consiste à afficher ce graphe par une granularité , par exemple tout les 2 minutes ou secondes ou heure ou .....

    Merci bcp.

  7. #27
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    De rien.

    Bon courage pour la suite.
    Modératrice Java - Struts, Servlets/JSP, ...

  8. #28
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    re Salut c encore moi, juste une question , j 'ai un champ dans ma table de Type 99,26 avec des virgules , et j arrive pas les afficher dans le graphe, pourtant quand j'utilise les champs types 99 ça marche nickel.

    Merci pour ta réponse.

  9. #29
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Points : 7
    Points
    7
    Par défaut
    C bon je l 'ai trouvé, il fallait mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int v2=rs.getInt("nomChamp");

Discussions similaires

  1. Afficher ue image dans une page jsp appartir d'un ficher xml
    Par Mohcine.nb dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 19/05/2014, 10h59
  2. Afficher un PowerPoint dans une page Jsp
    Par goprok dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 11/03/2014, 21h47
  3. [JFreeChart] affichage d'un graphe dans une page jsp
    Par mokhtarmaroc dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 08/09/2007, 23h13
  4. afficher l'arborescence dans une page jsp
    Par Ssimo dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 17/05/2007, 11h58
  5. afficher une fenetre dos dans une page jsp
    Par youp_db dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 13/10/2006, 17h02

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