当前位置:编程学习 > JAVA >>

Struts2整合JFreeChart

材料:

(1)    JFreeChart的jar包:jcommon-1.0.17.jar,jfreechart.jar,struts2-jfreechart-plugin-2.1.6.jar

(2)    Struts2的jar 包,略

工具:Eclipse IDE,Server用tomcat好了

开始整合:

1.       首先新建Dynamic Web Project,并且整合上Struts2,具体jar包,配置等,不赘述。然后发布到tomcat,测试一下。顺便把JFreeChart的3个jar包也放入WEB-INF/lib下,会自动导入到project。

2.       创建一个Action类,ChartAction

[java]
package com.leon.action; 
 
import javax.annotation.Resource; 
 
import org.jfree.chart.JFreeChart; 
import org.springframework.stereotype.Controller; 
 
import com.leon.service.ChartService; 
import com.opensymphony.xwork2.ActionSupport; 
 
public class ChartAction extends ActionSupport { 
    private JFreeChart chart; 
     
    public String jfreeChart(){ 
        this.chart = createChart(); 
        return SUCCESS; 
    } 
 
    //setter and getter 
    public JFreeChart getChart() { 
        return chart; 
    } 
    public void setChart(JFreeChart chart) { 
        this.chart = chart; 
    } 
     

说明:该Action类一定要定义一个成员变量,命名为chart,并且生成setter/getter,获得chart的Action方法中为chart变量创建引用的JFreeChart实例,来自方法createChart(),如下:
[java]
public JFreeChart createChart() { 
    double[][] data = new double[][] {{1320,720,830,400,1000,1500},{500,300,400,100,450,550}};   
    String[] rowKeys = {"佣金","奖金"};  
         
    String[] columnKeys = {"201201", "201202", "201203", "201204", "201205", "201206"};   
         
    CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);    
    JFreeChart chart = ChartFactory.createBarChart3D("2012上半年佣金",    
                       "年月","金额",dataset,   
                       PlotOrientation.VERTICAL,   
                       true,   
                       false,   
                       false);   
         
    //设置标题字体,可以处理乱码问题 
    chart.getTitle().setFont(new Font("宋体", Font.BOLD,14)); 
         
    CategoryPlot plot = chart.getCategoryPlot();     
         
    //X轴 
    CategoryAxis domainAxis = plot.getDomainAxis(); 
    //设置设置X轴上的文字   
    domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11)); 
    //设置X轴的标题文字 
    domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));  
         
    //Y轴 
    ValueAxis numberaxis = plot.getRangeAxis(); 
    //设置设置Y轴上的文字   
    numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));     
    //设置Y轴的标题文字   
    numberaxis.setLabelFont(new Font("宋体", Font.BOLD, 14)); 
         
    //这句代码解决了底部汉字乱码的问题  
    chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));   
     
    return chart; 

实际项目运用中,这个产生chart的方法一般是不写在Action类中的,一般写在Service类中,让Action类调用。这边为了简单,就写在Action类中好了。关于JFreeChart的各种设置,格式等,也略去,网上很多,柱图也可以参考我的另一篇文章“Web工程采用JFreeChart作柱状图简单实例”。

3.       struts2配置文件

[html] 
<package name="jfreechart" extends="struts-default,jfreechart-default"> 
    <action name="jfreechart" method="jfreeChart" class="com.leon.action.ChartAction" > 
        <result name="success" type="chart"> 
            <param name="height">400</param> 
            <param name="width">700</param> 
        </result> 
    </action> 
</package> 
说明:注意几点,package要继承jfreechart-default,这里只是一种配置方式;然后result的type是“chart”;然后就是高度,宽度了。

4.       jsp页面

JSP页面很简单,就是标签:

[html] 
<img src="jfreechart" width="700" height="400" /> 

需要注意的是src的值实际是一个action来的,因为我的struts2过滤器通配符为/*,所以这么写,有的可能是*.do什么的,就要写成jfreechart.do。

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,