我在只实现了柱状图,其它的图形可以参看我的JavaWeb部门的中图形报表说明!
步骤说明:
1,导入log4j.jar,jfreechart-0.9.18.jar,jcommon-0.9.3.jar三个jar包
2,在某个包中写入BarChart.java类
private DefaultCategoryDataset dataset = new DefaultCategoryDataset();
public void setValue(int value, String rowKey, String columnKey) {
dataset.setValue(value, rowKey, columnKey);
}
public String generateBarChart(String title, HttpSession session,PrintWriter pw,int width,int heigth) {
String filename = null;
try {
JFreeChart chart = ChartFactory
.createBarChart3D(title, null, null, dataset,
PlotOrientation.VERTICAL, true, false, false);
chart.setBackgroundPaint(Color.WHITE);
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis domainAxis = plot.getDomainAxis();
//domainAxis.setVerticalCategoryLabels(false);
plot.setDomainAxis(domainAxis);
ValueAxis rangeAxis = plot.getRangeAxis();
// 设置最高的一个 Item 与图片顶端的距离
rangeAxis.setUpperMargin(0.15);
// 设置最低的一个 Item 与图片底端的距离
rangeAxis.setLowerMargin(0.15);
plot.setRangeAxis(rangeAxis);
BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseOutlinePaint(Color.BLACK);
// 设置 Wall 的颜色
renderer.setWallPaint(Color.gray);
// 设置每种水果代表的柱的颜色
renderer.setSeriesPaint(0, new Color(0, 0, 255));
renderer.setSeriesPaint(1, new Color(0, 100, 255));
renderer.setSeriesPaint(2, Color.GREEN);
// 设置每个地区所包含的平行柱的之间距离
renderer.setItemMargin(0.1);
// 显示每个柱的数值,并修改该数值的字体属性
//renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelsVisible(true);
plot.setRenderer(renderer);
// 设置柱的透明度
plot.setForegroundAlpha(0.6f);
// 设置地区、销量的显示位置
plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
ChartRenderingInfo info = new ChartRenderingInfo(
new StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, width, heigth,
info, session);
ChartUtilities.writeImageMap(pw, filename, info);
//pw.flush();
//若你的访问数据库的代码和显示图片同在一个jsp中,就里就不能去掉**********
//否则你就在这要注释掉
} catch (Exception e) {
e.printStackTrace();
}
return filename;
}
3,配置web.xml,在web.xml中添加如下内空:
<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>
org.jfree.chart.servlet.DisplayChart
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/DisplayChart</url-pattern>
</servlet-mapping>
4,在要显示图片的jsp中添加内容:
在action中去访问数据库,我这就不访问了
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
BarChart bch = new BarChart();
//第一组
bch.setValue(200,"苹果","武汉");
bch.setValue(400,"香蕉","武汉");
bch.setValue(500,"橘子","武汉");
bch.setValue(300,"梨子","武汉");
//第二组
bch.setValue(400,"苹果","黄冈");
bch.setValue(300,"香蕉","黄冈");
bch.setValue(100,"橘子","黄冈");
bch.setValue(300,"梨子","黄冈");
//第三组
bch.setValue(600,"苹果","A");
bch.setValue(300,"香蕉","A");
bch.setValue(400,"橘子","A");
bch.setValue(200,"梨子","A");
HttpSession session=request.getSession();
//System.out.println("默认的格式:"+response.getCharacterEncoding());
//这里在改成gbk格式,否则在显示图片的jsp中不能显示中文
response.setCharacterEncoding("gbk");
String filename=null;
try {
filename = bch.generateBarChart("水果比图", session,
new PrintWriter(response.getWriter()),700,500);
} catch (IOException e) {
e.printStackTrace();
}
String url = request.getContextPath() + "/DisplayChart?filename="
+ filename;
request.setAttribute("filename", filename);
request.setAttribute("url", url);
try {
request.setCharacterEncoding("gbk");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return mapping.findForward("show");
}
5,有两点要注意:
***************第一:在工具类BarChart.java:把pw.flush();去掉或注释掉
***************第二:在filename = bch.generateBarChart("水果比图", session,
new PrintWriter(response.getWriter()),700,500);
之前一定要//System.out.println("默认的格式:"+response.getCharacterEncoding());
//这里在改成gbk格式,否则在显示图片的jsp中不能显示中文
response.setCharacterEncoding("gbk");
6,在jsp中:
<table align="center" border="0">
<tr>
<td>
<P ALIGN="CENTER">
<img src=${url } width=700 height=500 border=1 usemap=${filename }>
</p>
</td>
</tr>
</table>
分享到:
相关推荐
将JFreeChart与Struts2结合,可以方便地在Web应用程序中生成动态图形报表。以下是对这一技术的详细介绍。 1. **JFreeChart介绍** JFreeChart是一个开源的Java图形库,它提供了丰富的图表类型,包括但不限于: - ...
在实际项目中,数据可视化是必不可少的一部分,饼状图形报表就是一种常用的数据展示方式,能够直观地反映出各部分数据在整体中的比例关系。本文将深入探讨如何利用Struts2框架来实现饼状图形报表。 首先,我们需要...
本篇文章将深入探讨如何使用Java技术栈,特别是Struts和JFreeChart库来实现Web图形报表。Struts作为MVC框架,是Java Web开发中的一个经典选择,而JFreeChart则是一个强大的图表生成库,两者结合可以创建出丰富的交互...
在这个特定的场景中,我们关注的是如何在JSP页面上生成图形报表,包括饼状图、折线图和条状图。这通常涉及到数据可视化,它能够帮助用户更好地理解和解析大量信息。 生成这些图形报表,开发者通常会利用JavaScript...
在Struts2中整合jasperReports,可以实现Web应用中的动态报表生成和展示功能。首先,我们需要确保系统环境中已经安装了jasperReports库以及其依赖的iReport设计工具。iReport是用于设计jasperReports报表的图形化...
报表中的数据通常通过SQL查询从数据库获取,也可以是XML、CSV等其他数据格式。 在Struts2中,我们还需要配置Action和Result类型,以便正确地处理报表请求和响应。例如,可以创建一个专门的"ireport"拦截器,用于...
在这个"Web中JFreeChart图形报表小例子"中,我们将探讨如何在Struts 2.0框架下集成JFreeChart来在JSP页面上展示图形报表。 首先,我们需要理解JFreeChart的基本用法。JFreeChart提供了丰富的API,可以方便地创建和...
在"struts2图形报表"和"strut2和JFreeChart的集成图表.rar"这两个文件中,可能包含了如何在Struts2项目中使用JFreeChart创建和展示图表的示例代码、配置文件以及相关的文档说明。开发者可以通过研究这些示例,了解...
例如,你可以创建一个Javabean来表示报表中的每一行数据,包含各个字段属性。这样,你可以将数据库查询的结果转换为Javabean的集合,然后传递给JasperReports进行报表生成。 JasperReports库允许开发者通过XML或者...
Struts2、iReport与JasperReport是Java开发中用于构建高效、动态Web应用程序和报表生成的工具。在这个项目中,这些技术结合在一起,提供了一种强大的报表导出解决方案。以下是对这些关键技术及其在项目中的应用的...
在这个报表项目中,Struts2可能是用于处理用户请求,控制业务流程,以及与后台数据库进行交互的核心框架。 BIRT(Business Intelligence and Reporting Tools)是Eclipse基金会的一个开源报表系统,用于生成高质量...
在本主题中,我们将深入探讨如何使用JasperReport、iReport以及Struts2框架来构建一个强大的报表解决方案。 JasperReport是一个开源的Java报表库,它提供了丰富的报告设计功能,支持多种数据源,如数据库、CSV文件...
Company类中的compareTo方法用于在报表中对数据进行排序。 2. **创建Action**:在Struts2框架中,Action类是处理用户请求的核心。我们需要创建一个Action类,例如`ReportAction`,该类将负责获取报表所需的数据并...
同时,报表中的参数也可以动态传入,提高报表的灵活性。 - **性能优化**:对于大数据量的报表,可以考虑分页处理,避免一次性加载大量数据导致内存溢出。 - **错误处理**:在Action中添加异常处理代码,以处理可能...
- 在Struts2的Action类中,编写方法来加载报表模板,执行SQL查询,填充数据,然后生成报表。 - 使用Struts2的Result类型,如stream或freemarker,将报表以流形式发送到客户端浏览器。 4. 示例代码: 一个简单的...
在这个实例中,"META-INF"目录通常包含项目的元数据,如MANIFEST.MF文件,而"fonts"目录可能包含了报表中使用的特殊字体文件,确保报表在不同系统下显示一致。在实际开发中,这些资源文件都是必不可少的组成部分,...
这篇名为“在Struts2中使用JFreeChart”的博客文章,很可能是介绍如何在Struts2框架下集成并使用JFreeChart来创建报表。JasperReports是另一个强大的报表工具,它可以生成复杂的报表,并支持多种数据源。当...
struts2 结合强大的图形报表开发包进行集成开发,能够降低系统的耦合和灵活的报表开发方式,展现不同的图形化报表,给企业带来更加精美的报表解决方案。
ireport的子报表功能允许在一个主报表中嵌套其他报表,这样可以在一个报表中展示多层数据结构,提高信息的组织性和可读性。子报表通常通过主报表中的参数传递数据,可以独立设计并多次复用,增强了报表的复用性和...