Ajouter un commentaire

nasix

Hello,

Super j'y suis arrivé.

Avant de présenter mon code qui utilise la librairie JFreeChart, je dirais en quelques mots de quoi s'agit-il.

JFreeChart est une librairie gratuite d'édition de graphique pour la plateforme Java. elle est conçue pour être inclue dans des applications, applets, servlets et JSP.

Elle permet de faire beaucoup de types de graphics, Histogrammes, graphes, camembert, ... etc

Pour l'utiliser, il est préférable de visiter son site officiel pour voir le "Comment installer ? ".

Une fois tout est prêt, vous pouvez tester mon code qui marche à merveil.

Voici donc ma servlet GraphicServlet :

import javax.servlet.*;
import javax.servlet.http.*;

import java.io.*;

import java.awt.*;
import java.awt.image.BufferedImage;

import com.sun.image.codec.jpeg.*;
import java.util.logging.*;

import org.jfree.chart.*;
import org.jfree.data.general.DefaultPieDataset;

public class GraphicServlet extends HttpServlet {

    public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

        DefaultPieDataset data = new DefaultPieDataset();
        data.setValue("Première Catégorie", 43.2);
        data.setValue("Deuxième Caégorie", 27.9);
        data.setValue("Troisième Caégorie", 79.5);
        // create a chart...
        JFreeChart chart = ChartFactory.createPieChart(
                "Exemple de graphe en Camembert",
                data,
                true, // legend?
                true, // tooltips?
                false // URLs?
                );
        // create and display a frame...
        ChartFrame frame = new ChartFrame("First", chart);
        frame.pack();
        
        res.setContentType("image/jpeg");
        res.setHeader("Content-disposition", "inline; filename=circle.jpg");
        
        this.genereEtAffichreJPEG(frame.getChartPanel(), res.getOutputStream());

    }

    public void genereEtAffichreJPEG(Component myComponent, OutputStream out) {
        try {
            Dimension size = myComponent.getSize();
            BufferedImage myImage = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
            Graphics2D graph = myImage.createGraphics();
            myComponent.paint(graph);
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            encoder.encode(myImage);
            out.close();
        } catch (IOException ex) {
            Logger.getLogger(GraphicServlet.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ImageFormatException ex) {
            Logger.getLogger(GraphicServlet.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Cette servlet m'affiche un graphic dans le navigateur.

Je peux donc intégrer ce graphic dans une page JSP via la balise img comme suit :

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Exemple de graphic</title>
    </head>
    <body>
        <h2>Ceci est un test de graphic en JSP !!</h2>
        
        <img src="http://Serveur:port/WebApplication/GraphicServlet" />
    </body>
</html>

Merci Niroken.

Bonne chance à tout le monde.

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 EEEE   SSS   BBBB   PPPP   III 
E S B B P P I
EEE SSS BBBB PPPP I
E S B B P I
EEEE SSSS BBBB P III