二:jfreechart在B/S生成图片过程(临时图片处理)
开发过程中遇到的问题背景:出现temp文件家中的图片累计
不定时删除的话会导致文件夹文件日积月累
基于B/S结构的图片都是使用org.jfree.chart.servlet.DisplayChart这个类来显示的,大致过程如下:
先是DisplayChart的service()方法调用ServletUtilities的saveChartAsPNG (JFreeChart chart, int width, int height,HttpSession
session)方法,在这个过程里,saveChartAsPNG方法先生成临时文件的名字
然后调用
org.jfree.chart.ChartUtilities的saveChartAsPNG(File
file, JFreeChart chart,int width,int height,ChartRenderingInfo info,boolean
encodeAlpha),在服务器的临时文件夹里生成图片,接下来是把图片文件与 org.jfree.chart.servlet.ChartDeleter绑定(就是将图片文件名传递给这个类),ChartDeleter类继承了
HttpSessionBindingListener接口,主要作用是当用户session失效的时候,删除临时文件夹里的图片,这个类是存在于 session之中的。
最后调用ServletUtilities的sendTempFile(File file, HttpServletResponse response,String
mimeType)用输出流输出图片。
概括一下就是说,图片是存放于服务器的临时文件夹里,用户session失效后,程序会自动删除图片的。
对于session为空时生成的图片名称中会被标记为on-time
JfreeChart saveChartAsJPEG源码
public static String saveChartAsJPEG(JFreeChart chart, int width,
int height, ChartRenderingInfo info, HttpSession session)
throws IOException {
if (chart == null) {
throw new IllegalArgumentException("Null 'chart' argument.");
}
ServletUtilities.createTempDir();
String prefix = ServletUtilities.tempFilePrefix;
if (session == null) {
prefix = ServletUtilities.tempOneTimeFilePrefix;
}
File tempFile = File.createTempFile(prefix, ".jpeg",
new File(System.getProperty("java.io.tmpdir")));
ChartUtilities.saveChartAsJPEG(tempFile, chart, width, height, info);
if (session != null) {
ServletUtilities.registerChartForDeletion(tempFile, session);
}
return tempFile.getName();
}
saveChartAsPNG
public static java.lang.String saveChartAsPNG(JFreeChart chart,
int width,
int height,
ChartRenderingInfo info,
javax.servlet.http.HttpSession session)
throws
java.io.IOException
Saves the chart as a PNG format file in the
temporary directory and populates the ChartRenderingInfo object which can
be used to generate an HTML image map.
Parameters:
chart - the chart to be saved (null not
permitted).
width - the width of the chart.
height - the height of the chart.
info - the ChartRenderingInfo object
to be populated (null permitted).
session - the HttpSession of the
client (if null, the temporary file is marked as "one-time" and
deleted by the DisplayChartservlet right
after it is streamed to the client).
Returns:
The filename of the chart saved in the
temporary directory.
Throws:
java.io.IOException - if there is a
problem saving the file.
分享到:
相关推荐
总之,解决JFreeChart在Linux服务器上生成图片乱码的问题,关键在于正确安装和配置支持中文的字体,并确保在整个处理过程中正确处理字符编码。通过上述步骤,应该能够成功地在Linux环境中使用JFreeChart生成带有中文...
《JFreeChart生成图片并显示》 在Java开发中,我们常常需要生成各种图表来直观地展示数据,比如折线图、柱状图、饼图等。JFreeChart是一个强大的开源Java库,它提供了丰富的图表生成功能,可以满足开发者在各种应用...
在这个“jfreechart生成图片及导出pdf、excel”的主题中,我们将深入探讨如何利用JFreeChart来生成这些图表,并将其导出为PDF和Excel格式。 1. **JFreeChart基本使用** JFreeChart库提供了多种图表类型,包括...
包含 jfreechart-1.0.19-demo.jar(java 环境下点击就可以查看) 包含jar包 jfreechart-1.0.19.jar,jfreechart-1.0.19-swt.jar,jcommon-1.0.23.jar,junit-4.11等,具体项目中需要哪些jar 包 ...
linux环境下jfreechart无法生成与windows环境下的临时目录,从而导致图片无法显示,解决思路: 重写jfreechart的方法:ServletUtilities;ChartDeleter;DisplayChart 自定义三个类JfreeServletUtilities;...
1. **B/S架构**:Browser/Server(B/S)架构是一种网络应用模式,用户通过浏览器进行操作,服务器负责处理业务逻辑和数据存储。Web报表B/S系统采用这种模式,使得用户只需打开网页就能查看和操作报表,降低了对...
第二种就是直接在web服务器端生成好图表图片文件后发送给浏览器。第一种方式显然对于客户端要求太高,随着现在主流浏览器放弃对JAVA的支持后,这种方式只适合一些局域网的应用,而对于因特网的环境就显得不太适合。...
在IT行业中,构建一个能够自动生成统计图的系统是一项常见的需求,特别是在数据分析和报表展示的场景下。本项目“Spring+Struts+JFreeChart 自动生成统计图”正是为了解决这样的问题。它结合了三个强大的Java技术...
这个压缩包“jfreechart-1.0.13”包含了JFreeChart的完整版本,让我们一起深入探讨其核心功能和使用方法。 JFreeChart是Java中最优秀的绘图工具之一,它支持多种图表类型,包括折线图、柱状图、饼图、散点图、甘特...
如下载 jfreechart-1.0.0-rc1.zip 三、创建数据库中的表 test 四、JSP源程序: <%@ page contentType="text/html;charset=GBK"%> *" %> *" %> *" %> *" %> *" %> <head><title>Jfree图表</title> ...
- 在处理大量数据时,需要注意性能优化,例如合理设置缓冲区大小,避免内存溢出等问题。 - 当使用JFreeChart生成图表时,需要确保图表的数据准确无误,并且图表的样式符合需求。 - 在导出图表为图像时,需要注意选择...
2. **生成流式图像**:如果你需要在网络应用中使用图表,可以使用`ChartUtilities.writeChartAsPNG()`方法将图表写入`OutputStream`,然后将其发送到客户端。 3. **PDF和SVG导出**:JFreeChart也支持导出为矢量图形...
6. **性能优化**:在处理大量数据或高并发请求时,考虑缓存生成的图片或利用服务器端的图形加速技术可以提高性能。 7. **扩展性**:jFreeChart不仅限于静态图片输出,还可以生成SVG矢量图、PDF文档,甚至直接在...
Java生成报表是一个重要的任务,特别是在企业级应用中,数据可视化对于理解和分析业务至关重要。JFreeChart库正是这样一个强大的工具,它允许开发人员在Java应用程序中创建各种图表,如柱状图、饼图和折线图等。这个...
2. **jfreechart-1.0.19-fx-javadocs.zip**:这是JavaFX版的API文档,包含了JFreeChart在JavaFX环境下的详细接口和类的描述,是开发JavaFX应用时使用JFreeChart的重要参考。 3. **jfreechart-1.0.19.zip**:这是...
在JavaFX中,JFreeChart是一个非常有用的库,它允许开发者创建各种复杂的图表,如折线图、柱状图、饼图、散点图等。本文将深入探讨如何结合JavaFX与JFreeChart来实现图表的生成。 首先,我们需要了解JFreeChart库的...
标题“Spring+JFreeChart 自动生成统计图”涉及的是在Java开发环境中,利用Spring框架和JFreeChart库来动态生成图表的技巧。这篇文章可能是介绍如何在Spring应用中集成JFreeChart,以便为数据可视化提供服务。 ...
纯Java动态生成 SVG 饼图与 JFreeChart 超强功能生成 SVG 图表 在本文中,我们将探讨如何使用 Java 生成 SVG 饼图,并使用 JFreeChart 生成 SVG 图表。我们还将讨论 JFreeChart 的一些缺陷和解决方案。 一、Java ...