struts2整合JFreechart 饼图、折线图、柱形图

上效果图:



当然可以将数据导出图片格式存储。具体下的链接里的文件有保存成图片的操作。

因为是strust2整合JFreechart,所以strust2框架一定得搭建好。

1.导入三个包:http://download.csdn.net/detail/x46466/4328100

jcommon-1.0.16.jar

jfreechart-1.0.13.jar

struts2-jfreechart-plugin-2.0.11.jar

2.修改web.xml

<!-- Struts2的过滤器 -->

<filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

修改成:

<filter>

<filter-name>struts-prepare</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>

</filter>

<filter>

<filter-name>struts-execute</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>struts-prepare</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<filter-mapping>

<filter-name>struts-execute</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

3.写action

1)3D饼图

/**

* @author zhengxinzao

*

*/

public class PieChart3DAction extends ActionSupport {

private JFreeChart chart;

public JFreeChart getChart() {

chart = ChartFactory.createPieChart3D("学生成绩分析", getDataset(), true,

false, false);

chart

.setTitle(new TextTitle("学生成绩分析", new Font("黑体", Font.ITALIC,

22)));

LegendTitle legend = chart.getLegend();

legend.setItemFont(new Font("宋体", Font.ITALIC, 14));

PiePlot3D plot = (PiePlot3D) chart.getPlot();

plot.setLabelFont(new Font("隶书", Font.ITALIC, 18));

// 设定背景透明度(0-1.0之间)

plot.setBackgroundAlpha(0.9f);

// 设定前景透明度(0-1.0之间)

plot.setForegroundAlpha(0.50f);

String unitStyle = "{0}={1}({2})";

// 设置图例显示样式

plot.setLabelGenerator(new StandardPieSectionLabelGenerator(unitStyle,

NumberFormat.getNumberInstance(), new DecimalFormat("0.00%")));

// 设置引用标签显示样式

plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(

unitStyle, NumberFormat.getNumberInstance(), new DecimalFormat(

"0.00%")));

return chart;

}

public void setChart(JFreeChart chart) {

this.chart = chart;

}

private DefaultPieDataset getDataset() {

DefaultPieDataset dataset = new DefaultPieDataset();

dataset.setValue("不及格", 2);

dataset.setValue("及格", 8);

dataset.setValue("中等", 15);

dataset.setValue("良好", 15);

dataset.setValue("优秀", 5);

dataset.setValue("优秀1", 5);

return dataset;

}

}

2)拆线图

/**

* @author zhengxinzao

*

*/

public class LineChartAction extends ActionSupport {

private JFreeChart chart;

public JFreeChart getChart() {

chart = ChartFactory.createTimeSeriesChart("水果销量统计图", "水果", "销量",

getDataSet(), true, false, false);

// 重新设置图标标题,改变字体

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));

return chart;

}

public void setChart(JFreeChart chart) {

this.chart = chart;

}

// 返回一个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;

}

}

3)柱形图

/**

* @author zhengxinzao

*

*/

public class BarChart3DAction extends ActionSupport {

private JFreeChart chart;

public JFreeChart getChart() {

chart = ChartFactory.createBarChart3D("学生成绩分析", "成绩", "人数",

getDataset(), PlotOrientation.VERTICAL, true, false, false);

chart

.setTitle(new TextTitle("学生成绩分析", new Font("黑体", Font.ITALIC,

22)));

LegendTitle legend = chart.getLegend();

// 修改图例的字体

legend.setItemFont(new Font("宋体", Font.ITALIC, 14));

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, 22));

// 取得纵轴

NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis();

numberAxis.setLabelFont(new Font("宋体", Font.BOLD, 22));

return chart;

}

/**

* @return

*/

private CategoryDataset getDataset() {

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.addValue(2, "1班", "不及格");

dataset.addValue(4, "2班", "不及格");

dataset.addValue(5, "3班", "不及格");

dataset.addValue(8, "1班", "及格");

dataset.addValue(5, "2班", "及格");

dataset.addValue(10, "3班", "及格");

dataset.addValue(15, "1班", "中等");

dataset.addValue(10, "2班", "中等");

dataset.addValue(10, "3班", "中等");

dataset.addValue(15, "1班", "良好");

dataset.addValue(15, "2班", "良好");

dataset.addValue(15, "3班", "良好");

dataset.addValue(5, "1班", "优秀");

dataset.addValue(5, "2班", "优秀");

dataset.addValue(5, "3班", "优秀");

return dataset;

}

public void setChart(JFreeChart chart) {

this.chart = chart;

}

}

4.加入strust.xml:

<package name="jfreechar" namespace="/jfreechar" extends="jfreechart-default">

<action name="pieChart3DAction" class="com.zxz.ssh.JFreeChart.PieChart3DAction">

<result type="chart">

<param name="width">700</param>

<param name="height">400</param>

</result>

</action>

<action name="lineChartAction" class="com.zxz.ssh.JFreeChart.LineChartAction">

<result type="chart">

<param name="width">700</param>

<param name="height">400</param>

</result>

</action>

