问题
How can i draw a line chart by using Servlets and rendered Image? I wrote a servlet and create a chart.but i don't know how to display it on my jsp page.
my servlet code:
public class GraphGen extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
genGraph(req, resp);
}
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
genGraph(req, resp);
}
@SuppressWarnings("deprecation")
public void genGraph(HttpServletRequest req, HttpServletResponse resp) {
try {
OutputStream out = resp.getOutputStream();
// Create a simple Bar chart
System.out.println("Setting dataset values");
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.setValue(30, "Girls","SCIENCE CLASS");
dataset.setValue(30, "Boys","SCIENCE CLASS");
dataset.setValue(10, "Girls","ECONOMICS CLASS");
dataset.setValue(50, "Boys","ECONOMICS CLASS");
dataset.setValue(5, "Girls","LANGUAGE CLASS");
dataset.setValue(55, "Boys","LANGUAGE CLASS");
JFreeChart chart = ChartFactory.createBarChart3D(
"Comparison between Girls and Boys in Science," + "Economics and Language classes",
"Students Comparisons", "No of Students",
dataset,
PlotOrientation.VERTICAL,
true,
true,
false);
chart.setBackgroundPaint(Color.white);
// Set the background colour of the chart
chart.getTitle().setPaint(Color.blue);
// Adjust the colour of the title
CategoryPlot plot = chart.getCategoryPlot();
// Get the Plot object for a bar graph
plot.setBackgroundPaint(Color.white);
plot.setRangeGridlinePaint(Color.red);
CategoryItemRenderer renderer = plot.getRenderer();
renderer.setSeriesPaint(0, Color.red);
renderer.setSeriesPaint(1, Color.green);
renderer.setItemURLGenerator(
new StandardCategoryURLGenerator(
"index1.html",
"series",
"section"));
renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());
resp.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 625, 500);
} catch (Exception e) {
System.err.println("Problem occurred creating chart." + e.getMessage());
}
}
回答1:
chart.setBackgroundPaint(Color.white);
// Set the background colour of the chart
chart.getTitle().setPaint(Color.blue);
// Adjust the colour of the title
CategoryPlot plot = chart.getCategoryPlot();
// Get the Plot object for a bar graph
plot.setBackgroundPaint(Color.white);
plot.setRangeGridlinePaint(Color.red);
CategoryItemRenderer renderer = plot.getRenderer();
renderer.setSeriesPaint(0, Color.red);
renderer.setSeriesPaint(1, Color.green);
renderer.setItemURLGenerator(
new StandardCategoryURLGenerator(
"index1.html",
"series",
"section"));
renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());
resp.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 625, 500);
......Instead of above code just use this code this is more eassy......
JFreeChart chart = ChartFactory.createBarChart3D(
"Comparison between Girls and Boys in Science," + "Economics and Language classes",
"Students Comparisons", "No of Students",
dataset,
PlotOrientation.VERTICAL,
true,
true,
false);
try {
final ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
final File file1 = new File(getServletContext().getRealPath(".") + "/images/piechart/lineChart.png");
ChartUtilities.saveChartAsPNG(file1, chart, 600, 400, info);
} catch (Exception e) {
System.out.println(e);
}
...............use this cod in jsp page.......
<div>
<img src="path/images/piechart/lineChart.png"
width="600" height="400" border="0" usemap="#chart" />
</div>
来源:https://stackoverflow.com/questions/6806087/jfree-chart-by-using-servlet-in-jsp