2012-10-26 65 views
0

我已经在struts2.in中创建了web项目,我使用jfreechart绘制了一个图表,这是我在Action类中实现的。将图表添加到缓冲区中

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

它显示在单独的小程序窗口实物我用Google搜索的图形,并找到一个办法救这个图表作为图像,这样在我的JSP文件,我可以包括这一形象。 但最后当我部署我不得不将我的项目转换成WAR文件,但如果我将项目转换为WAR我不能访问图像(图),根据用户请求更改。所以我想保存图表/图像在缓冲区或某件事物中,以便稍后在请求新图形或用户注销时删除它们。

所以,你可以给一些关于如何做到这一点的想法。 在此先感谢

回答

2

我写了类似于您正在尝试做的事情。我完成这个任务的方式是拥有第二个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."); 
    } 
} 
+0

trashgod我认为乌尔帮助第2或第3次感谢的人,我会尝试this.though我没有对servlet的声音knowldege,JSP,J2EE让希望我这样做正确和它的作品 – HkFreaKuser1673718

+0

只是一个侧面说明,trashgod编辑帖子,我发布了内容。无论哪种方式,很高兴它有帮助。 – Lipongo

+0

Lipongo sry没有注意到你的家伙谢谢你,但我想我不能这样做因为我使用的是struts 2,如果把 ......等放在我的web.xml中,我的web项目不起作用如果我删除这个servlet映射项目works.so我不得不放弃此功能。谢谢 – HkFreaKuser1673718

相关问题