博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2+JFreeChart
阅读量:5324 次
发布时间:2019-06-14

本文共 4629 字,大约阅读时间需要 15 分钟。

前言

  关于Struts2入门以及提高等在这里就不介绍了,但是关于Struts2的学习有以下推荐:

    1. struts2-showcase-2.0.6.war:这个是官方自带的Demo(struts-2.0.6-all.zip\struts-2.0.6\apps目录下),非常全面,直接部署就可以了(很多朋友Struts2能学很好我估计还是直接从这里学来的)。
    2. :入了门的朋友应该都知道,strust2由webwork2和struts1.x合并起来的,但主要还是以webwork2为主,所以如果找不到Struts2的资料可以找WebWork资料看看。
    3. 的博客,他的博客的资料在中文的Struts2算是比较全的了,写得很详细。
    4. 、、:这几个代码搜索网站在我找不到中文资料甚至英文文章的时候帮了我大忙!

     关于JFreeChart入门等这里我也不打算介绍了,中文资料很多了。

正题

    下面以边帖图片和代码的方式来讲解Struts2JFreeChart的整合。

     搭建环境:首先帖一张工程的目录结构以及所需的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

 

struts2
org.apache.struts2.dispatcher.FilterDispatcher
struts2
/*

 

struts.xml

 

 

struts.properties

 

struts.ui.theme=simple

 

struts-jfreechart.xml 

400
300

   说明:这里只需要说明下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:

 

400
300
jpg

 

OK!显示的效果是一样的,只是图片格式不一样,当然这里面你可以做更多操作!

 

转载于:https://www.cnblogs.com/zhujiabin/p/4521571.html

你可能感兴趣的文章
jQuery的prop和attr方法之间区别
查看>>
Python:格式化输出
查看>>
msp430项目编程
查看>>
一步一步学Silverlight 2系列(21):如何在Silverlight中调用JavaScript
查看>>
MyBatis 常用标签用法
查看>>
CentOS7 FTP安装与配置
查看>>
web页面数据验证提醒方式
查看>>
Latex入门
查看>>
python基础介绍,关于while,for,if介绍
查看>>
算法初步-排序
查看>>
矩阵翻转(上下,左右)
查看>>
剑指offer系列39:把字符串转换成整数
查看>>
cdoj1580 简单图论问题
查看>>
Logging 日志配置格式模板
查看>>
day4 liaoxuefeng---高级特性
查看>>
js,jq.事件代理(事件委托)复习。
查看>>
regular 点滴
查看>>
mysql中时间格式
查看>>
Hadoop介绍与安装
查看>>
redis 新开端口号
查看>>