struts2整合jfreechart

来源:互联网 发布:织梦cms视频教程下载 编辑:程序博客网 时间:2024/05/01 16:20

 [转自]http://renren4.javaeye.com/blog/328200

首先去官方网站http://www.jfree.org/jfreechart/download.html,将对应的资源包:jfreechart-1.0.11.zip、jfreechart-1.0.11-javadocs.zip、jcommon-1.0.14.zip下载下来,并配置到项目中。

本例源代码:http://download.csdn.net/source/852878

生成3D饼图

   public class PieChartDemo
    {
       public static void main(String[] args) throws IOException
      {
           DefaultPieDataset data = getDataSet();
  
            //JFreeChart chart = ChartFactory.createPieChart(
           //生成3D饼图
            JFreeChart chart = ChartFactory.createPieChart3D(
               "图书销量统计图",  // 图表标题
               getDataSet(), //数据
               true, // 是否显示图例
              false, //是否显示工具提示
               false //是否生成URL
           );
           //重新设置图标标题,改变字体
          chart.setTitle(new TextTitle("图书销量统计图", new Font("黑体", Font.ITALIC , 22)));
          //取得统计图标的第一个图例
          LegendTitle legend = chart.getLegend(0);
         //修改图例的字体
          legend.setItemFont(new Font("宋体", Font.BOLD, 14));
          //获得饼图的Plot对象
          PiePlot plot = (PiePlot)chart.getPlot();
           //设置饼图各部分的标签字体
           plot.setLabelFont(new Font("隶书", Font.BOLD, 18));
           //设定背景透明度(0-1.0之间)
           plot.setBackgroundAlpha(0.9f);
          //设定前景透明度(0-1.0之间)
           plot.setForegroundAlpha(0.50f);
 
           FileOutputStream fos = new FileOutputStream("book.jpg");
          ChartUtilities.writeChartAsJPEG(
               fos, //输出到哪个输出流
               1, //JPEG图片的质量,0~1之间
               chart, //统计图标对象
               800, //宽
              600,//宽
               null //ChartRenderingInfo 信息
               );
           fos.close();
      }
 
       private static DefaultPieDataset getDataSet()
       {
           DefaultPieDataset dataset = new DefaultPieDataset();
           dataset.setValue("J2ME嵌入式开发",47000);
           dataset.setValue("J2EE web应用开发",38000);
           dataset.setValue("基于J2EE的Ajax开发",31000);
           dataset.setValue("JavaScript权威指南",29000);
           dataset.setValue("J2SE应用开发",25000);
           return dataset;
       }
   }

LineChartDemo

    public class LineChartDemo
    {
        public static void main(String[] args) throws IOException
        {
            JFreeChart chart = ChartFactory.createTimeSeriesChart(
                                "水果销量统计图", // 图表标题
                                "水果", // 目录轴的显示标签
                               "销量", // 数值轴的显示标签
                                getDataSet(), // 数据集
                              //PlotOrientation.HORIZONTAL , // 图表方向:水平
                               //PlotOrientation.VERTICAL , // 图表方向:垂直
                               true,   // 是否显示图例(对于简单的柱状图必须是false)
                               false,  // 是否生成工具
                               false   // 是否生成URL链接
                               );
                              
          //重新设置图标标题,改变字体
           chart.setTitle(new TextTitle("水果销量统计图", new Font("黑体", Font.ITALIC , 22)));
           //取得统计图标的第一个图例
           LegendTitle legend = chart.getLegend(0);
           //修改图例的字体
           legend.setItemFont(new Font("宋体", Font.BOLD, 14));
 
           XYPlot plot = (XYPlot)chart.getPlot();
           //取得横轴
          ValueAxis categoryAxis = plot.getDomainAxis();
           //设置横轴显示标签的字体
           categoryAxis.setLabelFont(new Font("宋体" , Font.BOLD , 22));
           categoryAxis.setTickLabelFont(new Font("宋体" , Font.BOLD , 18));
           //取得纵轴
           NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();
           //设置纵轴显示标签的字体
           numberAxis.setLabelFont(new Font("宋体" , Font.BOLD , 22));
 
           FileOutputStream fos = null;
           fos = new FileOutputStream("fruitLine.jpg");
           //将统计图标输出成JPG文件
           ChartUtilities.writeChartAsJPEG(
               fos, //输出到哪个输出流
               1, //JPEG图片的质量,0~1之间
               chart, //统计图标对象
               800, //宽
               600,//宽
               null //ChartRenderingInfo 信息
               );
          fos.close();
       }
      //返回一个CategoryDataset实例
       private static XYDataset getDataSet()
      {
           TimeSeries apple =new TimeSeries("苹果",Month.class);
           apple.add(new Month(10,2007),3900);
           apple.add(new Month(11,2007),900);
           apple.add(new Month(12,2007),2500);
           apple.add(new Month(1,2008),3900);
           apple.add(new Month(2,2008),2000);
          apple.add(new Month(3,2008),3300);
          
           TimeSeries orange=new TimeSeries("桔子",Month.class);
           orange.add(new Month(10,2007),3300);
           orange.add(new Month(11,2007),2680);
           orange.add(new Month(12,2007),2000);
           orange.add(new Month(1,2008),1900);
           orange.add(new Month(2,2008),2000);
           orange.add(new Month(3,2008),2300);
          
           TimeSeriesCollection dataset=new TimeSeriesCollection();
           dataset.addSeries(apple);
           dataset.addSeries(orange);
           return dataset;
       }
   }

