본문 바로가기

JFreeChart/Chart in Servlet

Servlet 에서 JFreeChart 이용하기


import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.jfree.chart.*;
import org.jfree.data.category.*;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.xy.*;
import org.jfree.data.*;
import org.jfree.chart.renderer.category.*;
import org.jfree.chart.plot.*;
import java.awt.*;

public class ChartServlet extends HttpServlet {

    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws IOException, ServletException
    {
        response.setContentType("image/png");
        ServletOutputStream sos = response.getOutputStream();
        JFreeChart chart = getBarChart();
        ChartUtilities.writeChartAsPNG(sos, chart, 400, 400);
    }

    public JFreeChart getBarChart() {
       DefaultCategoryDataset dataset = new DefaultCategoryDataset();
       dataset.setValue(2, "Marks", "Rahul");
       dataset.setValue(7, "Marks", "Vinod");
       dataset.setValue(4, "Marks", "Deepak");
       dataset.setValue(9, "Marks", "Prashant");
       dataset.setValue(6, "Marks", "Chandan");
       JFreeChart chart = ChartFactory.createBarChart (
  "BarChart using JFreeChart","Student", "Marks", dataset,
  PlotOrientation.VERTICAL, false,true, false);
       chart.setBackgroundPaint(Color.yellow);
       chart.getTitle().setPaint(Color.blue);
       CategoryPlot p = chart.getCategoryPlot();
       p.setRangeGridlinePaint(Color.red);
       return chart;
 }
}

web.xml


    <servlet>
        <servlet-name>ChartServlet</servlet-name>
        <servlet-class>ChartServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>ChartServlet</servlet-name>
        <url-pattern>/ChartServlet</url-pattern>
    </servlet-mapping>
</web-app>

chartviewer.html

<html>
<head><title>JFreeChart with JSP example</title></head>
<body>
<center>
HTML에서 ChartServlet을 사용하는 예제
<hr width="50%">
<img src="/ChartServlet">
</center>
</body>
</html>