Afficher une chart d'une servlet dans une page JSP

Signaler
Messages postés
19
Date d'inscription
vendredi 6 novembre 2009
Statut
Membre
Dernière intervention
9 septembre 2010
-
cs_mina24
Messages postés
21
Date d'inscription
mercredi 11 novembre 2009
Statut
Membre
Dernière intervention
8 février 2012
-
Salut tout le monde ,

Je voudrais pouvoir afficher les charts que je génère de ma servlet directement dans la page jsp ,sans devoir les stocker dans mon disque C:\.

S'il vous plait si quelqu'un a une idée ,merci de m'en faire part.

Voilà le code de ma servlet :
package radio;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;


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.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.data.category.DefaultCategoryDataset;


public class Courbe extends HttpServlet {

public Courbe() {

  
// nothing required
}

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
OutputStream out = response.getOutputStream();
final String series1 = "2G";

try {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();

Data T=new Data();
ArrayList DumSCONGNSN=new ArrayList();
ArrayList NumSCONGNSN=new ArrayList();
ArrayList Week=new ArrayList();
ArrayList NumSCONGEr=new ArrayList();
ArrayList DumSCONGEr=new ArrayList();

DumSCONGNSN=T.getDumSCONGNSN();
NumSCONGNSN=T.getnumSCONGNSN();
NumSCONGEr=T.getNumSCONGEr();
DumSCONGEr=T.getSCONGDUMEr();
Week=T.getWeek();
for (int j=0;j<T.getWeek().size();j++)
{int i=j+1;
dataset.addValue(((Float.parseFloat(NumSCONGNSN.get(j).toString())+Float.parseFloat(NumSCONGEr.get(j).toString()))/(Float.parseFloat(DumSCONGNSN.get(j).toString())+Float.parseFloat(DumSCONGEr.get(j).toString()))), series1, Week.get(j).toString());
Float A=(Float.parseFloat(NumSCONGNSN.get(j).toString())+Float.parseFloat(NumSCONGEr.get(j).toString()))/(Float.parseFloat(DumSCONGNSN.get(j).toString())+Float.parseFloat(DumSCONGEr.get(j).toString()));

System.out.println("la valeur du "+i+"ème week est :  "+A);
}

JFreeChart chart = ChartFactory.createBarChart(
"SDCCH_Cong",
"Week",
"Value",
dataset,
PlotOrientation.VERTICAL,
true, true, false
);


response.setContentType("image/png");

ChartUtilities.writeChartAsPNG(out, chart, 400, 300);

ChartUtilities.saveChartAsJPEG(new File ("C:\\St.jpg"),  chart, 400, 300);
System.out.println("saved");

}
catch (Exception e) {
System.err.println(e.toString());
}
finally {
out.close();
}
}
public void init() {
    System.out.println( getServletName() + ": initialised" );
  }
}


Merci beaucoup.

6 réponses

Messages postés
21
Date d'inscription
mercredi 11 novembre 2009
Statut
Membre
Dernière intervention
8 février 2012

bonjour j'espere que ce que je te propose va t'aider vola un exemple comment afficher l'image de jfree chart dans une jsp et qui appele le resultat da la servlet Graphe:
la jsp:
<html>
<head>
<meta http-equiv= "Content-Type" content="text/html; charset=ISO-8859-1">
<title>Graphisme</title>
</head>

Exemple de graphique avec JFreeChart Essai1





</html>

la servlet:

import java.io.IOException;

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.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

/**
* Servlet implementation class histo2
*/
public class Graphe extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public Graphe() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
//response.setContentType("text/html");
//PrintWriter out=response.getWriter();
//out.println("hello

");

DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(120000.0, "aaa", "premier ");
dataset.addValue(550000.0, "aaa", "2 eme");
dataset.addValue(180000.0, "aa", "3eme e");

JFreeChart barChart = ChartFactory.createBarChart("Evolution des ventes", "","Unité vendue", dataset, PlotOrientation.VERTICAL, true, true, false);
ServletOutputStream out = response.getOutputStream();
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, barChart, 400, 300);

}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}

}
Messages postés
21
Date d'inscription
mercredi 11 novembre 2009
Statut
Membre
Dernière intervention
8 février 2012

Alors dans ton cas je suppose il suffit de faire:
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Graphisme</title> 
</head> 
 
Exemple de graphique avec JFreeChart Essai1
 

 

 
</html> 
Messages postés
19
Date d'inscription
vendredi 6 novembre 2009
Statut
Membre
Dernière intervention
9 septembre 2010

Bonjour, merci beaucoup Mina pour ta réponse , en effet ça a marché super bien , juste qu'il m'affiche qu'une seule chart alors que j'en récupère plusieurs !

à chaque fois je fais
ChartUtilities.writeChartAsPNG(out, barChart1, 400, 300);

ChartUtilities.writeChartAsPNG(out, barChart2, 400, 300);
....

Mais je ne sais pas comment je pourrais afficher toutes les charts que j'ai généré .

Une autre question , saurais tu commais utiliser les linechart dans la servlet , j'ai essayé createlinechart mais en vain.


Encore Merci ^pour ta réponse.
Messages postés
21
Date d'inscription
mercredi 11 novembre 2009
Statut
Membre
Dernière intervention
8 février 2012

non je ne sais pas comment recuperer plusieurs graphes!! peut tu devrais faire une boucle pour recuperer?? je ne sais pas exactement

Pour les lineChart non plus tous ce que j'ai utilisé c des histogrammes et camamber .
Je suis desolée pour ça!!!!!
Bon courage
Messages postés
19
Date d'inscription
vendredi 6 novembre 2009
Statut
Membre
Dernière intervention
9 septembre 2010

Ce n'est pas grave .

Merci beaucoup.
Messages postés
21
Date d'inscription
mercredi 11 novembre 2009
Statut
Membre
Dernière intervention
8 février 2012

je vous en prie.