1、在struts2中,默认的struts-default.xml中,并没有包含chart的result-type,它是插件的形式使用的。把 struts2的解压包的lib里找到struts2-jfreechart-plugin-2.0.11.jar,拷贝到你的项目的 classpath里,同时在struts.xml里面增加一个chart的result-type。
Java代码
<result-types>
<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"/>
</result-types>
<action name="ListAllFruit4Bar2" class="chart.ListAllFruit4Bar2Action">
<result name="success" type="chart">
<param name="chart">chart</param>
<param name="height">400</param>
<param name="width">700</param>
</result>
</action>
<action name="ListAllFruit4Pie2" class="chart.ListAllFruit4Pie2Action">
<result name="success" type="chart">
<param name="chart">chart</param>
<param name="height">400</param>
<param name="width">700</param>
</result>
</action>
<result-types>
<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"/>
</result-types>
<action name="ListAllFruit4Bar2" class="chart.ListAllFruit4Bar2Action">
<result name="success" type="chart">
<param name="chart">chart</param>
<param name="height">400</param>
<param name="width">700</param>
</result>
</action>
<action name="ListAllFruit4Pie2" class="chart.ListAllFruit4Pie2Action">
<result name="success" type="chart">
<param name="chart">chart</param>
<param name="height">400</param>
<param name="width">700</param>
</result>
</action>
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;
@Override
public 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;
@Override
public 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代码
<action name="ListAllFruit4BarAndPie" class="">
<result name="success" type="dispatcher">/WEB-INF/chart/ListAllFruit4BarAndPie.jsp</result>
</action>
<action name="ListAllFruit4BarAndPie" class="">
<result name="success" type="dispatcher">/WEB-INF/chart/ListAllFruit4BarAndPie.jsp</result>
</action>
ListAllFruit4BarAndPie.jsp代码:
Java代码
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>ListAllFruit4BarAndPie</title>
</head>
<body>
<center><h2>使用柱图和饼图列取所有水果产量</h2></center>
柱图:<img src="chart/ListAllFruit4Bar2.action"><br/>
饼图:<img src="chart/ListAllFruit4Pie2.action">
</body>
</html>
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>ListAllFruit4BarAndPie</title>
</head>
<body>
<center><h2>使用柱图和饼图列取所有水果产量</h2></center>
柱图:<img src="chart/ListAllFruit4Bar2.action"><br/>
饼图:<img src="chart/ListAllFruit4Pie2.action">
</body>
</html>
生成的HTML的效果图如下:
文章出处:http://liyanboss.iteye.com/blog/181282
分享到:
相关推荐
次实例是Struts2和JFreeChar的整合,下载后解压导入到ide中,输入http://localhost:8080/Struts2_JFreeChart/jfreechart/jfreeChart.action或者...就能看到相应的效果
-- include节点是struts2中组件化的方式 可以将每个功能模块独立到一个xml配置文件中 然后用include节点引用 --> <include file="struts-default.xml"> <!-- package提供了将多个Action组织为一个模块的方式 ...
总之,"struts1整合jfreechar,读取EXCEL数据"的项目涉及了Struts1 MVC框架、Apache POI库以及JFreeChart图表库的使用。通过这个项目,你可以学习到如何在Java Web应用中处理Excel数据并以图表形式展示,这对于数据...
首先,为了在Struts2中使用JFreeChart,我们需要在项目中引入JFreeChart的依赖库。这通常通过在Maven的pom.xml文件中添加对应的依赖或者在项目的类路径下添加jar包完成。 接下来,我们创建一个Action类,这是Struts...
struts2整合jfreechart 的工具jar文件 struts2-jfreechart-plugin-2.3.15.3.jar
在Struts2中使用`struts2-jfreechart-plugin`,你需要在配置文件中添加相应的拦截器和结果类型,然后在Action类中创建JFreeChart实例,并将其设置为结果返回。在对应的JSP页面上,使用Struts标签来展示图表。 总的...
2. **创建图表**:在Java类中,使用JFreeChart API创建所需的图表。例如,创建一个简单的柱状图: ```java import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.data....
1. **在Action类中创建图表:** 在Action的execute方法中,使用JFreeChart创建和定制图表。 2. **转换为HTTP响应:** 将生成的图表图像转换为字节数组,然后封装到HttpServletResponse的OutputStream中。 3. **配置...
本篇文章将深入探讨JFreeChart在与Ajax、Prototype和Struts框架集成时的使用方法,以及如何通过这些技术来构建动态的、交互式的报表。 **JFreeChart** JFreeChart 提供了丰富的图表类型,如折线图、柱状图、饼图、...
在Java应用程序和Struts框架中,生成美观且功能丰富的报表是一项关键任务。JFreeChart作为一个强大的开源图表库,为开发者提供了丰富的图表类型和高度自定义的功能,使得在Java环境中创建报表变得轻而易举。本文将...
在提供的 `ChartUtils.java` 和 `ChartUtils2.java` 文件中,我们可以看到这些方法的具体实现。 1. **创建图表** JFreeChart 提供了 `createChart()` 方法来创建图表,通常我们需要指定图表的类型(如 `ChartType....
2. **Web服务器交互**:了解如何在Servlet或JSP中处理图表请求,包括数据的序列化和反序列化,以及响应图像流。 3. **图表样式和主题**:学习如何改变图表的颜色、字体、边框等外观属性,以及应用预定义的主题。 4. ...
8. **集成到项目中**:在实际开发中,JFreeChart 可以与其他 Java 框架(如 Spring、Struts 等)或报表工具(如 JasperReports)集成,提供强大的可视化能力。 **学习路径:** 1. 首先,了解 JFreeChart 的基本...
有图像表报,柱形报表,里面的代码一一都有说明。。用struts做的还有servlet做的两个列子
4. **创建Action**:在Struts2中,创建一个Action类,该类将处理用户的请求并返回XML数据。Action中会调用之前创建的类来生成XML,然后将其发送到前端。 5. **配置Struts2**:在struts.xml配置文件中,为新的Action...
本资源肯能您下载后会看不懂,建议如果真的想要参考的可以下载,实在看不懂可以加我qq:979532441或者发邮件给我javalocalhost@163.com
在本项目中,Struts2作为前端控制器,通过配置Action类,实现了用户请求的转发和结果的返回。其强大的拦截器机制使得权限控制和日志记录等操作变得简单易行。 其次,Spring框架是SSH2的核心,它提供了一种依赖注入...
12. **Struts2 (S2)**:一个基于MVC设计模式的Java Web框架,简化Web应用的开发,提供动作调度、结果渲染等功能。 13. **润乾报表**:这是一款国产的报表工具,提供了丰富的报表设计和分析功能,适用于Java应用中的...