我写了类似于您正在尝试做的事情。我完成这个任务的方式是拥有第二个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 {
/*
* (non-Javadoc) @see
* javax.servlet.http.HttpServlet#doGet(
* javax.servlet.http.HttpServletRequest,
* javax.servlet.http.HttpServletResponse)
*/
@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();
}
/**
* Generate chart.
*
* @return the j free chart
* @throws IOException Signals that an I/O exception has occurred.
*/
private JFreeChart generateLineChart() throws IOException {
return chart;
}
/*
* (non-Javadoc) @see javax.servlet.GenericServlet#init()
*/
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
System.out.println("Starting up charts servlet.");
}
}
trashgod我认为乌尔帮助第2或第3次感谢的人,我会尝试this.though我没有对servlet的声音knowldege,JSP,J2EE让希望我这样做正确和它的作品 – HkFreaKuser1673718
只是一个侧面说明,trashgod编辑帖子,我发布了内容。无论哪种方式,很高兴它有帮助。 – Lipongo
Lipongo sry没有注意到你的家伙谢谢你,但我想我不能这样做因为我使用的是struts 2,如果把 ......等放在我的web.xml中,我的web项目不起作用如果我删除这个servlet映射项目works.so我不得不放弃此功能。谢谢 –
HkFreaKuser1673718