Afficher une chart d'une servlet dans une page JSP

orchideor Messages postés 19 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 9 septembre 2010 - 2 sept. 2010 à 12:55
cs_mina24 Messages postés 21 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 8 février 2012 - 9 sept. 2010 à 01:20
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

cs_mina24 Messages postés 21 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 8 février 2012
9 sept. 2010 à 00:41
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
}

}
0
cs_mina24 Messages postés 21 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 8 février 2012
9 sept. 2010 à 00:45
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> 
0
orchideor Messages postés 19 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 9 septembre 2010
9 sept. 2010 à 01:00
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.
0
cs_mina24 Messages postés 21 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 8 février 2012
9 sept. 2010 à 01:14
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
orchideor Messages postés 19 Date d'inscription vendredi 6 novembre 2009 Statut Membre Dernière intervention 9 septembre 2010
9 sept. 2010 à 01:17
Ce n'est pas grave .

Merci beaucoup.
0
cs_mina24 Messages postés 21 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 8 février 2012
9 sept. 2010 à 01:20
je vous en prie.
0
Rejoignez-nous