将图表添加到缓冲区

我在struts2.in中创建了web项目,我使用jfreechart绘制了一个图形,我在Action类中实现了该图形。

http://www.java2s.com/Code/Java/Chart/JFreeChartTimeSeriesDemo10withperminutedata.htm

它在单独的applet窗口中显示图形我用Google搜索并找到一种方法将此图表保存为图像,以便在我的jsp文件中我可以包含此图像。 但最后当我部署时,我必须将我的项目转换为WAR文件但是如果我将项目转换为WAR我无法访问根据用户请求更改的图像(图形)。所以我想到保存图表/图像在缓冲区或某些东西中,以便稍后在请求新图形或用户注销时将其删除。

那么你能不能就如何做到这一点给出一些想法。 提前致谢

我写了类似于你想要做的事情。 我完成这个的方法是有一个第二个servlet(非常简单),它根据请求的图表接收参数并将图表生成为PNG 。 基本上,您使用所需参数调用servlet。 您可以获取这些参数并构建图表。 返回图表的重要部分发生在ChartUtilities.writeChartAsPNG(out, chart, 640, 480) ,其中第一个参数是对调用页面的响应的输出流。 第二个参数是您构建的图表。 最后两个参数用于图像的大小。 当你调用这个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."); } }