虽然很多这样文章,但笨笨的我还是费了半天才实现.
通过生成图片的方法saveChartAsPNG源码可以看到如下:(红色方法下面已标识,代表生成的文件,我们就需要在这里修改)
public static String saveChartAsPNG(JFreeChart chart, int width, int height, ChartRenderingInfo info, HttpSession session)
throws IOException
{
if (chart == null)
throw new IllegalArgumentException("Null 'chart' argument.");
createTempDir();
String prefix = tempFilePrefix;
if (session == null)
prefix = tempOneTimeFilePrefix;
File tempFile = File.createTempFile(prefix, ".png", new File(System.getProperty("java.io.tmpdir")));
ChartUtilities.saveChartAsPNG(tempFile, chart, width, height, info);
if (session != null)
registerChartForDeletion(tempFile, session);
return tempFile.getName();
}
protected static void createTempDir()
{
String tempDirName = System.getProperty("java.io.tmpdir");
if (tempDirName == null) {
throw new RuntimeException("Temporary directory system property (java.io.tmpdir) is null.");
}
File tempDir = new File(tempDirName);
if (!(tempDir.exists()))
tempDir.mkdirs();
}
知道了原因就开始动工了。
1.如果很多地方用到还是 继承ServletUtilities 重写saveChartAsPNG这个方法吧.
2.createTempDir(); 不用说去掉,根据
String dir =session.getServletContext().getRealPath("/");
File file =new File(dir+"/jfreeCharPics");
if(!file.exists()){
file.mkdir();
}
此目录为F:\chinahrt\chinahrt\WebContent\jfreeCharPics
3.那就是用自己的创建的路径保存图片
File tempFile = File.createTempFile(prefix, ".png",file);
到此已经结束了
4.引用图片,送佛送到西天,索性都写来
request.getContextPath()+ "/jfreeCharPics/"+ 上面返回的图片名称;
img 引用此资源就可以展示图片了。