`

jfreechart在B/S生成图片过程(临时图片处理)-----参考自网络资源

    博客分类:
  • abc
 
阅读更多


二:
jfreechartB/S生成图片过程(临时图片处理)

开发过程中遇到的问题背景:出现temp文件家中的图片累计 不定时删除的话会导致文件夹文件日积月累

 

基于B/S结构的图片都是使用org.jfree.chart.servlet.DisplayChart这个类来显示的,大致过程如下: 

先是DisplayChartservice()方法调用ServletUtilitiessaveChartAsPNG (JFreeChart chart, int width, int height,HttpSession session)方法,在这个过程里,saveChartAsPNG方法先生成临时文件的名字

然后调用 org.jfree.chart.ChartUtilitiessaveChartAsPNG(File file, JFreeChart chart,int width,int height,ChartRenderingInfo info,boolean encodeAlpha),在服务器的临时文件夹里生成图片,接下来是把图片文件与 org.jfree.chart.servlet.ChartDeleter绑定(就是将图片文件名传递给这个类),ChartDeleter类继承了 HttpSessionBindingListener接口,主要作用是当用户session失效的时候,删除临时文件夹里的图片,这个类是存在于 session之中的。

最后调用ServletUtilitiessendTempFile(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服务器生成图片乱码解决方案

    总之,解决JFreeChart在Linux服务器上生成图片乱码的问题,关键在于正确安装和配置支持中文的字体,并确保在整个处理过程中正确处理字符编码。通过上述步骤,应该能够成功地在Linux环境中使用JFreeChart生成带有中文...

    JFreeChart生成图片并显示

    《JFreeChart生成图片并显示》 在Java开发中,我们常常需要生成各种图表来直观地展示数据,比如折线图、柱状图、饼图等。JFreeChart是一个强大的开源Java库,它提供了丰富的图表生成功能,可以满足开发者在各种应用...

    jfreechart生成图片及导出pdf 、excel

    在这个“jfreechart生成图片及导出pdf、excel”的主题中,我们将深入探讨如何利用JFreeChart来生成这些图表,并将其导出为PDF和Excel格式。 1. **JFreeChart基本使用** JFreeChart库提供了多种图表类型,包括...

    jfreechart-1.0.19-jars.rar

    包含 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生成的图片

    linux环境下jfreechart无法生成与windows环境下的临时目录,从而导致图片无法显示,解决思路: 重写jfreechart的方法:ServletUtilities;ChartDeleter;DisplayChart 自定义三个类JfreeServletUtilities;...

    web报表B/S

    1. **B/S架构**:Browser/Server(B/S)架构是一种网络应用模式,用户通过浏览器进行操作,服务器负责处理业务逻辑和数据存储。Web报表B/S系统采用这种模式,使得用户只需打开网页就能查看和操作报表,降低了对...

    JFreeChart -- web图表生成源码

    第二种就是直接在web服务器端生成好图表图片文件后发送给浏览器。第一种方式显然对于客户端要求太高,随着现在主流浏览器放弃对JAVA的支持后,这种方式只适合一些局域网的应用,而对于因特网的环境就显得不太适合。...

    Spring+Struts+JFreeChart 自动生成统计图

    在IT行业中,构建一个能够自动生成统计图的系统是一项常见的需求,特别是在数据分析和报表展示的场景下。本项目“Spring+Struts+JFreeChart 自动生成统计图”正是为了解决这样的问题。它结合了三个强大的Java技术...

    jfreechart,jfreechart-1.0.13,jfreechart-1.0.13,jfreechart

    这个压缩包“jfreechart-1.0.13”包含了JFreeChart的完整版本,让我们一起深入探讨其核心功能和使用方法。 JFreeChart是Java中最优秀的绘图工具之一,它支持多种图表类型,包括折线图、柱状图、饼图、散点图、甘特...

    jfreechart-1.0.4.jar jfreechart-1.0.4-swt.jar

    如下载 jfreechart-1.0.0-rc1.zip 三、创建数据库中的表 test 四、JSP源程序: <%@ page contentType="text/html;charset=GBK"%> *" %> *" %> *" %> *" %> *" %> <head><title>Jfree图表</title> ...

    POI和JFreeChart框架实现生成Excel文件(生成 统计图)

    - 在处理大量数据时,需要注意性能优化,例如合理设置缓冲区大小,避免内存溢出等问题。 - 当使用JFreeChart生成图表时,需要确保图表的数据准确无误,并且图表的样式符合需求。 - 在导出图表为图像时,需要注意选择...

    JfreeChart-雷达图与导出

    2. **生成流式图像**:如果你需要在网络应用中使用图表,可以使用`ChartUtilities.writeChartAsPNG()`方法将图表写入`OutputStream`,然后将其发送到客户端。 3. **PDF和SVG导出**:JFreeChart也支持导出为矢量图形...

    jFreeChart生成报表图片

    6. **性能优化**:在处理大量数据或高并发请求时,考虑缓存生成的图片或利用服务器端的图形加速技术可以提高性能。 7. **扩展性**:jFreeChart不仅限于静态图片输出,还可以生成SVG矢量图、PDF文档,甚至直接在...

    java生成报表JFreeChart

    Java生成报表是一个重要的任务,特别是在企业级应用中,数据可视化对于理解和分析业务至关重要。JFreeChart库正是这样一个强大的工具,它允许开发人员在Java应用程序中创建各种图表,如柱状图、饼图和折线图等。这个...

    jfreechart-1.0.19

    2. **jfreechart-1.0.19-fx-javadocs.zip**:这是JavaFX版的API文档,包含了JFreeChart在JavaFX环境下的详细接口和类的描述,是开发JavaFX应用时使用JFreeChart的重要参考。 3. **jfreechart-1.0.19.zip**:这是...

    在 JavaFx 中使用 JFreeChart 生成图表

    在JavaFX中,JFreeChart是一个非常有用的库,它允许开发者创建各种复杂的图表,如折线图、柱状图、饼图、散点图等。本文将深入探讨如何结合JavaFX与JFreeChart来实现图表的生成。 首先,我们需要了解JFreeChart库的...

    Spring+JFreeChart 自动生成统计图

    标题“Spring+JFreeChart 自动生成统计图”涉及的是在Java开发环境中,利用Spring框架和JFreeChart库来动态生成图表的技巧。这篇文章可能是介绍如何在Spring应用中集成JFreeChart,以便为数据可视化提供服务。 ...

    纯Java动态生成SVG饼图与JFreeChart超强功能生成SVG图表

    纯Java动态生成 SVG 饼图与 JFreeChart 超强功能生成 SVG 图表 在本文中,我们将探讨如何使用 Java 生成 SVG 饼图,并使用 JFreeChart 生成 SVG 图表。我们还将讨论 JFreeChart 的一些缺陷和解决方案。 一、Java ...

Global site tag (gtag.js) - Google Analytics