`

struts2 jfreechart生成报表demo

阅读更多
转至 http://wangyu.iteye.com/blog/211266
下面以边帖图片和代码的方式来讲解Struts2与JFreeChart的整合。
     搭建环境:首先帖一张工程的目录结构以及所需的jar包。注意:如果你不打算自己写ChartResult的话只需要引入struts2-jfreechart-plugin-2.0.6.jar(这个在struts-2.0.6-all.zip可以找到了):
        
       1.依次帖web.xml、struts.xml、struts.properties和struts-jfreechart.xml几个配置文件的代码:
        web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
   
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.FilterDispatcher
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>        struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <include file="struts-jfreechart.xml" />
</struts>        struts.properties
struts.ui.theme=simple        struts-jfreechart.xml  <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="jFreeChartDemonstration" extends="struts-default"
        namespace="/jfreechart">
        <result-types>
            <result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"></result-type>
        </result-types>
        <action name="JFreeChartAction" class="com.tangjun.struts2.JFreeChartAction">
              <result type="chart">
                   <param name="width">400</param>
                   <param name="height">300</param>
            </result>
        </action>
    </package>
</struts>        说明:这里只需要说明下struts-jfreechart.xml,这里直接调用已经写好的类ChartResult,这个类是继承自 com.opensymphony.xwork2.Result,传入生成图片大小的参数width和height就可以了。

       2. 新建JFreeChartAction继承ActionSupport,生成JFreeChart对象并保存到chart中,注意这个名称是固定的。

package com.tangjun.struts2;

import com.opensymphony.xwork2.ActionSupport;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;

public class JFreeChartAction extends ActionSupport {

    /**
     *
     */
    private static final long serialVersionUID = 5752180822913527064L;

    //供ChartResult调用->ActionInvocation.getStack().findValue("chart")
    private JFreeChart chart;
   
    @Override
    public String execute() throws Exception {
        //设置数据
        DefaultPieDataset data = new DefaultPieDataset();
        data.setValue("Java", new Double(43.2));
        data.setValue("Visual Basic", new Double(1.0));
        data.setValue("C/C++", new Double(17.5));
        data.setValue("tangjun", new Double(60.0));
        //生成JFreeChart对象
        chart = ChartFactory.createPieChart("Pie Chart", data, true,true, false);
       
        return SUCCESS;
    }

    public JFreeChart getChart() {
        return chart;
    }

    public void setChart(JFreeChart chart) {
        this.chart = chart;
    }
}

OK!至此代码已经全部贴完。
输入访问 http://localhost:8080/Struts2JFreeChart/jfreechart/JFreeChartAction.action
显示结果如下:







--------------------------------------------------------------------------------


补充
    以上生成的图片是PNG格式的图片,如果需要自定义图片格式的话(好像只能支持JPG和PNG格式),那么自己写一个ChartResult继承自StrutsResultSupport,见代码:



package com.tangjun.struts2.chartresult;

import java.io.OutputStream;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.dispatcher.StrutsResultSupport;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;

import com.opensymphony.xwork2.ActionInvocation;

public class ChartResult extends StrutsResultSupport {

    /**
     *
     */
    private static final long serialVersionUID = 4199494785336139337L;
   
    //图片宽度
    private int width;
    //图片高度
    private int height;
    //图片类型 jpg,png
    private String imageType;
   
   
    @Override
    protected void doExecute(String arg0, ActionInvocation invocation) throws Exception {
        JFreeChart chart =(JFreeChart) invocation.getStack().findValue("chart");
        HttpServletResponse response = ServletActionContext.getResponse();
        OutputStream os = response.getOutputStream();
       
        if("jpeg".equalsIgnoreCase(imageType) || "jpg".equalsIgnoreCase(imageType))
            ChartUtilities.writeChartAsJPEG(os, chart, width, height);
        else if("png".equalsIgnoreCase(imageType))
            ChartUtilities.writeChartAsPNG(os, chart, width, height);
        else
            ChartUtilities.writeChartAsJPEG(os, chart, width, height);
       
        os.flush();

    }
    public void setHeight(int height) {
        this.height = height;
    }

    public void setWidth(int width) {
        this.width = width;
    }
   
    public void setImageType(String imageType) {
        this.imageType = imageType;
    }

}

如此的话还需要小小的修改一下struts-jfreechart.xml:

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <package name="jFreeChartDemonstration" extends="struts-default"
        namespace="/jfreechart">
        <!-- 自定义返回类型 -->
        <result-types>
            <!--
            <result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"></result-type>
             -->
            <result-type name="chart" class="com.tangjun.struts2.chartresult.ChartResult"></result-type>
        </result-types>

        <action name="JFreeChartAction" class="com.tangjun.struts2.JFreeChartAction">
              <!--
              <result type="chart">
                   <param name="width">400</param>
                   <param name="height">300</param>
            </result>
            -->
              <result type="chart">
                   <param name="width">400</param>
                   <param name="height">300</param>
                   <param name="imageType">jpg</param>
            </result>
        </action>
    </package>
</struts>
OK!显示的效果是一样的,只是图片格式不一样,当然这里面你可以做更多操作!

分享到:
评论

相关推荐

    JFreeChart生成报表Demo案例

    通过这个JFreeChart报表Demo案例,你可以学习到如何使用JFreeChart库来创建具有3D效果的图表,并将它们整合到Java应用程序中,为用户提供直观、美观的数据展示。在实际开发过程中,结合提供的JAR包和示例代码,你将...

    struts2 + jfreechart demo

    这个"struts2 + jfreechart demo"是一个实例,展示了如何在Struts2框架中集成并使用JFreeChart来创建动态图表。通过这个示例,我们可以学习到以下关键知识点: 1. **Struts2框架基础**:了解Struts2的核心概念,如...

    struts2整合 jfreechart 实现报表

    总的来说,整合Struts2和JFreeChart能够方便地在Web应用中生成动态图表报表,使数据可视化,提升用户体验。通过以上步骤,你可以创建一个基本的报表系统,根据实际需求,还可以进一步优化,如增加参数化查询、导出...

    jfreeChart报表小demo

    在这个demo中,iText用于将JFreeChart生成的图表嵌入到PDF中,使得报表可以以更便于分享和打印的形式存在。使用iText,你可以创建一个PdfDocument对象,添加一个PdfCanvas,然后将JFreeChart的Graphics2D绘图对象...

    Struts2+JFreeChart 柱状图Demo

    Struts2+JFreeChart 柱状图Demo是一个典型的Java Web应用程序,它结合了Struts2框架、JFreeChart库以及可能的数据存储系统(如MySQL或Oracle),用于动态生成柱状图表。这个Demo旨在展示如何在实际项目中集成这些...

    struts2整合JfreeChart完成报表功能

    整合Struts2和JFreeChart,主要是为了在web应用中展示动态生成的数据图表,例如报表。以下是整合的步骤和关键知识点: 1. **下载和引入JFreeChart库**: 首先,你需要从JFreeChart的官方网站...

    java生成报表JFreeChart

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

    Struts+jfreeChart整合

    Struts+jfreeChart整合注意事项以及代码实现

    在Struts中用JFreeChart生成图表

    ### 在Struts中使用JFreeChart生成图表 #### 一、引言 随着Web应用程序功能需求的日益增加,用户不仅需要获取数据,还希望能够直观地理解这些数据所代表的意义。图表作为一种直观的数据可视化手段,在现代Web应用...

    jFreeChart生成报表图片

    这个库广泛应用于数据分析、报表生成、Web应用和桌面应用中,为用户提供直观的数据展示方式。 在"jFreeChart生成报表图片"的项目中,我们可以看到一个已经准备好的示例,包含了多种图表类型的实现,帮助开发者快速...

    struts2+jfreechart

    在`jfreechartDemo`这个项目中,应该包含了使用Struts2和JFreeChart创建上述三种图表的示例代码。通过分析这些代码,你可以更深入地了解如何在实际项目中整合这两个库,创建动态、交互式的Web图表。记住,实践是最好...

    jfreechart生成报表图片.zip

    这个“jfreechart生成报表图片.zip”压缩包包含了一组资源,可以帮助你快速创建各种类型的图表,如柱状图、饼图、折线图等,非常适合用于数据可视化。 1. **JFreeChart库介绍**: JFreeChart是开源的Java库,它...

    struts2+MySQL+jfreechart生成带热点

    Struts2、MySQL和JFreeChart是Web应用开发中常用的技术栈,它们分别负责不同的功能领域。Struts2是一个基于MVC(Model-View...这在数据分析、报表生成和数据可视化方面非常有用,特别适合需要动态展示和交互的Web应用。

    Struts2与Jfreechart结合产生报表统计图

    在企业级应用中,通常需要生成各种报表和统计图表来展示数据,而Struts2和JFreeChart的结合就提供了解决这一需求的有效途径。 Struts2是一个基于MVC设计模式的Web应用框架,它简化了Java Servlet和JavaServer Pages...

    JFreeChart(Struts1+jFreeChart)

    在Struts1中集成JFreeChart,主要目的是将动态生成的图表数据以图形的形式展示给用户,这通常涉及到以下步骤: 1. **创建图表**: 首先,你需要在服务器端使用JFreeChart库来创建所需的图表。这包括设置数据源(如...

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

    本项目“Spring+Struts+JFreeChart 自动生成统计图”正是为了解决这样的问题。它结合了三个强大的Java技术框架,使得开发者能够方便地在Web应用中创建动态的、交互式的统计图表。 Spring框架作为核心的依赖注入(DI...

    struts2 jfreechart使用的jar包

    当我们需要在Struts2应用中展示数据时,JFreeChart是一个理想的选择,因为它可以生成各种类型的图表,如折线图、柱状图、饼图等,使数据可视化更加直观。 要将JFreeChart集成到Struts2项目中,首先需要引入相关的...

    struts2与jfreechart整合

    Struts2是一个基于MVC设计模式的Web应用框架,用于构建动态、数据驱动的Java Web应用,而JFreeChart则是一个强大的图表生成库,可以生成各种类型的图表,如柱状图、饼图、线图等,广泛应用于数据分析和展示。...

    Struts 2 JFreeChart Doc

    Struts 2 JFreeChart 插件是用于在Java Web应用程序中集成JFreeChart库的一个组件,主要用于生成高质量的图表并展示。JFreeChart是一个强大的图表库,遵循LGPL许可,允许开发者在程序中自由使用它来创建各种图表,如...

Global site tag (gtag.js) - Google Analytics