上面是测试,接下来是Struts2集成jfreechart,本例源代码:http://download.csdn.net/source/852878

配置struts2,web.xml

       <!-- 定义Struts2的FilterDispathcer的Filter -->
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
       </filter>
  
        <!-- FilterDispatcher用来初始化struts2并且处理所有的WEB请求。 -->
        <filter-mapping>
           <filter-name>struts2</filter-name>
           <url-pattern>/*</url-pattern>
       </filter-mapping>

struts.xml

        <package name="jCuckoo" namespace="" extends="jfreechart-default">//此处需要注意
            <action name="bookChart" class="jCuckoo.ChartAction">
                <result type="chart">
                   <param name="width">600</param>
                   <param name="height">450</param>
               </result>
           </action>
           <action name="barChart3Dt" class="jCuckoo.BarChart3DAction">
               <result type="chart">
                   <param name="width">600</param>
                   <param name="height">450</param>
               </result>
           </action>
      </package>

同时修改struts2-jfreechart-plugin-2.0.14.jar中的struts2-jfreechart-plugin-2.0.14.jar

        <package name="jfreechart-default" extends="struts-default">//此处注意
      
            <result-types>
   .             <result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult">
                    <param name="height">150</param>
                    <param name="width">200</param>
                </result-type>
            </result-types>
       </package>

ChartAction

    public class ChartAction extends ActionSupport {
  
        private JFreeChart chart;
      public JFreeChart getChart()
        {
            chart = ChartFactory.createPieChart3D(
                "图书销量统计图",  // 图表标题
                getDataSet(), //数据
               true, // 是否显示图例
               false, //是否显示工具提示
               false //是否生成URL
           );
           //重新设置图标标题,改变字体
           chart.setTitle(new TextTitle("图书销量统计图", new Font("黑体", Font.ITALIC , 22)));
           //取得统计图标的第一个图例
          LegendTitle legend = chart.getLegend(0);
           //修改图例的字体
           legend.setItemFont(new Font("宋体", Font.BOLD, 14));
           //获得饼图的Plot对象
           PiePlot plot = (PiePlot)chart.getPlot();
           //设置饼图各部分的标签字体
          plot.setLabelFont(new Font("隶书", Font.BOLD, 18));
           //设定背景透明度(0-1.0之间)
          plot.setBackgroundAlpha(0.9f);
           //设定前景透明度(0-1.0之间)
           plot.setForegroundAlpha(0.50f);
           return chart;
       }
 
       private DefaultPieDataset getDataSet()
       {
           DefaultPieDataset dataset = new DefaultPieDataset();
           dataset.setValue("J2ME嵌入式开发",47000);
          dataset.setValue("J2EE web应用开发",38000);
           dataset.setValue("基于J2EE的Ajax开发",31000);
           dataset.setValue("JavaScript权威指南",29000);
           dataset.setValue("J2SE应用开发",25000);
           return dataset;
       }
   }


BarChart3DAction

   public class BarChart3DAction  extends ActionSupport
    {
        private JFreeChart chart;
       public JFreeChart getChart(){
            chart = ChartFactory.createBarChart3D(
                                "图书销量统计图", // 图表标题
                                "图书", // 目录轴的显示标签
                                "销量", // 数值轴的显示标签
                                getDataSet(), // 数据集
                               //PlotOrientation.HORIZONTAL , // 图表方向:水平
                              PlotOrientation.VERTICAL , // 图表方向:垂直
                               false,  // 是否显示图例(对于简单的柱状图必须是false)
                               false,  // 是否生成工具
                               false   // 是否生成URL链接
                               );
                              
           //重新设置图标标题,改变字体
          chart.setTitle(new TextTitle("图书销量统计图", new Font("黑体", Font.ITALIC , 22)));
           CategoryPlot plot = (CategoryPlot)chart.getPlot();
           //取得横轴
           CategoryAxis categoryAxis = plot.getDomainAxis();
           //设置横轴显示标签的字体
           categoryAxis.setLabelFont(new Font("宋体" , Font.BOLD , 22));
           //分类标签以45度角倾斜
           categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
           categoryAxis.setTickLabelFont(new Font("宋体" , Font.BOLD , 18));
           //取得纵轴
           NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();
           //设置纵轴显示标签的字体
           numberAxis.setLabelFont(new Font("宋体" , Font.BOLD , 22));
 
           return chart;
       }
      //返回一个CategoryDataset实例
       private  CategoryDataset getDataSet()
       {
           DefaultCategoryDataset dataset = new DefaultCategoryDataset();
           dataset.addValue(47000 , "" , "J2ME嵌入式开发");
           dataset.addValue(38000 , "" , "J2EE web应用开发");
           dataset.addValue(31000 , "" , "基于J2EE的Ajax开发");
           dataset.addValue(29000 , "" , "JavaScript权威指南");
           dataset.addValue(25000 , "" , "J2SE应用开发");
           return dataset;
       }


index.jsp

     <body>
       <img src="bookChart.action"/>
       <img src="barChart3Dt.action"/>
     </body>

原创粉丝点击