`
zy116494718
  • 浏览: 471285 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在Struts2中使用JFreeChar

阅读更多

1、在struts2中,默认的struts-default.xml中,并没有包含chart的result-type,它是插件的形式使用的。把 struts2的解压包的lib里找到struts2-jfreechart-plugin-2.0.11.jar,拷贝到你的项目的 classpath里,同时在struts.xml里面增加一个chart的result-type。
Java代码
<result-types>  
    <result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"/>  
</result-types>  
<action name="ListAllFruit4Bar2" class="chart.ListAllFruit4Bar2Action">  
    <result name="success" type="chart">  
        <param name="chart">chart</param>  
        <param name="height">400</param>  
        <param name="width">700</param>  
    </result>  
</action>  
<action name="ListAllFruit4Pie2" class="chart.ListAllFruit4Pie2Action">  
    <result name="success" type="chart">  
        <param name="chart">chart</param>  
        <param name="height">400</param>  
        <param name="width">700</param>  
    </result>  
</action> 

<result-types>
<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"/>
</result-types>
<action name="ListAllFruit4Bar2" class="chart.ListAllFruit4Bar2Action">
<result name="success" type="chart">
<param name="chart">chart</param>
<param name="height">400</param>
<param name="width">700</param>
</result>
</action>
<action name="ListAllFruit4Pie2" class="chart.ListAllFruit4Pie2Action">
<result name="success" type="chart">
<param name="chart">chart</param>
<param name="height">400</param>
<param name="width">700</param>
</result>
</action>

2、需要再添加jfreechart-1.0.9.jar和jcommon-1.0.12.jar(JasperReports和JFreeChart都需要的)到你的classpath里面。
3、在你的action代码里,返回一个JFreeChart对象即可。
ListAllFruit4Bar2Action代码:
Java代码
package chart;  
 
import org.jfree.chart.JFreeChart;  
 
import com.opensymphony.xwork2.ActionSupport;  
 
public class ListAllFruit4Bar2Action extends ActionSupport {  
    private static final long serialVersionUID = 1L;  
    private JFreeChart chart;  
      
    @Override 
    public String execute() throws Exception {  
        chart = FruitService.createBarChart();  
        return SUCCESS;  
    }  
      
    public JFreeChart getChart() {  
        return chart;  
    }  


package chart;

import org.jfree.chart.JFreeChart;

import com.opensymphony.xwork2.ActionSupport;

public class ListAllFruit4Bar2Action extends ActionSupport {
private static final long serialVersionUID = 1L;
    private JFreeChart chart;

@Override
public String execute() throws Exception {
chart = FruitService.createBarChart();
return SUCCESS;
}

public JFreeChart getChart() {
return chart;
}
}

ListAllFruit4Pie2Action代码:
Java代码
package chart;  
 
import org.jfree.chart.JFreeChart;  
 
import com.opensymphony.xwork2.ActionSupport;  
 
public class ListAllFruit4Pie2Action extends ActionSupport {  
    private static final long serialVersionUID = 1L;  
    private JFreeChart chart;  
      
    @Override 
    public String execute() throws Exception {  
        chart = FruitService.createPaiChart();  
        return SUCCESS;  
    }  
      
    public JFreeChart getChart() {  
        return chart;  
    }  


package chart;

import org.jfree.chart.JFreeChart;

import com.opensymphony.xwork2.ActionSupport;

public class ListAllFruit4Pie2Action extends ActionSupport {
private static final long serialVersionUID = 1L;
    private JFreeChart chart;

@Override
public String execute() throws Exception {
chart = FruitService.createPaiChart();
return SUCCESS;
}

public JFreeChart getChart() {
return chart;
}
}


FruitService代码:
Java代码
package chart;  
 
import org.jfree.chart.ChartFactory;  
import org.jfree.chart.JFreeChart;  
import org.jfree.chart.plot.PlotOrientation;  
import org.jfree.data.category.CategoryDataset;  
import org.jfree.data.category.DefaultCategoryDataset;  
 
public class FruitService {  
 
    public static JFreeChart createBarChart() {  
        CategoryDataset dataset = getDataSet2();  
        JFreeChart chart = ChartFactory.createBarChart3D(  
                "水果产量图", // 图表标题  
                "水果", // 目录轴的显示标签  
                "产量", // 数值轴的显示标签  
                dataset, // 数据集  
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直  
                true,   // 是否显示图例(对于简单的柱状图必须是false)  
                true,   // 是否生成工具  
                true    // 是否生成URL链接  
                );  
        return chart;  
    }  
 
    private static CategoryDataset getDataSet2() {  
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
        dataset.addValue(100, "北京", "苹果");  
        dataset.addValue(100, "上海", "苹果");  
        dataset.addValue(100, "广州", "苹果");  
        dataset.addValue(200, "北京", "梨子");  
        dataset.addValue(200, "上海", "梨子");  
        dataset.addValue(200, "广州", "梨子");  
        dataset.addValue(300, "北京", "葡萄");  
        dataset.addValue(300, "上海", "葡萄");  
        dataset.addValue(300, "广州", "葡萄");  
        dataset.addValue(400, "北京", "香蕉");  
        dataset.addValue(400, "上海", "香蕉");  
        dataset.addValue(400, "广州", "香蕉");  
        dataset.addValue(500, "北京", "荔枝");  
        dataset.addValue(500, "上海", "荔枝");  
        dataset.addValue(500, "广州", "荔枝");  
        return dataset;  
    }  
       
    public static JFreeChart createPaiChart() {  
        DefaultPieDataset data = getDataSet();  
        JFreeChart chart = ChartFactory.createPieChart3D("水果产量图",  // 图表标题  
        data,   
        true, // 是否显示图例  
        false,  
        false 
        );  
        PiePlot plot = (PiePlot) chart.getPlot();  
        resetPiePlot(plot);  
        return chart;  
    }  
      
    private static void resetPiePlot(PiePlot plot) {  
        String unitSytle = "{0}={1}({2})";  
          
        plot.setNoDataMessage("无对应的数据,请重新查询。");  
        plot.setNoDataMessagePaint(Color.red);  
          
        //指定 section 轮廓线的厚度(OutlinePaint不能为null)  
        plot.setOutlineStroke(new BasicStroke(0));  
          
        //设置第一个 section 的开始位置,默认是12点钟方向  
        plot.setStartAngle(90);           
 
        plot.setToolTipGenerator(new StandardPieToolTipGenerator(unitSytle,  
                NumberFormat.getNumberInstance(),  
                new DecimalFormat("0.00%")));  
          
        //指定图片的透明度  
        plot.setForegroundAlpha(0.65f);  
          
        //引出标签显示样式  
        plot.setLabelGenerator(new StandardPieSectionLabelGenerator(unitSytle,  
                NumberFormat.getNumberInstance(),  
                new DecimalFormat("0.00%")));  
              
        //图例显示样式  
        plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(unitSytle,  
                NumberFormat.getNumberInstance(),  
                new DecimalFormat("0.00%")));  
    }  
 
    private static DefaultPieDataset getDataSet() {  
        DefaultPieDataset dataset = new DefaultPieDataset();  
        dataset.setValue("苹果",100);  
        dataset.setValue("梨子",200);  
        dataset.setValue("葡萄",300);  
        dataset.setValue("香蕉",400);  
        dataset.setValue("荔枝",500);  
        return dataset;  
    }  
 


package chart;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

public class FruitService {

public static JFreeChart createBarChart() {
CategoryDataset dataset = getDataSet2();
JFreeChart chart = ChartFactory.createBarChart3D(
"水果产量图", // 图表标题
"水果", // 目录轴的显示标签
"产量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
true, // 是否生成工具
true // 是否生成URL链接
);
return chart;
}

private static CategoryDataset getDataSet2() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(100, "上海", "苹果");
dataset.addValue(100, "广州", "苹果");
dataset.addValue(200, "北京", "梨子");
dataset.addValue(200, "上海", "梨子");
dataset.addValue(200, "广州", "梨子");
dataset.addValue(300, "北京", "葡萄");
dataset.addValue(300, "上海", "葡萄");
dataset.addValue(300, "广州", "葡萄");
dataset.addValue(400, "北京", "香蕉");
dataset.addValue(400, "上海", "香蕉");
dataset.addValue(400, "广州", "香蕉");
dataset.addValue(500, "北京", "荔枝");
dataset.addValue(500, "上海", "荔枝");
dataset.addValue(500, "广州", "荔枝");
return dataset;
}
    
    public static JFreeChart createPaiChart() {
DefaultPieDataset data = getDataSet();
JFreeChart chart = ChartFactory.createPieChart3D("水果产量图",  // 图表标题
data,
true, // 是否显示图例
false,
false
);
PiePlot plot = (PiePlot) chart.getPlot();
resetPiePlot(plot);
return chart;
}

private static void resetPiePlot(PiePlot plot) {
String unitSytle = "{0}={1}({2})";

plot.setNoDataMessage("无对应的数据,请重新查询。");
plot.setNoDataMessagePaint(Color.red);

//指定 section 轮廓线的厚度(OutlinePaint不能为null)
plot.setOutlineStroke(new BasicStroke(0));

//设置第一个 section 的开始位置,默认是12点钟方向
plot.setStartAngle(90);

plot.setToolTipGenerator(new StandardPieToolTipGenerator(unitSytle,
NumberFormat.getNumberInstance(),
new DecimalFormat("0.00%")));

//指定图片的透明度
plot.setForegroundAlpha(0.65f);

//引出标签显示样式
plot.setLabelGenerator(new StandardPieSectionLabelGenerator(unitSytle,
NumberFormat.getNumberInstance(),
new DecimalFormat("0.00%")));

//图例显示样式
plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(unitSytle,
NumberFormat.getNumberInstance(),
new DecimalFormat("0.00%")));
}

private static DefaultPieDataset getDataSet() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("苹果",100);
dataset.setValue("梨子",200);
dataset.setValue("葡萄",300);
dataset.setValue("香蕉",400);
dataset.setValue("荔枝",500);
return dataset;
}

}

4、同时在jsp页面里显示--柱图和饼图。
增加一个ListAllFruit4BarAndPie的action:
Java代码
<action name="ListAllFruit4BarAndPie" class="">  
    <result name="success" type="dispatcher">/WEB-INF/chart/ListAllFruit4BarAndPie.jsp</result>  
</action> 

<action name="ListAllFruit4BarAndPie" class="">
<result name="success" type="dispatcher">/WEB-INF/chart/ListAllFruit4BarAndPie.jsp</result>
</action>

ListAllFruit4BarAndPie.jsp代码:
Java代码
<%@ page contentType="text/html; charset=UTF-8" %>  
<html>  
<head>  
    <title>ListAllFruit4BarAndPie</title>  
</head>  
<body>  
    <center><h2>使用柱图和饼图列取所有水果产量</h2></center>  
    柱图:<img src="chart/ListAllFruit4Bar2.action"><br/>  
    饼图:<img src="chart/ListAllFruit4Pie2.action">  
</body>  
</html> 

<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
    <title>ListAllFruit4BarAndPie</title>
</head>
<body>
<center><h2>使用柱图和饼图列取所有水果产量</h2></center>
柱图:<img src="chart/ListAllFruit4Bar2.action"><br/>
饼图:<img src="chart/ListAllFruit4Pie2.action">
</body>
</html>


            
生成的HTML的效果图如下: 
 

 文章出处:http://liyanboss.iteye.com/blog/181282

分享到:
评论

相关推荐

    Struts2整合JFreeChar实例

    次实例是Struts2和JFreeChar的整合,下载后解压导入到ide中,输入http://localhost:8080/Struts2_JFreeChart/jfreechart/jfreeChart.action或者...就能看到相应的效果

    jfreechar 整合struts2.1.8版本生成线图,饼图,柱形图

    -- include节点是struts2中组件化的方式 可以将每个功能模块独立到一个xml配置文件中 然后用include节点引用 --&gt; &lt;include file="struts-default.xml"&gt; &lt;!-- package提供了将多个Action组织为一个模块的方式 ...

    struts1整合jfreechar,读取EXCEL数据

    带有POI包,jfreechar jar包,完整代码,导入工程即可运行

    struts2-jfreechart-plugin-2.3.15.3.jar

    struts2整合jfreechart 的工具jar文件 struts2-jfreechart-plugin-2.3.15.3.jar

    Struts2 与JFreeChart结合使用实例

    Struts2 和 JFreeChart结合使用的实例,可直接运行!

    JFreeChar实现报表

    在java的应用程序和Struts中,用JFreechar插件实现的报表!

    jfreechar包

    jfreechart开发所需要的包.分别是jcommon-1.0.17包,jfreechart-1.0.14包和struts2-jfreechart-plugin-2.3.7包.

    strut2+jfreechar生成图表

    struts2上集成jfeechar生成统计图表,配置很详细,大家可以下载看看

    一个jfreechar示例

    这是一个jfreechar示例,基于struts做的

    JFreeChar 报表

    prototype+ajax+struts+jfreechar 报表而已 希望对你有帮助之所以要2分,我穷,二.比较小但是不缩水

    struts2.0与JFreeChart整合

    关于strurs2和jfreechar的整合

    JFreechar报表

    有图像表报,柱形报表,里面的代码一一都有说明。。用struts做的还有servlet做的两个列子

    JfreeChar案例

    本资源肯能您下载后会看不懂,建议如果真的想要参考的可以下载,实在看不懂可以加我qq:979532441或者发邮件给我javalocalhost@163.com

    基于SSH2开发的水果店管理系统

    这个项目是来源于课程设计,前端做的不太好,缺乏美工,但是后台是基于SSH2的标准开发风格,包结构比较规范,分层清晰,业务逻辑比较单一,容易理解,适用于初学者开发学习。

    酒店管理系统(B/S)

    该项目从需求分析开始,有很好的分析文档,有很完整的总结ppt,所完成的功能可以使用于中小的酒店日常管理,涉及到的技术有,ssh JFreeChar,更多的信息请仔细下后看

Global site tag (gtag.js) - Google Analytics