JFreeChart在webwork中的应用

前言:
webwork是当今流行的J2EE几大架构之一,在实际的项目中,我们往往要在webwork的输出流中调用一个图表chart,代替直接用response.out输出。那么我们应该怎么样去实现呢?本文将详细阐述JFreeChart在webwork中的应用。本文调试环境为windows2000+tomcat5.0。共分三个部分:
1,JFreeChart简介
2,webwork简介及webwork,JFreeChart应用环境的配置
3,JFreeChart在webwork中的应用的具体例子

一:JFreeChart简介:
JFreeChart是开放源代码项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。
一.JFreeChart创建WEB图表的基本知识
JFreeChart主要是由三个类构成:
org.jfree.chart.servlet.ChartDeleter
org.jfree.chart.servlet.DisplayChart
org.jfree.chart.servlet.ServletUtilities
在下面做一下简单的介绍:
ChartDeleter继承自HttpSessionBindingListener,用于实现当Session关闭时,删除
临时目中的图象文件。
ServletUtilities有一系列方法:
saveChartAs*;saveChartAs*是把图表按照不同的形式存储为图象;
sendTempFile方法被重载了很多次,用于把文件流发送response;
DisplayChart继承自Httpservlet用于处理显示图象;

二:webwork简介及webwork,JFreeChart应用环境的配置
WebWork是一个源代码开放的Web应用框架,用于简化基于Web的应用开发。
WebWork的最大优点是它的简单性和灵活性。WebWork有一个很小的API,它使开发者可以迅速进行开发工作。
WebWork是许多特性和适用性的组合,包括使用variourview技术,
例如JavaServerPages(JSP),Velocity,ExtensibleStylesheetLanguageTransformations
Specification(XSLT)和JasperReporters。还有,webwork对JFreechart有非常好的支持。
从这里下载webwork-2.0-beta2.zip。
(
https://webwork.dev.java.net/servlets/ProjectDocumentList )
解压缩文件,你可以在webwork-2.0\lib\optional目录下找到jfreechart-0.9.13.jar。
你也可以从这里下载最新的jfreechart-0.9.15.zip。
http://www.jfree.org/jfreechart/index.html
本文使用的是jfreechart-0.9.15.zip。
web应用的目录结构图如下所示:
/webapp/WEB-INF
/webapp/WEB-INF/web.xml
/webapp/WEB-INF/webwork.tld
/webapp/WEB-INF/classes
/webapp/WEB-INF/classes/xwork.xml
/webapp/WEB-INF/lib
接下来请务必将下面这些包放在/webapp/WEB-INF/lib目录下。
1。commons-logging.jar
2。ognl-2.5.1.jar
3。oscore-2.2.1.jar
4。xwork-1.0-beta.jar
5。webwork-2.0-beta.jar
下面是可以选择的包,具体根据项目需要来决定是否添加:
cos-multipart.jar
pell-multipart.jar
velocity-dep-1.3.jar
2.1配置你的xwork.xml
文件像下面例子一样,注意一定要包含webwork-default.xml。
<!DOCTYPExworkPUBLIC"-//OpenSymphonyGroup//XWork1.0//EN"

"http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<includefile="webwork-default.xml"/>
<packagename="default"extends="webwork-default">
...
</package>
</xwork>

webwork-default.xml这个文件在webwork-2.0-beta.jar里面。
2.2修改web.xml文件
修改web.xml文件以包含webwork的设置,如何设置的内容,请察看
$WEBWORK/src/resource/web/WEB-INF/web.xml文件。
2.3Taglib部分的选择
如果你不打算使用taglib、Velocity、或者XSLT,仅仅只需要在web.xml中不要包含这些内容就可以了。
2.4Log的设置
Webwork使用log4j,如果你的appserver没有安装log4j,你需要增加log4j,复制log4j.jar文件到合适的lib目录。如果你使用tomcat,那么安装目录是$TOMCAT_HOME\lib,当然也可以安装到你的web应用的路径。但需要注意的是如果appserver也适用log4j,你需要小心版本冲突。
2.5解压缩jfreechart-0.9.15.zip
jfreechart-0.9.15目录下的jfreechart-0.9.15.jar和lib/jcommon-0.9.0.jar,lib/gnujaxp.jar都是开发运行需要的文件,把这三个文件放置到/webapp/WEB-INF/lib目录下。

三JFreeChart在webwork中的应用的具体例子
在进行上面的步骤后,我们将要进行具体的开发过程。
步骤:首先在xwork.xml-定义result-types
<result-types>
<result-typename="chart"class="pawpaw.test.ChartResult"/>
</result-types>

然后在xwork.xml-定义action
<actionname="viewModerationChart"class="pawpaw.test.ViewModerationChartAction">
<resultname="success"type="chart">
<paramname="width">400</param>
<paramname="height">300</param></result>
</action>

其中param里面定义的是chart图表的长宽。
然后在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>/servlet/DisplayChart</url-pattern>
</servlet-mapping>

部分源代码如下:
packagepawpaw.test;

importcom.opensymphony.webwork.ServletActionContext;
importcom.opensymphony.xwork.ActionInvocation;
importcom.opensymphony.xwork.Result;
importorg.jfree.chart.ChartUtilities;
importorg.jfree.chart.JFreeChart;
importjava.io.OutputStream;
importjavax.servlet.http.HttpServletResponse;
/*
*<p>Description:把chart文件流换成是通过HttpServletResponse
*对象获取到的输出流在浏览器中输出</p>
*author:pawpaw
*@version1.012/15/2003
*/

publicclassChartResultimplementsResult{
JFreeChartchart;
booleanchartSet=false;
privateintheight;
privateintwidth;

publicvoidsetChart(JFreeChartchart){
this.chart=chart;
chartSet=true;
}
//设置图片的长度

publicvoidsetHeight(intheight){
this.height=height;
}
//设置图片的宽度

publicvoidsetWidth(intwidth){
this.width=width;
}

publicvoidexecute(ActionInvocationinvocation)throwsException{
JFreeChartchart=null;

if(chartSet){
chart=this.chart;
}else{
chart=(JFreeChart)invocation.getStack().findValue("chart");
}

if(chart==null){
thrownewNullPointerException("Nochartfound");
}

//把文件流换成是通过HttpServletResponse对象获取到的输出流

HttpServletResponseresponse=ServletActionContext.getResponse();
OutputStreamos=response.getOutputStream();
ChartUtilities.writeChartAsPNG(os,chart,width,height);
os.flush();
}
}


创建JFreeChart的action类。
packagepawpaw.test;

importjava.awt.Insets;
importjava.awt.Font;
importjava.io.PrintWriter;
importjavax.servlet.http.HttpSession;
importorg.jfree.data.*;
importorg.jfree.chart.*;
importorg.jfree.chart.plot.*;
importorg.jfree.chart.entity.*;
importorg.jfree.chart.urls.*;
importorg.jfree.chart.servlet.*;
importorg.jfree.chart.labels.StandardPieToolTipGenerator;
importorg.jfree.util.Rotation;
importcom.opensymphony.xwork.ActionSupport;
/*
*<p>Description:输出一条斜线chart</p>
*author:pawpaw
*@version1.012/15/2003
*/

publicclassViewModerationChartActionextendsActionSupport{
privateJFreeChartchart;
publicStringexecute()throwsException{
//创建chart文件数据集

XYSeriesdataSeries=newXYSeries(null);
for(inti=0;i<=100;i++){
dataSeries.add(i,RandomUtils.nextInt());
}
XYSeriesCollectionxyDataset=newXYSeriesCollection(dataSeries);
ValueAxisxAxis=newNumberAxis("RawMarks");//x轴坐标

ValueAxisyAxis=newNumberAxis("ModeratedMarks");//y轴坐标
//设置chart的样式

chart=newJFreeChart(
"ModerationFunction",//图表标题

JFreeChart.DEFAULT_TITLE_FONT,
newXYPlot(
xyDataset,
xAxis,
yAxis,
new
StandardXYItemRenderer(StandardXYItemRenderer.LINES)),//数据集

false//是否生成URL链接
);
chart.setBackgroundPaint(java.awt.Color.white);//设置图片的背景色

Fontfont=newFont("黑体",Font.CENTER_BASELINE,20);//设置图片标题的字体和大小
TextTitle_title=newTextTitle(title);
_title.setFont(font);
chart.setTitle(_title);
returnsuper.SUCCESS;
}
publicJFreeChartgetChart(){
returnchart;
}
}

小结:这只是一个简单的例子,如果你想深入了解的话,可以参考webwork文档和jfreechart网站。
参考资料:
http://www.jfree.org/jfreechart/index.html
webwork英文文档
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
1. 下载JFreeChart:首先从JFreeChart官网下载JFreeChart。请确保您下载的是最新版本。 2. 在Eclipse创建项目:在Eclipse创建一个新项目。右键单击项目文件夹并选择“新建文件夹”。将文件夹命名为“lib”(或其他您想要的名称),然后单击“完成”。 3. 将JFreeChart库添加到项目:将JFreeChart库文件(.jar文件)复制到您创建的“lib”文件夹。在Eclipse,右键单击您的项目并选择“属性”>“Java构建路径”>“库”。单击“添加外部JAR”并选择您刚刚添加到“lib”文件夹JFreeChart库文件。单击“确定”。 4. 在Eclipse使用JFreeChart:现在您已经将JFreeChart库添加到Eclipse项目,您可以在Java代码使用JFreeChart。使用以下代码示例来创建一个简单的折线图: ```Java import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.data.category.DefaultCategoryDataset; public class MyChart { public static void main(String[] args) { //创建数据集 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.setValue(12, "Sales", "Jan"); dataset.setValue(8, "Sales", "Feb"); dataset.setValue(6, "Sales", "Mar"); dataset.setValue(9, "Sales", "Apr"); dataset.setValue(15, "Sales", "May"); dataset.setValue(10, "Sales", "Jun"); //创建折线图 JFreeChart chart = ChartFactory.createLineChart( "Sales Report", //图表标题 "Month", //X轴标题 "Sales", //Y轴标题 dataset //数据集 ); //显示图表 ChartFrame frame = new ChartFrame("My Chart", chart); frame.pack(); frame.setVisible(true); } } ``` 完成后,您应该能够在Eclipse运行此代码并看到一个简单的折线图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值