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 :

Affichage d'un Jfreechart dans une JSP/Servlet


Sujet :

Servlets/JSP Java

  1. #1
    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 Affichage d'un Jfreechart dans une JSP/Servlet
    Bonjour, j'ai fait une classe qui se connecte a une base de donnée et qui affiche une courbe. Jusqu'au la tous fonctionne à merveille..
    Sauf que lors de l'affichage dans une JSP, je me suis bloqué, j'ai crée une servlet et tt mais je ne sais pas comment 'afficher.

    merci de me conseiller
    voici ma classe qui trace la courbe
    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
     
    package marouene;
     
    import java.awt.Color;
    import java.sql.Connection;
    import java.sql.Date;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.Timestamp;
     
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.plot.Marker;
    import org.jfree.chart.plot.ValueMarker;
    import org.jfree.chart.plot.XYPlot;
    import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
    import org.jfree.chart.renderer.xy.XYItemRenderer;
    //import org.jfree.data.time.Hour;
    //import org.jfree.data.time.Minute;
    import org.jfree.data.time.Minute;
    //import org.jfree.data.time.RegularTimePeriod;
    import org.jfree.data.time.Hour;
    import org.jfree.data.time.Second;
    import org.jfree.data.time.TimeSeries;
    import org.jfree.data.time.TimeSeriesCollection;
    import org.jfree.ui.ApplicationFrame;
    import org.jfree.ui.RefineryUtilities;
     
    import com.sun.org.apache.xpath.internal.operations.Minus;
     
    public class TimeSeriesDemoTest extends ApplicationFrame {
     
     
    	private static final long serialVersionUID = 1L;
     
     
        public TimeSeriesDemoTest(final String title) throws SQLException {
     
        	super(title);
        	String url = "jdbc:mysql://localhost:3306/newdata";
        	String username = "root";
        	String password = "root" ;
        	try{
            		Class.forName("com.mysql.jdbc.Driver");
            	}
            	catch (ClassNotFoundException e){
            		System.out.println("Pilote non retrouvé");
            	}
     
            	Statement stmt = null;
    			try {
     
         	       Connection con = DriverManager.getConnection(url,username,password);
         	       stmt = con.createStatement();
         	    }
         	    catch (SQLException sqle){System.out.println("Erreur de requete");}	
     
         	    ResultSet rs = (ResultSet) stmt.executeQuery("select heure,ftp from ftptable order by heure ;");	
     
     
     
     
     
            final TimeSeries series = new TimeSeries("Minute", Minute.class);
     
            while(rs.next()){
     
               	Timestamp v1 = rs.getTimestamp("heure");
     	    	double v2=rs.getDouble("ftp");
     
     	    	series.addOrUpdate( new Second(v1), v2);
     
     	    }
     	    rs.close();
     
     
            final TimeSeriesCollection dataset = new TimeSeriesCollection(series);
            dataset.addSeries(series);
     
     
            dataset.setDomainIsPointsInTime(true);
     
     
            // create a title with Unicode characters (currency symbols in this case)...
            final String chartTitle = "Evolution du transfert Ftp";
            final JFreeChart chart = ChartFactory.createTimeSeriesChart(
                chartTitle,
                "Time", 
                "Débit en Ko/s",
                dataset,
                true,
                true,
                false
            );
     
            final XYPlot plot = chart.getXYPlot();
      //      plot.setInsets(new Insets(0, 0, 0, 20));
            final Marker marker = new ValueMarker(0.0);
            marker.setPaint(Color.blue);
            marker.setAlpha(0.8f);
            plot.addRangeMarker(marker);
            plot.setBackgroundPaint(null);
     
            final XYItemRenderer renderer = plot.getRenderer();
            if (renderer instanceof StandardXYItemRenderer) {
                final StandardXYItemRenderer r = (StandardXYItemRenderer) renderer;
                //r.setPlotShapes(true);
                r.setShapesFilled(true);
            }
            final ChartPanel chartPanel = new ChartPanel(chart);
            chartPanel.setPreferredSize(new java.awt.Dimension(700, 400));
            chartPanel.setMouseZoomable(true, false);
            setContentPane(chartPanel);
     
        }
     
        public void tracer () throws SQLException {
     
            final TimeSeriesDemoTest demo = new TimeSeriesDemoTest("Ftp ");
            demo.pack();
            RefineryUtilities.centerFrameOnScreen(demo);
            demo.setVisible(true);
     
        }
     
    }
    Servlet :je ne suis pas sur d'ailleurs quelle fonctionne a 100%
    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
     
    package metier;
     
    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 javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    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 tracage extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
     
      /**
         * 
         */
        private static final long serialVersionUID = 1L;
     
        ServletOutputStream outb;
        Connection connection;
        Statement statmt;
        ResultSet rs;
        String url = "jdbc:mysql://localhost:3306/newdata;";
        String username = "root";
        String password = "root" ;
        String driver ="com.mysql.jdbc.Driver";
     
        //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 doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
     
     
        outb = res.getOutputStream();
     
     
        String requete = "select heure,ftp from ftptable order by heure ;";
     
        final TimeSeries series = new TimeSeries("Minute", Minute.class);
     
        try {
            statmt = connection.createStatement();
            rs = statmt.executeQuery(requete);
     
            while(rs.next()){
     
                Timestamp v1 = rs.getTimestamp("heure");
                double v2=rs.getDouble("ftp");
                series.addOrUpdate( new Minute(v1), v2);
            } 
            rs.close();
        }
        catch (SQLException sqle){System.out.println("Erreur de requete");}
     
        final TimeSeriesCollection dataset = new TimeSeriesCollection(series);
        dataset.addSeries(series);
        final String chartTitle = "Evolution du transfert Ftp";
        final JFreeChart chart = ChartFactory.createTimeSeriesChart(
                chartTitle,
                "Time", 
                "Débit en Ko/s",
                dataset,
                true,
                true,
                false
            );
     
        OutputStream out = res.getOutputStream(); 
        res.setContentType("image/png"); 
        ChartUtilities.writeChartAsPNG(out, chart, 600, 500);
     
      }
     
      //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");}
     
        }
     
    }
    Partie JSP pour l'affichage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <div class="entry">
    			    <img src="metier/tracage"/>
    				</div>

  2. #2
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    au final ton image tu enregistres ton image sur le disque ? ou tu veux juste la renvoyer au navigateur ?

  3. #3
    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
    Non je veux juste la renvoyer au naviguateur, desolé si mon code servlet est un peu desagreable a voir, mais je suis debutant dans els servlet , j'ai fait le tour du forum pour faire une chose pareille

  4. #4
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    regarde du côté de la classe ImageIO avec la méthode createImageOutputStream et tu trouveras facilement sur le net comment renvoyer un fichier une image au navigateur

    Sinon autre solution tu écris ton image dans un fichier et tu envois à ta JSP le chemin du fichier

  5. #5
    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
    Citation Envoyé par isma4 Voir le message
    regarde du côté de la classe ImageIO avec la méthode createImageOutputStream et tu trouveras facilement sur le net comment renvoyer un fichier une image au navigateur

    Sinon autre solution tu écris ton image dans un fichier et tu envois à ta JSP le chemin du fichier
    J'opte plutot pour la 2eme solutin j'ai ajouté ce bout de code mais l'image ne s'est pas crée comment lancer la servlet en JSP !! ?? :

    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
     
     ChartFrame frame = new ChartFrame("First", chart);
        frame.pack();
        frame.setVisible(true);
        BufferedImage myImage = new BufferedImage(600, 300,BufferedImage.TYPE_INT_RGB);
        Graphics2D graph = myImage.createGraphics();
        frame.getChartPanel().paint(graph);
        try {
            OutputStream out = new FileOutputStream("ftp");
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            encoder.encode(myImage);
            out.close();
     
          } catch (Exception e) {
     
          }
    mais le problème c'est que ma courbe prend ses valeurs d'une base de donnée d'une facon continue (chaque 20 min elle ajoute une valeurs)
    je pense que si je l'affiche en tant qu'image simple, je ne pourrai plus alors etre a jour (quand il y'a un nouveau point dans ma base)

  6. #6
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Un des problèmes est que tu écris ton code métier dans ta servlet.
    Tu devrais créer une classe métier qui va créer ton image à partir des infos de ta base de données.
    Disons que tu appelles cette classe ChartService.Cette classe va te construire tes images et te les enregistrer. Elle va bien sûr renvoyer un Objet qui va t'indiquer où se trouve ton fichier.

    Ensuite tu as ta servlet ChartServlet qui va appeler ta classe ChartService et qui va renvoyer le chemin de l'image à afficher dans ta JSP

    Et enfin pour le rafraichissement, c'est juste une idée comme ça mais tu peux créer un thread qui se réveille toutes les 20 minutes pour mettre à jour tes images.

    Mais je te conseille d'abord de créer ta classe ChartService avec les méthodes qui vont bien et après on verra ...

  7. #7
    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
    Bon voila ma classe qui fait le travail

    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
     
     
    public class TimeSeriesDemoTest extends ApplicationFrame {
     
     
    	private static final long serialVersionUID = 1L;
     
     
        public TimeSeriesDemoTest(final String title) throws SQLException {
     
        	super(title);
        	String url = "jdbc:mysql://localhost:3306/newdata";
        	String username = "root";
        	String password = "root" ;
        	try{
            		Class.forName("com.mysql.jdbc.Driver");
            	}
            	catch (ClassNotFoundException e){
            		System.out.println("Pilote non retrouvé");
            	}
     
            	Statement stmt = null;
    			try {
     
         	       Connection con = DriverManager.getConnection(url,username,password);
         	       stmt = con.createStatement();
         	    }
         	    catch (SQLException sqle){System.out.println("Erreur de requete");}	
     
         	    ResultSet rs = (ResultSet) stmt.executeQuery("select heure,ftp from ftptable order by heure ;");	
     
     
     
     
     
            final TimeSeries series = new TimeSeries("Minute", Minute.class);
     
            while(rs.next()){
     
               	Timestamp v1 = rs.getTimestamp("heure");
     	    	double v2=rs.getDouble("ftp");
     
     	    	series.addOrUpdate( new Second(v1), v2);
     
     	    }
     	    rs.close();
     
     
            final TimeSeriesCollection dataset = new TimeSeriesCollection(series);
            dataset.addSeries(series);
     
     
            dataset.setDomainIsPointsInTime(true);
     
     
            // create a title with Unicode characters (currency symbols in this case)...
            final String chartTitle = "Evolution du transfert Ftp";
            final JFreeChart chart = ChartFactory.createTimeSeriesChart(
                chartTitle,
                "Time", 
                "Débit en Ko/s",
                dataset,
                true,
                true,
                false
            );
            try {
    			ChartUtilities.saveChartAsJPEG(new File("ftp.jpg"),chart,600,300);
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
            final XYPlot plot = chart.getXYPlot();
      //      plot.setInsets(new Insets(0, 0, 0, 20));
            final Marker marker = new ValueMarker(0.0);
            marker.setPaint(Color.blue);
            marker.setAlpha(0.8f);
            plot.addRangeMarker(marker);
            plot.setBackgroundPaint(null);
     
            final XYItemRenderer renderer = plot.getRenderer();
            if (renderer instanceof StandardXYItemRenderer) {
                final StandardXYItemRenderer r = (StandardXYItemRenderer) renderer;
                //r.setPlotShapes(true);
                r.setShapesFilled(true);
            }
            final ChartPanel chartPanel = new ChartPanel(chart);
            chartPanel.setPreferredSize(new java.awt.Dimension(700, 400));
            chartPanel.setMouseZoomable(true, false);
            setContentPane(chartPanel);
     
        }
     
       public TimeSeriesDemoTest tracer ()  throws SQLException {
     
            final TimeSeriesDemoTest demo = new TimeSeriesDemoTest("Ftp ");
            demo.pack();
            RefineryUtilities.centerFrameOnScreen(demo);
            demo.setVisible(true);
            return(demo);
     
     
        }
     
    }
    ma servlet ainsi faite :
    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
     
     
    public class ServletChar extends HttpServlet {
    	public void doGet(	HttpServletRequest request, 
    			HttpServletResponse response)
    			throws IOException, ServletException{
     
    		response.setContentType("image/JPEG");
    		PrintWriter out = response.getWriter();
    		ServletContext context = getServletContext();
    		try {
    			context.setAttribute("obj", new marouene.TimeSeriesDemoTest("Ftp"));
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		out.println(context.getAttribute("obj"));
     
     
     
    	}
    }
    j'ai essayé avec ca, quand je test ma servlet avec :http://localhost:8080/test/Servletchar
    rien ne s'affiche dans ma page web, si j'arrive a afficher mon image ainsi, je peux alors mettre dans mon code une balise de type <img src="metier.Servletchar>

    Non ?

  8. #8
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Je te conseille deux choses avant de continuer plus loin

    1 ) tu externalises ton appel à ta base de données dans une classe DAO (principe de séparation des couches)

    2) ne met pas ton code métier dans le constructeur de ta classe TimeSeriesDemoTest => met le dans une méthode dédiée.

    3) A partir de ta servlet tu appelles la méthode dédiée (cf point 2) qui en retour te renvoi par exemple un string qui contient le chemin de l'image

    4) dans ta servlet tu mets en request le retour de cette méthode

    5) dans ta servlet et en particulier dans ta l'attribut src de ta balise image tu met le chemin de l'image qui est dans ta request

    et ça devrait être bon

  9. #9
    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é de faire ce que tu m'a dis ; voila

    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
     
    package marouene;
     
    import java.awt.Color;
    import java.io.File;
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.Date;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.Timestamp;
     
    import metier.connexionBD;
     
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.ChartUtilities;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.plot.Marker;
    import org.jfree.chart.plot.ValueMarker;
    import org.jfree.chart.plot.XYPlot;
    import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
    import org.jfree.chart.renderer.xy.XYItemRenderer;
    //import org.jfree.data.time.Hour;
    //import org.jfree.data.time.Minute;
    import org.jfree.data.time.Minute;
    //import org.jfree.data.time.RegularTimePeriod;
    import org.jfree.data.time.Hour;
    import org.jfree.data.time.Second;
    import org.jfree.data.time.TimeSeries;
    import org.jfree.data.time.TimeSeriesCollection;
    import org.jfree.ui.ApplicationFrame;
    import org.jfree.ui.RefineryUtilities;
     
    import com.sun.org.apache.xpath.internal.operations.Minus;
     
    public class TimeSeriesDemoTest extends ApplicationFrame {
    	private static final long serialVersionUID = 1L;
     
     
    	public TimeSeriesDemoTest(String title) {
    		super(title);
     
    	}
     
        public String tracercourbe (String debit,String Hour,String table) throws SQLException {
        	connexionBD cone = new connexionBD();
    		ResultSet rs = cone.execute("select "+Hour+","+debit+" from "+table+" order by heure ;");
            final TimeSeries series = new TimeSeries("Minute", Minute.class);
     
            while(rs.next()){
     
               	Timestamp v1 = rs.getTimestamp("heure");
     	    	double v2=rs.getDouble("ftp");
     
     	    	series.addOrUpdate( new Second(v1), v2);
     
     	    }
     	    rs.close();
     
     
            final TimeSeriesCollection dataset = new TimeSeriesCollection(series);
            dataset.addSeries(series);
            dataset.setDomainIsPointsInTime(true);
            final String chartTitle = "Evolution du transfert Ftp";
            final JFreeChart chart = ChartFactory.createTimeSeriesChart(
                chartTitle,
                "Time", 
                "Débit en Ko/s",
                dataset,
                true,
                true,
                false
            );
            try {
    			ChartUtilities.saveChartAsJPEG(new File("ftp.jpg"),chart,600,300);
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
            final XYPlot plot = chart.getXYPlot();
      //      plot.setInsets(new Insets(0, 0, 0, 20));
            final Marker marker = new ValueMarker(0.0);
            marker.setPaint(Color.blue);
            marker.setAlpha(0.8f);
            plot.addRangeMarker(marker);
            plot.setBackgroundPaint(null);
     
            final XYItemRenderer renderer = plot.getRenderer();
            if (renderer instanceof StandardXYItemRenderer) {
                final StandardXYItemRenderer r = (StandardXYItemRenderer) renderer;
                //r.setPlotShapes(true);
                r.setShapesFilled(true);
            }
            final ChartPanel chartPanel = new ChartPanel(chart);
            chartPanel.setPreferredSize(new java.awt.Dimension(700, 400));
            chartPanel.setMouseZoomable(true, false);
            setContentPane(chartPanel);
    		return "ftp.jpg";
     
        }
     
        public TimeSeriesDemoTest tracer ()  throws SQLException {
     
            final TimeSeriesDemoTest demo = new TimeSeriesDemoTest("");
            demo.pack();
            RefineryUtilities.centerFrameOnScreen(demo);
            demo.setVisible(true);
            return(demo);
     
     
        }
     
    }
    j'ai externalisé la connexion a la base de donnée, et j'ai met le code qui trace la courbe dans une méthode a part

  10. #10
    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
    voila desormais ma 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
     
    package metier;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.SQLException;
    import java.util.Enumeration;
     
    import javax.imageio.ImageIO;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import com.sun.corba.se.impl.orbutil.graph.Graph;
     
    import marouene.TimeSeriesDemoTest;
     
    public class autre extends HttpServlet {
    	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
     
    		response.setContentType("image/jpg");
    		PrintWriter out = response.getWriter();
    		Graphics g = null;
    		ServletContext context = getServletContext();
    		TimeSeriesDemoTest ftp = new marouene.TimeSeriesDemoTest("Ftp");
    		try {
    			String image1 = ftp.tracercourbe("ftp","heure","ftptable");
    			BufferedImage image = ImageIO.read(new File(image1));
    			g.drawImage(image,0,0,null);
     
     
    			context.setAttribute("obj", image);
    			out.println(context.getAttribute("obj"));
     
    		} catch (SQLException e1) {
    			// TODO Auto-generated catch block
    			e1.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);
    }
     
     
     
     
     
     
     
     
    	}
    mais ceci ne marche pas et ne retourne rien
    mais comme jt'ai di, il n'ya pas une possibilité que ma servlet retourne une image ? comme ca dans ma JSP je fais appel a la servlet dans ma balise src et comme ca je suis sur que lorsque je rafraichis ma page j'aurai un dessin a jour

    merci

  11. #11
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    il ne te reste plus grand chose à faire et tu n'as pas suivi ce que je t'ai mis dans les 2 derniers points

    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
     
     
    package metier;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.SQLException;
    import java.util.Enumeration;
     
    import javax.imageio.ImageIO;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import com.sun.corba.se.impl.orbutil.graph.Graph;
     
    import marouene.TimeSeriesDemoTest;
     
    public class autre extends HttpServlet {
    	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
     
    		response.setContentType("image/jpg");
    		PrintWriter out = response.getWriter();
    		Graphics g = null;
    		ServletContext context = getServletContext();
    		TimeSeriesDemoTest ftp = new marouene.TimeSeriesDemoTest("Ftp");
    		try {
    			String image1 = ftp.tracercourbe("ftp","heure","ftptable");
    			BufferedImage image = ImageIO.read(new File(image1));
    			g.drawImage(image,0,0,null);
     
    			request.setAttribute("pathPicture",image1);
    			context.setAttribute("obj", image);
    			out.println(context.getAttribute("obj"));
     
    		} catch (SQLException e1) {
    			// TODO Auto-generated catch block
    			e1.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);
    }
     
     
     
     
     
     
     
     
    	}
    et dans ta JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    <div class="entry">
    			    <img src="<%=(String)request.getAttribute("pathPicture")%>"/>
    				</div>

    j'ai pas regarder tout ton code mais ça devrait marcher

    Autre question importante : est-ce que tu as vérifier que l'image est bien crée dans le répertoire que tu veux ?

    N.B : Si jamais tu déploies ton application sur un serveur unix n'oublies pas de vérifier que l'utilisateur qui exécute le process Tomcat sous lequel est déployée ton appli a le droit d'écriture sur le répertoire où tu vas écrire ton image.

  12. #12
    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é cette version mais ca ne s'affiche pas
    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
     
     
    public class autre extends HttpServlet {
    	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
     
    		response.setContentType("image/jpg");
    		PrintWriter out = response.getWriter();
    		Graphics g = null;
    		ServletContext context = getServletContext();
    		TimeSeriesDemoTest ftp = new marouene.TimeSeriesDemoTest("Ftp");
    		try {
    			String image1 = ftp.tracercourbe("ftp","heure","ftptable");
    			request.setAttribute("C:\\Users\\Marouene\\Workspaces\\MyEclipse for Spring 8.6\\Pfe\\ftp.jpg",image1);
    		} catch (SQLException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
     
    	}
     
    	 protected void doGet(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
     processRequest(request, response);
    }
     
    	}
    avec code JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <div class="entry">
    			    <img src="<%=(String)request.getAttribute("C:\\Users\\Marouene\\Workspaces\\MyEclipse for Spring 8.6\\Pfe\\ftp.jpg")%>"/>
    				</div>

  13. #13
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Met ce que je t'ai dis et ça devrait marcher
    pourquoi tu te compliques la vie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    try {
    			String image1 = ftp.tracercourbe("ftp","heure","ftptable");
    			request.setAttribute("pathPicture","C:\\Users\\Marouene\\Workspaces\\MyEclipse for Spring 8.6\\Pfe\\ftp.jpg");
    		} catch (SQLException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
    du coup ta variable image1 ne sert à rien mais bon .... c'est une autre histoire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    <div class="entry">
    			    <img src="<%=(String)request.getAttribute("pathPicture")%>"/>
    				</div>
    tu n'as toujours pas répondu à ma question :est-ce que ton fichier est bien crée ?

    Et enfin à quoi ça sert de mettre en retour de ta méthode tracercourbe le nom de ton fichier si tu sais déjà où il est ?
    Est-ce que le chemin et le nom de ton fichier seront toujours les mêmes ?

  14. #14
    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
    Citation Envoyé par isma4 Voir le message
    Met ce que je t'ai dis et ça devrait marcher
    pourquoi tu te compliques la vie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    try {
    			String image1 = ftp.tracercourbe("ftp","heure","ftptable");
    			request.setAttribute("pathPicture","C:\\Users\\Marouene\\Workspaces\\MyEclipse for Spring 8.6\\Pfe\\ftp.jpg");
    		} catch (SQLException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
    du coup ta variable image1 ne sert à rien mais bon .... c'est une autre histoire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    <div class="entry">
    			    <img src="<%=(String)request.getAttribute("pathPicture")%>"/>
    				</div>
    tu n'as toujours pas répondu à ma question :est-ce que ton fichier est bien crée ?

    Et enfin à quoi ça sert de mettre en retour de ta méthode tracercourbe le nom de ton fichier si tu ne sais pas où il est ?
    Est-ce que le chemin et le nom de ton fichier seront toujours les mêmes ?
    oui le fichier est bien crée
    non le chemin et le nom n'est pas le meme ><

    Sinon j'ai exactement essayé le meme code que tu m'as donné, et l'image ne s'affiche pas encore

  15. #15
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Bon j'ai regardé d'un peu plus prés ton code et voici quelques remarques ::

    1) Par convention en Java le nom des classes commencent par une majuscule (voir classe autre et connexionBD)

    2) dans la méthode traceCourbe :tu dois externaliser tout le code ci-dessous dans une méthode de la classe ConnexionBD. Cette méthode te retournera ton objet series.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    connexionBD cone = new connexionBD();
    		ResultSet rs = cone.execute("select "+Hour+","+debit+" from "+table+" order by heure ;");
            final TimeSeries series = new TimeSeries("Minute", Minute.class);
     
            while(rs.next()){
     
               	Timestamp v1 = rs.getTimestamp("heure");
     	    	double v2=rs.getDouble("ftp");
     
     	    	series.addOrUpdate( new Second(v1), v2);
     
     	    }
     	    rs.close();
    3) toujours dans la méthode traceCourbe je mettrais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    File image = new File("c:\\ftp.jpg");
      try {
    			ChartUtilities.saveChartAsJPEG(image,chart,600,300);
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
    ///tu gères mal tes exceptions .Qu'est ce qu'il se passe si ta méthode ChartUtilities.saveChartAsJPE plante
     
    //au final 
     
    return image.getPath();

    4) dans ta 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
     
    String imagePath = "";
    try {
    			 imagePath = ftp.tracercourbe("ftp","heure","ftptable");
     
    		} catch (SQLException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
     
    //si tu as une exception tu fais quoi ????. Tu as très mal géré 
    //tes exceptions.
     
    request.setAttribute("pathPicture",imagePath);
    5) dans ta JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <div class="entry">
    			    <img src="<%=(String)request.getAttribute("pathPicture")%>"/>
    				</div>

    6) dans quel répertoire est enregistré ton image ?

    7)Est-ce que tu as vérifié si tu avais une erreur ?

  16. #16
    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
    voila pour la partie BD :
    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
     
    public TimeSeries dessiner(String Hour,String debit, String table)
    {
    	connexionBD cone = new connexionBD();
    ResultSet rs = cone.execute("select "+Hour+","+debit+" from "+table+" order by heure ;");
    final TimeSeries series = new TimeSeries("Minute", Minute.class);
    try {
    while(rs.next()){
     
       	Timestamp v1;
     
    		v1 = rs.getTimestamp("heure");
     
     	double v2=rs.getDouble("ftp");
     
     	series.addOrUpdate( new Second(v1), v2);
     
     }
     rs.close();
    } catch (SQLException e) {
    	// TODO Auto-generated catch block
    	e.printStackTrace();
    }
    return series;
    	}
    c'est fait...
    voici la version finale de tracecourbe
    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
     
     public String tracercourbe (String Hour, String debit, String table ) throws SQLException {
        	connexionBD con = new connexionBD();
            TimeSeries series = con.dessiner("heure", "ftp"," ftptable");
            final TimeSeriesCollection dataset = new TimeSeriesCollection(series);
            dataset.addSeries(series);
            dataset.setDomainIsPointsInTime(true);
            final String chartTitle = "Evolution du transfert Ftp";
            final JFreeChart chart = ChartFactory.createTimeSeriesChart(
                chartTitle,
                "Time", 
                "Débit en Ko/s",
                dataset,
                true,
                true,
                false
            );
            File image = new File("c:\\ftp.jpg");
            try {
          			ChartUtilities.saveChartAsJPEG(image,chart,600,300);
          		} catch (IOException e) {
          			// TODO Auto-generated catch block
          			e.printStackTrace();
          		}
     
          ///tu gères mal tes exceptions .Qu'est ce qu'il se passe si ta méthode ChartUtilities.saveChartAsJPE plante
     
          //au final 
     
     
     
            final XYPlot plot = chart.getXYPlot();
      //      plot.setInsets(new Insets(0, 0, 0, 20));
            final Marker marker = new ValueMarker(0.0);
            marker.setPaint(Color.blue);
            marker.setAlpha(0.8f);
            plot.addRangeMarker(marker);
            plot.setBackgroundPaint(null);
     
            final XYItemRenderer renderer = plot.getRenderer();
            if (renderer instanceof StandardXYItemRenderer) {
                final StandardXYItemRenderer r = (StandardXYItemRenderer) renderer;
                //r.setPlotShapes(true);
                r.setShapesFilled(true);
            }
            final ChartPanel chartPanel = new ChartPanel(chart);
            chartPanel.setPreferredSize(new java.awt.Dimension(700, 400));
            chartPanel.setMouseZoomable(true, false);
            setContentPane(chartPanel);
            return image.getPath();
     
        }
    et ma 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
     
     
    public class Autre extends HttpServlet {
    	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
     
    		response.setContentType("image/jpg");
    		TimeSeriesDemoTest ftp = new marouene.TimeSeriesDemoTest("Ftp");
    		String imagePath = "";
    		try {
    					 imagePath = ftp.tracercourbe("ftp","heure","ftptable");
     
    				} catch (SQLException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				}
     
    		//si tu as une exception tu fais quoi ????. Tu as très mal géré 
    		//tes exceptions.
     
    		request.setAttribute("pathPicture",imagePath);
     
     
    	}
     
    	 protected void doGet(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
     processRequest(request, response);
    }
     
    	}
    quand je lance ma classe TimeSeries pour la tester j'ai un affichage c'est bon....quand au fichier ftp.jpg, je ne le trouve nul part

  17. #17
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    est-ce que tu as une trace d'erreur ?
    sinon est-ce que tu as testé ta servlet directement ?
    et tu dis que ton fichier n'est plus crée ?
    supprimes l'ancien et refait ton test stp ?

  18. #18
    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
    Citation Envoyé par isma4 Voir le message
    est-ce que tu as une trace d'erreur ?
    sinon est-ce que tu as testé ta servlet directement ?
    et tu dis que ton fichier n'est plus crée ?
    supprimes l'ancien et refait ton test stp ?
    Pour l'affichage c'est bon ma fonction marche mnt, le fichier aussi est sauvegardé dans le dossier de mon projet

    Bon ma servlet quand je la lance http://localhost:8080/Pfe/Autre ne fonctionne pas et me genere http://localhost:8080/Pfe/Autre, d'ailleurs l'affichage sur jsp ne marche pas nn plu

    voici ma 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
     
    package metier;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.sql.Date;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Timestamp;
    import java.util.Enumeration;
     
    import javax.imageio.ImageIO;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    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.Second;
    import org.jfree.data.time.TimeSeries;
    import org.jfree.data.time.TimeSeriesCollection;
     
    import com.sun.corba.se.impl.orbutil.graph.Graph;
     
    import marouene.TimeSeriesDemoTest;
     
     
    public class Autre extends HttpServlet {
    	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
     
    		response.setContentType("image/jpg");
    		TimeSeriesDemoTest ftp = new marouene.TimeSeriesDemoTest("Ftp");
    		String imagePath = "";
    		try {
    					 imagePath = ftp.tracercourbe("ftp","heure","ftptable");
     
    				} catch (SQLException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				}
     
    		//si tu as une exception tu fais quoi ????. Tu as très mal géré 
    		//tes exceptions.
     
    		request.setAttribute("pathPicture",imagePath);
     
     
    	}
     
    	 protected void doGet(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
     processRequest(request, response);
    }
     
    	}

  19. #19
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Citation Envoyé par marouene_ Voir le message
    Pour l'affichage c'est bon ma fonction marche mnt, le fichier aussi est sauvegardé dans le dossier de mon projet

    c'est normal alors que l'image de ta JSP ne s'affiche pas si tu dis que l'image est sauvegardée dans ton le dossier de ton projet !
    Pourquoi elle est dans ton dossier alors que on a crée une instance de la classe fichier sous le répertoire C:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     File image = new File("c:\\ftp.jpg");
    Qu'est ce que fait exactement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ChartUtilities.saveChartAsJPEG(image,chart,600,300);
    à part sauvegarder ?

  20. #20
    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
    Rien juste ell enregistre le Chart sous les dimensions cité...

    sinon dans la partie JSP pour ce code la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <img src="<%=(String)request.getAttribute("pathPicture")%>"/>
    je ne dois pas specifier ma servlet ou un truc pareil?

    car pour le moment quand je met <img src="image/ftp.jpg" width="599" height="320">
    sachant que j'ai changé ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ChartUtilities.saveChartAsJPEG(new File("WebRoot\\image\\ftp.jpg"),chart,600,300);
    J'ai enfin un affichage sur ma JSP, mais quand j'ajoute des données dans ma base de données, et quand je rafraichi ma page web, je n'ai plus de courbe affiché ><

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

Discussions similaires

  1. Intégrer un graphe JFreeChart dans une JSP avec Struts 2
    Par eiketchi-san dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 24/08/2012, 13h35
  2. Affichage d'objets complexe dans une JSP
    Par seyar666 dans le forum Taglibs
    Réponses: 2
    Dernier message: 12/06/2012, 11h56
  3. Affichage liste de String dans une jsp
    Par Annsen dans le forum Struts 1
    Réponses: 1
    Dernier message: 25/10/2011, 15h43
  4. Différence d'affichage des objets null dans une JSP
    Par marinew dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 26/08/2008, 09h03
  5. Affichage Blob (objet binaire) dans une jsp
    Par kokumbo dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/02/2008, 16h59

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