struts2整合JFreechart 饼图、折线图、柱形图
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 饼图、折线图、柱形图的更多相关文章
- JFreeChart 之折线图
JFreeChart 之折线图 一.JFreeChart 简介 JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets ...
- 利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)
利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全) 14.4 利用JFreeChart生成折线图 通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折 ...
- AChartEngine 安卓折线图 柱形图等利器
http://www.eoeandroid.com/thread-548233-1-6.html 最近公司项目中要用到折线图,状态类型的图标要用到折线图,柱形图等,并且能够动态显示,在网上找了许多de ...
- 使用C#画图(饼图折线图)
public PlaceHolder PlaceHolder1; //显示图像的控件 各个图像的类别名称如下: PictureType 图形种类 5 chChartTypeBarCl ...
- SpringMVC框架下使用jfreechart绘制折线图,柱状图,饼状图
java代码 @Controller public class CityAction { @Autowired private CityBiz cityBiz; //柱状图 @RequestMappi ...
- JFreeChart绘制折线图实例
JFreeChart是JAVA平台上的一个开放的第三方图表绘制类库.只要下载JFreeChart的类库,导入项目即可使用.下面是一个绘制折线图的实例.各处注释都已经写的比较清晰了. package c ...
- JAVA Swing使用JFreeChart实现折线图绘制
效果如下: 实现步骤: 1.导入JAR包 jfreechart官网下载的zip文件中包含这两个jar包 2.代码编写 import org.jfree.chart.ChartFactory; impo ...
- struts2整合jfreechart
需要的包: struts2-jfreechart-plugin-2.2.1.1.jar jfreechart-1.0.13.jar jcommon-1.0.17.jar 前台jsp页面中可以使用ifr ...
- java项目中显示图表:struts2整合jfreechart
需要的包: struts2-jfreechart-plugin-2.2.1.1.jar jfreechart-1.0.13.jar jcommon-1.0.17.jar 前台jsp页面中可以使用ifr ...
随机推荐
- Struts2框架05 result标签的类型
1 result标签是干什么的 就是结果,服务器处理完返回给浏览器的结果:是一个输出结果数据的组件 2 什么时候需要指定result标签的类型 把要输出的结果数据按照我们指定的数据类型进行处理 3 常 ...
- Java基础语法<十一> 异常 断言 日志 调试
1 处理错误 1.1 异常分类 Error类层次描述了Java运行时系统的内部错误和资源耗尽错误. 设计Java程序时,主要关注Exception层次结构. 由程序错误导致的异常属于RuntimeEx ...
- 用Node.JS+MongoDB搭建个人博客(安装环境)(一)
Node.JS是什么? Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. Nod ...
- IBATIS动态SQL(1)
转:IBATIS动态SQL 直接使用JDBC一个非常普遍的问题就是动态SQL.使用参数值.参数本身和数据列都是动态SQL,通常是非常困难的.典型的解决办法就是用上一堆的IF-ELSE条件语句和一连串的 ...
- nopcommerce 开源商城
http://www.nopchina.net/ 中文网 http://www.nopcommerce.com/downloads.aspx 源码下载 如果要在数据库中添加一个新的数据表,需要按 ...
- 【干货】一篇文章学会Gulp(Getting started with Gulp)
抛开Grunt,又有一个新的自动化构建系统成为新的领跑者.那就是Gulp. Gulp是一种直观.自动化构建的工具. 为什么前端er会这么感兴趣Gulp?我相信大家都有个思想:要么不做事,要做事就要把事 ...
- 聊聊synchronized的锁问题
本文不会特别深入细致地讨论synchronized,只是做一个通俗易懂的说明,以及看清一类问题的本质,希望能给大家一点启发. 问题描述 有一个类A,提供了三个方法.分别是静态同步方法,非静态同步方法, ...
- Java 方法重载,方法重写(覆盖),继承等细节注意
1.方法重载(method overload)的具体规范 如果有两个方法的方法名相同,但参数不一致,那么可以说一个方法是另一个方法的重载. 一.方法名一定要相同. 二.方法的参数表必须不同,包括参数的 ...
- 爬虫协议robots
前面的话 Robots协议(也称为爬虫协议.机器人协议等)全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页 ...
- git分支管理之创建与合并分支
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...