我写的东西和你想做的差不多。我完成此操作的方法是拥有第二个Servlet(非常简单),该Servlet根据请求的图表获取参数,并将该图表生成为
PNG。基本上,您使用必需的参数调用servlet。您采用这些参数并构建图表。返回图表的重要部分发生在
ChartUtilities.writeChartAsPNG(out,chart, 640,480)第一个参数是响应调用页面的输出流的地方。第二个参数是您构建的图表。最后两个参数用于图像的大小。当您调用此servlet时,它将位于
<img src="URL_to_Servlet" />
URL包含构建图表所需的参数。
以下是您将需要的代码,仅着重于将图表作为动态生成的图像从传回
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.ChartUtilities;import org.jfree.chart.JFreeChart;public class ChartServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { JFreeChart chart = this.generateLineChart(); ServletOutputStream out = resp.getOutputStream(); resp.setContentType("image/png"); ChartUtilities.writeChartAsPNG(out, chart, 640, 480); out.close(); } private JFreeChart generateLineChart() throws IOException { return chart; } @Override public void init() throws ServletException { // TODO Auto-generated method stub System.out.println("Starting up charts servlet."); }}


