Code: Select all
package com.dunlopconsult.clayforeman.servlets;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.Font;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.renderer.CategoryItemRenderer;
import org.jfree.chart.renderer.StatisticalBarRenderer;
import org.jfree.data.DefaultCategoryDataset;
import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
import org.jfree.data.statistics.StatisticalCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class CF_ChartGeneratorServlet extends HttpServlet {
/**
* Default constructor.
*/
public CF_ChartGeneratorServlet() {
// nothing required
}
/**
* Process a GET request.
*
* @param request the request.
* @param response the response.
*
* @throws ServletException if there is a servlet related problem.
* @throws IOException if there is an I/O problem.
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/png");
OutputStream out = response.getOutputStream();
StatisticalCategoryDataset dataset = createDataset();
CategoryAxis xAxis = new CategoryAxis("Type");
xAxis.setLowerMargin(0.01d); // percentage of space before first bar
xAxis.setUpperMargin(0.01d); // percentage of space after last bar
xAxis.setCategoryMargin(0.05d); // percentage of space between categories
ValueAxis yAxis = new NumberAxis("Value");
// define the plot
CategoryItemRenderer renderer = new StatisticalBarRenderer();
CategoryPlot plot = new CategoryPlot(dataset, xAxis, yAxis, renderer);
JFreeChart chart = new JFreeChart("Statistical Bar Chart Demo",
new Font("Helvetica", Font.BOLD, 14),
plot,
true);
ChartUtilities.writeChartAsPNG(out, chart, 600, 500);
out.close();
}
/**
* Creates a sample dataset.
*
* @return The dataset.
*/
private StatisticalCategoryDataset createDataset() {
final DefaultStatisticalCategoryDataset result = new DefaultStatisticalCategoryDataset();
result.add(32.5, 17.9, "Series 1", "Type 1");
result.add(27.8, 11.4, "Series 1", "Type 2");
result.add(29.3, 14.4, "Series 1", "Type 3");
result.add(37.9, 10.3, "Series 1", "Type 4");
result.add(22.9, 7.9, "Series 2", "Type 1");
result.add(21.8, 18.4, "Series 2", "Type 2");
result.add(19.3, 12.4, "Series 2", "Type 3");
result.add(30.3, 20.7, "Series 2", "Type 4");
result.add(12.5, 10.9, "Series 3", "Type 1");
result.add(24.8, 7.4, "Series 3", "Type 2");
result.add(19.3, 13.4, "Series 3", "Type 3");
result.add(17.1, 10.6, "Series 3", "Type 4");
return result;
}
Code: Select all
img src="http://localhost:8081/com/dunlopconsult/clayforeman/servlets/CF_ChartGeneratorServlet" /
Any ideas?