<action name="barChart3DAction" class="com.zxz.ssh.JFreeChart.BarChart3DAction">

<result type="chart">

<param name="width">700</param>

<param name="height">400</param>

</result>

</action>

</package>

5.jsp中使用:

<img alt="" src="jfreechar/pieChart3DAction" style="margin: auto;">

<br />

<img alt="" src="jfreechar/lineChartAction" style="margin: auto;">

<br />

<img alt="" src="jfreechar/barChart3DAction" style="margin: auto;">

<br />

struts2整合JFreechart 饼图、折线图、柱形图的更多相关文章

  1. JFreeChart 之折线图

    JFreeChart 之折线图 一.JFreeChart 简介 JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets ...

  2. 利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)

    利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全) 14.4 利用JFreeChart生成折线图 通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折 ...

  3. AChartEngine 安卓折线图 柱形图等利器

    http://www.eoeandroid.com/thread-548233-1-6.html 最近公司项目中要用到折线图,状态类型的图标要用到折线图,柱形图等,并且能够动态显示,在网上找了许多de ...

  4. 使用C#画图(饼图折线图)

    public PlaceHolder PlaceHolder1; //显示图像的控件 各个图像的类别名称如下: PictureType    图形种类    5    chChartTypeBarCl ...

  5. SpringMVC框架下使用jfreechart绘制折线图,柱状图,饼状图

    java代码 @Controller public class CityAction { @Autowired private CityBiz cityBiz; //柱状图 @RequestMappi ...

  6. JFreeChart绘制折线图实例

    JFreeChart是JAVA平台上的一个开放的第三方图表绘制类库.只要下载JFreeChart的类库,导入项目即可使用.下面是一个绘制折线图的实例.各处注释都已经写的比较清晰了. package c ...

  7. JAVA Swing使用JFreeChart实现折线图绘制

    效果如下: 实现步骤: 1.导入JAR包 jfreechart官网下载的zip文件中包含这两个jar包 2.代码编写 import org.jfree.chart.ChartFactory; impo ...

  8. struts2整合jfreechart

    需要的包: struts2-jfreechart-plugin-2.2.1.1.jar jfreechart-1.0.13.jar jcommon-1.0.17.jar 前台jsp页面中可以使用ifr ...

  9. java项目中显示图表:struts2整合jfreechart

    需要的包: struts2-jfreechart-plugin-2.2.1.1.jar jfreechart-1.0.13.jar jcommon-1.0.17.jar 前台jsp页面中可以使用ifr ...

随机推荐

  1. Unreal Engine 4 Radiant UI 插件入门教程(二)

    本篇章前提要求:在UE4上安装了Radiant UI插件.如果没有安装,请找其它教程(或者是笔者的其它的教程,目前正在写). 本教程的目的:探讨如何从网页元素中调用蓝图中的内容: 第一步: 写一个网页 ...

  2. 基于.NET CORE微服务框架 -surging的介绍和简单示例 (开源)

    一.前言 至今为止编程开发已经11个年头,从 VB6.0,ASP时代到ASP.NET再到MVC, 从中见证了.NET技术发展,从无畏无知的懵懂少年,到现在的中年大叔,从中的酸甜苦辣也只有本人自知.随着 ...

  3. jfinal框架新手使用之路及开发心得

    从接触jfinal这个框架到现在差不多也有一个的时间了,因为之前接触的都是像spring ,springMVC,mybatis,struts2,hibernate这种传统,大多数公司都在用的这种框架. ...

  4. SQl去获取相同记录

    以name字段为例 select * from table where name in(select name from table group by name having count(name)& ...

  5. Android Bitmap 常见的几个操作:缩放,裁剪,旋转,偏移

    Android Bitmap 相关操作 常见的几个操作:缩放,裁剪,旋转,偏移      很多操作需要 Matrix 来支持:Matrix 通过矩阵来处理位图,计算出各个像素点的位置,从而把bitma ...

  6. nopCommerce 3.9 大波浪系列 之 汉化-Roxy Fileman

    官网:http://www.roxyfileman.com/ 中文包:zh.json 1.将zh.json包拷贝到Nop.Admin项目中"Content\Roxy_Fileman\lang ...

  7. linux基础(五)

    一.linux网络原理及基础设置 ifconfig 命令:显示所有正在启动的网卡的详细信息或设定系统中网卡的IP地址. [root@bogon ~]# ifconfig ens33: flags=41 ...

  8. Opencv-2017-7-18

    橘子薄皮只吃瓤,可以称之为过滤,意思是只要我们需要的东西,去除不需要的. 图像灰度级的分布及变化. 空间域(分布)和频域(变化). 低频(变化小),高频,水平/垂直,(高/低通滤波器). 低频-类似模 ...

  9. 【SignalR学习系列】5. SignalR WPF程序

    首先创建 WPF Server 端,新建一个 WPF 项目 安装 Nuget 包 替换 MainWindows 的Xaml代码 <Window x:Class="WPFServer.M ...

  10. 【HTML】canvas学习小结

    1. 绘制基本图形 -----上下文---------------------------------------------------------- canvas.getContext('2d') ...