jFreeChart与Struts2的组合,将jFreeChart作为显示视图

jFreeChart与Struts2的组合:
    一,加入Struts2支持
    二,加入struts2-jfreechart-plugin-2.1.6.jar
        注意:有的版本的此包有点小问题,此包内有一个struts-plugin.xml内容如下:

<struts>
            <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>
       
        </struts>
 

        若该package没有继承struts-default则需要手动加上extends="struts-default"再重新用jdk打包
   
    三,在action中生成我们的图片报表

/**
         * 生成图形报表
         *
         * @author 张明学
         *
         */
        @SuppressWarnings("serial")
        public class ViewResultAction extends ActionSupport {
       
            /**
             * 这里的JFreeChart的变量名称必须是chart(这是jfreeChart插件不足的地方)
             */
            private JFreeChart chart = null;
       
            private List<String> interest = null;
       
            @SuppressWarnings("unchecked")
            @Override
            public String execute() throws Exception {
                ActionContext context = ActionContext.getContext();
                Map application = context.getApplication();
       
                for (String inter : interest) {
                    if (application.get(inter) == null) {
                        application.put(inter, 1);
                    } else {
                        application.put(inter, (Integer) application.get(inter) + 1);
                    }
                }
                DefaultCategoryDataset dataset = new DefaultCategoryDataset();
                dataset.setValue((Integer) application.get("football"), "", "足球");
                dataset.setValue((Integer) application.get("volleyball"), "", "排球");
                dataset.setValue((Integer) application.get("basketball"), "", "蓝球");
                dataset.setValue((Integer) application.get("badminton"), "", "羽毛球");
                // 设置标题样式
                chart = ChartFactory.createBarChart3D("兴趣统计结果", "项目", "结果", dataset,
                        PlotOrientation.VERTICAL, true, false, false);
                chart.setTitle(new TextTitle("兴趣统计结果", new Font("黑体", Font.BOLD, 22)));
                // 报表中间部分
                CategoryPlot plot = (CategoryPlot) chart.getPlot();
                // 设置水平方向的样式
                CategoryAxis categoryAxis = plot.getDomainAxis();
                categoryAxis.setLabelFont(new Font("宋体", Font.BOLD, 20));
                categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
                // 设置垂直方向的样式
                NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis();
                numberAxis
                        .setLabelFont(new Font("仿宋", Font.LAYOUT_NO_LIMIT_CONTEXT, 18));
                // 获得报表下面部分
                // chart.getLegend();
       
                return SUCCESS;
            }
       
            public List<String> getInterest() {
                return interest;
            }
       
            public void setInterest(List<String> interest) {
                this.interest = interest;
            }
       
            public JFreeChart getChart() {
                return chart;
            }
       
            public void setChart(JFreeChart chart) {
                this.chart = chart;
            }
       
        }
 

   
    四,struts.xml中的配置:

<struts>
            <package name="mengya" extends="jfreechart-default">
                <action name="viewResult" class="com.mengya.action.ViewResultAction">
                    <result name="success" type="chart">
                        <!-- 指定图形报表的大小 -->
                        <param name="height">600</param>
                        <param name="width">800</param>
                    </result>
                </action>
            </package>
        </struts>

 

       
        注意:由于在第二步的时候将jfreechart-default包继承了struts-default故这里可以直接继承jfreechart-default
        这样做的目地是result的type类型为chart,这个类型在struts-default中没有定义,是jreechart-default中定义的
        故我们要引入jfreechart-default包,但又要引入struts-default,因此我们可以让jfreechart-default包继承了struts-default。
        而在struts.xml中继承jfreechart-default就可以了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值