生成图像并在JSP中显示它以及其他内容

时间:2012-03-29 14:22:33

标签: java spring jsp struts jfreechart

我使用JFreeChart根据用户输入生成动态图表。我有一个带有一些文本框和组合框的JSP,用户进行输入并提交它,并且Action处理它,生成图表的图像。我需要在与文本框/组合框下面相同的JSP上显示此图像。

如果我使用response.setContentType("image/jpeg");等...那么我会得到一个仅包含图像的页面。我想将图像保存到文件然后使用<img >访问它,但我不确定它是否可行(需要将其保存到WebContent,我可能无法一直访问它?)

有没有办法以某种方式缓存图像,然后通过<img>或其他东西在JSP中访问它?也许JFreeChart有一个简单的方法来做我想做的事情?

如果重要的话,我也在我的webapp上使用struts和spring。

提前致谢。

3 个答案:

答案 0 :(得分:1)

我没有尝试过,但你可以从org.jfree.chart.imagemap查看org.jfree.chart.urls和合适的网址生成器。图示了PieURLGenerator {{1}}的实施概要。

答案 1 :(得分:0)

好吧,如果你在服务器端生成图像,你总是可以使用类似UUID的东西将它存储在临时目录中,为它生成一个唯一的名称,并连接图像文件扩展名。结束了。

确保在Web服务器上可以访问生成映像的目录,然后使用ajax(Direct Web Remoting)将服务器上的映像文件的URL路径发送回JSP,以便使用Javascript进行显示。

请确保您还有一个chron作业或服务,以便立即从目录中清除旧文件。

答案 2 :(得分:0)

您应该有一个servlet,可以只从URL创建您想要的图像。然后,URL可以包含一个id,它会映射回程序中包含内存中原始数据的对象。然后servlet生成图像并将其返回。

然后,您只需在Javascript中设置当前网页中图片的网址即可加载。

这是因为JSP是面向字符的,不能很好地用于二进制数据,所以你需要有一个servlet来做它。