我在JSP中使用JFreeChart创建了一个图表。我想使用JSP在网页中呈现此图表,而不将图像存储为JPEG / PNG文件。这是在谷歌应用引擎环境does not support writing to disk。
我尝试了以下内容:
java.awt.image.BufferedImage chartImage = targetChart.createBufferedImage(600,400);
ServletOutputStream out1 = response.getOutputStream();
JPEGImageEncoder encoder= JPEGCodec.createJPEGEncoder(out1);
但最终得到了
java.lang.IllegalStateException: STREAM
顺便说一下,在app引擎环境中也不允许使用java.awt。我有什么选择来解决这个问题?
答案 0 :(得分:1)
我放弃了JfreeChart方法,并使用Google Chart API构建饼图.Ex。
<IMG SRC="http://chart.apis.google.com/chart?chco=FF3300,66CC33&cht=p3&chl=A|B|C|D&chs=500x200&chd=t:10,40,30,20&chtt=Your%20Chart"
答案 1 :(得分:0)
为了澄清一下,上面的JSP代码是针对<img src="...">
中指定的JSP,对吧?
确保该页面上的<% %>
标记之外没有空格/新行任何地方,否则它们将被写入JspWriter,这将阻止您获取OutputStream。我很确定你现在遇到的问题。
答案 2 :(得分:0)
您还可以使用基于Flash的图表,例如amcharts http://www.amcharts.com/。 看我的演示 http://aaron.oirt.rutgers.edu/myapp/amcharts/doc 我在GAE下进行了测试,结果很好。