在struts2中使用JFreeChartdasdasd
来源:百度文库 编辑:神马文学网 时间:2024/04/28 11:26:09
1、在struts2中,默认的struts-default.xml中,并没有包含chart的result-type,它是插件的形式使用的。把 struts2的解压包的lib里找到struts2-jfreechart-plugin-2.0.11.jar,拷贝到你的项目的 classpath里,同时在struts.xml里面增加一个chart的result-type。
Java代码
"chart" class="org.apache.struts2.dispatcher.ChartResult"/> "ListAllFruit4Bar2" class="chart.ListAllFruit4Bar2Action"> "success" type="chart"> - "chart">chart
- "height">400
- "width">700
"ListAllFruit4Pie2" class="chart.ListAllFruit4Pie2Action"> "success" type="chart"> - "chart">chart
- "height">400
- "width">700
chart400700 chart400700
2、需要再添加jfreechart-1.0.9.jar和jcommon-1.0.12.jar(JasperReports和JFreeChart都需要的)到你的classpath里面。
3、在你的action代码里,返回一个JFreeChart对象即可。
ListAllFruit4Bar2Action代码:
Java代码
- package chart;
- import org.jfree.chart.JFreeChart;
- import com.opensymphony.xwork2.ActionSupport;
- public class ListAllFruit4Bar2Action extends ActionSupport {
- private static final long serialVersionUID = 1L;
- private JFreeChart chart;
- @Override
- public String execute() throws Exception {
- chart = FruitService.createBarChart();
- return SUCCESS;
- }
- public JFreeChart getChart() {
- return chart;
- }
- }
package chart;import org.jfree.chart.JFreeChart;import com.opensymphony.xwork2.ActionSupport;public class ListAllFruit4Bar2Action extends ActionSupport {private static final long serialVersionUID = 1L;private JFreeChart chart;@Overridepublic String execute() throws Exception {chart = FruitService.createBarChart();return SUCCESS;}public JFreeChart getChart() {return chart;}}
ListAllFruit4Pie2Action代码:
Java代码
- package chart;
- import org.jfree.chart.JFreeChart;
- import com.opensymphony.xwork2.ActionSupport;
- public class ListAllFruit4Pie2Action extends ActionSupport {
- private static final long serialVersionUID = 1L;
- private JFreeChart chart;
- @Override
- public String execute() throws Exception {
- chart = FruitService.createPaiChart();
- return SUCCESS;
- }
- public JFreeChart getChart() {
- return chart;
- }
- }
package chart;import org.jfree.chart.JFreeChart;import com.opensymphony.xwork2.ActionSupport;public class ListAllFruit4Pie2Action extends ActionSupport {private static final long serialVersionUID = 1L;private JFreeChart chart;@Overridepublic String execute() throws Exception {chart = FruitService.createPaiChart();return SUCCESS;}public JFreeChart getChart() {return chart;}}
FruitService代码:
Java代码
- package chart;
- import org.jfree.chart.ChartFactory;
- import org.jfree.chart.JFreeChart;
- import org.jfree.chart.plot.PlotOrientation;
- import org.jfree.data.category.CategoryDataset;
- import org.jfree.data.category.DefaultCategoryDataset;
- public class FruitService {
- public static JFreeChart createBarChart() {
- CategoryDataset dataset = getDataSet2();
- JFreeChart chart = ChartFactory.createBarChart3D(
- "水果产量图", // 图表标题
- "水果", // 目录轴的显示标签
- "产量", // 数值轴的显示标签
- dataset, // 数据集
- PlotOrientation.VERTICAL, // 图表方向:水平、垂直
- true, // 是否显示图例(对于简单的柱状图必须是false)
- true, // 是否生成工具
- true // 是否生成URL链接
- );
- return chart;
- }
- private static CategoryDataset getDataSet2() {
- DefaultCategoryDataset dataset = new DefaultCategoryDataset();
- dataset.addValue(100, "北京", "苹果");
- dataset.addValue(100, "上海", "苹果");
- dataset.addValue(100, "广州", "苹果");
- dataset.addValue(200, "北京", "梨子");
- dataset.addValue(200, "上海", "梨子");
- dataset.addValue(200, "广州", "梨子");
- dataset.addValue(300, "北京", "葡萄");
- dataset.addValue(300, "上海", "葡萄");
- dataset.addValue(300, "广州", "葡萄");
- dataset.addValue(400, "北京", "香蕉");
- dataset.addValue(400, "上海", "香蕉");
- dataset.addValue(400, "广州", "香蕉");
- dataset.addValue(500, "北京", "荔枝");
- dataset.addValue(500, "上海", "荔枝");
- dataset.addValue(500, "广州", "荔枝");
- return dataset;
- }
- public static JFreeChart createPaiChart() {
- DefaultPieDataset data = getDataSet();
- JFreeChart chart = ChartFactory.createPieChart3D("水果产量图", // 图表标题
- data,
- true, // 是否显示图例
- false,
- false
- );
- PiePlot plot = (PiePlot) chart.getPlot();
- resetPiePlot(plot);
- return chart;
- }
- private static void resetPiePlot(PiePlot plot) {
- String unitSytle = "{0}={1}({2})";
- plot.setNoDataMessage("无对应的数据,请重新查询。");
- plot.setNoDataMessagePaint(Color.red);
- //指定 section 轮廓线的厚度(OutlinePaint不能为null)
- plot.setOutlineStroke(new BasicStroke(0));
- //设置第一个 section 的开始位置,默认是12点钟方向
- plot.setStartAngle(90);
- plot.setToolTipGenerator(new StandardPieToolTipGenerator(unitSytle,
- NumberFormat.getNumberInstance(),
- new DecimalFormat("0.00%")));
- //指定图片的透明度
- plot.setForegroundAlpha(0.65f);
- //引出标签显示样式
- plot.setLabelGenerator(new StandardPieSectionLabelGenerator(unitSytle,
- NumberFormat.getNumberInstance(),
- new DecimalFormat("0.00%")));
- //图例显示样式
- plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(unitSytle,
- NumberFormat.getNumberInstance(),
- new DecimalFormat("0.00%")));
- }
- private static DefaultPieDataset getDataSet() {
- DefaultPieDataset dataset = new DefaultPieDataset();
- dataset.setValue("苹果",100);
- dataset.setValue("梨子",200);
- dataset.setValue("葡萄",300);
- dataset.setValue("香蕉",400);
- dataset.setValue("荔枝",500);
- return dataset;
- }
- }
package chart;import org.jfree.chart.ChartFactory;import org.jfree.chart.JFreeChart;import org.jfree.chart.plot.PlotOrientation;import org.jfree.data.category.CategoryDataset;import org.jfree.data.category.DefaultCategoryDataset;public class FruitService {public static JFreeChart createBarChart() {CategoryDataset dataset = getDataSet2();JFreeChart chart = ChartFactory.createBarChart3D("水果产量图", // 图表标题"水果", // 目录轴的显示标签"产量", // 数值轴的显示标签dataset, // 数据集PlotOrientation.VERTICAL, // 图表方向:水平、垂直true, // 是否显示图例(对于简单的柱状图必须是false)true, // 是否生成工具true // 是否生成URL链接);return chart;}private static CategoryDataset getDataSet2() {DefaultCategoryDataset dataset = new DefaultCategoryDataset();dataset.addValue(100, "北京", "苹果");dataset.addValue(100, "上海", "苹果");dataset.addValue(100, "广州", "苹果");dataset.addValue(200, "北京", "梨子");dataset.addValue(200, "上海", "梨子");dataset.addValue(200, "广州", "梨子");dataset.addValue(300, "北京", "葡萄");dataset.addValue(300, "上海", "葡萄");dataset.addValue(300, "广州", "葡萄");dataset.addValue(400, "北京", "香蕉");dataset.addValue(400, "上海", "香蕉");dataset.addValue(400, "广州", "香蕉");dataset.addValue(500, "北京", "荔枝");dataset.addValue(500, "上海", "荔枝");dataset.addValue(500, "广州", "荔枝");return dataset;}public static JFreeChart createPaiChart() {DefaultPieDataset data = getDataSet();JFreeChart chart = ChartFactory.createPieChart3D("水果产量图", // 图表标题data,true, // 是否显示图例false,false);PiePlot plot = (PiePlot) chart.getPlot();resetPiePlot(plot);return chart;}private static void resetPiePlot(PiePlot plot) {String unitSytle = "{0}={1}({2})";plot.setNoDataMessage("无对应的数据,请重新查询。");plot.setNoDataMessagePaint(Color.red);//指定 section 轮廓线的厚度(OutlinePaint不能为null)plot.setOutlineStroke(new BasicStroke(0));//设置第一个 section 的开始位置,默认是12点钟方向plot.setStartAngle(90);plot.setToolTipGenerator(new StandardPieToolTipGenerator(unitSytle,NumberFormat.getNumberInstance(),new DecimalFormat("0.00%")));//指定图片的透明度plot.setForegroundAlpha(0.65f);//引出标签显示样式plot.setLabelGenerator(new StandardPieSectionLabelGenerator(unitSytle,NumberFormat.getNumberInstance(),new DecimalFormat("0.00%")));//图例显示样式plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(unitSytle,NumberFormat.getNumberInstance(),new DecimalFormat("0.00%")));}private static DefaultPieDataset getDataSet() {DefaultPieDataset dataset = new DefaultPieDataset();dataset.setValue("苹果",100);dataset.setValue("梨子",200);dataset.setValue("葡萄",300);dataset.setValue("香蕉",400);dataset.setValue("荔枝",500);return dataset;}}
4、同时在jsp页面里显示--柱图和饼图。
增加一个ListAllFruit4BarAndPie的action:
Java代码
"ListAllFruit4BarAndPie" class=""> "success" type="dispatcher">/WEB-INF/chart/ListAllFruit4BarAndPie.jsp /WEB-INF/chart/ListAllFruit4BarAndPie.jsp
ListAllFruit4BarAndPie.jsp代码:
Java代码
- <%@ page contentType="text/html; charset=UTF-8" %>
ListAllFruit4BarAndPie 使用柱图和饼图列取所有水果产量
- 柱图:"chart/ListAllFruit4Bar2.action">
- 饼图:"chart/ListAllFruit4Pie2.action">
<%@ page contentType="text/html; charset=UTF-8" %>ListAllFruit4BarAndPie 柱图: 使用柱图和饼图列取所有水果产量
饼图:
生成的HTML的效果图如下:
在struts2中使用JFreeChartdasdasd
FreeMarker在struts2.0,JAVA,web中
struts2中input和是s:textfield的使用
Struts2中使用注解 管理Action方法的权限
在struts2中实现去掉后缀及url重写
struts2 ckeditor 使用示例
struts2中struts.properties
Struts2中 s:iterator 标签的使用详解及OGNL用法
struts2中使用kindeditor上传图片(包括jmagic压缩图片)
struts2拦截器的使用
详解struts2中struts.properties
struts2.0中配置tiles
详解struts2中struts.properties
在struts2的Action中返回Ajax显示需要的信息
在struts2的Action中返回Ajax显示需要的信息2
在Eclipse中使用CVS
在Eclipse中使用Hibernate
在Eclipse中使用Hibernate
在Blog中使用Tags?
在ASP中使用RSS
struts2 标签的使用 s:iterator
struts2 标签的使用 s:iterator
Struts2的使用注解配置Action
Struts2