前言:
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
*/publicclassChartResult
implementsResult{
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
*/publicclassViewModerationChartAction
extendsActionSupport{
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,
newStandardXYItemRenderer(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.htmlwebwork英文文档
分享到:
相关推荐
Struts2和JFreeChart是Java开发中两个重要的技术组件,它们在企业级应用开发中发挥着关键作用。Struts2是一个成熟的MVC(模型-视图-控制器)框架,用于构建可维护、可扩展的Web应用程序。而JFreeChart则是一个强大的...
3. **图表下载功能**:项目中的重点在于如何在Web页面上生成由JFreeChart创建的图表,并提供下载服务。这通常涉及到将图表转换为特定格式(如PNG或JPEG),然后通过HTTP响应将二进制数据发送到客户端,用户可以保存...
- Portlet支持:增加了对portlet应用的支持,便于在portlet容器中部署Struts2应用。 - **内容组织**:本书遵循读者的学习规律,先介绍基本概念与操作,再深入讲解每个知识点及其用法。全书共包含近100个实例,旨在...
3. **Webwork框架**:探讨Webwork的开发方法,让学员理解其在实际项目中的应用。 4. **XML应用与解析**:学习XML的基础知识,包括DTD和Schema,以及DOM、JDOM和DOM4J等组件解析XML的方法。 5. **Hibernate**:讲解...
5. **jCharts**:jCharts是一个纯Java的图表生成工具,可输出多种类型的图表,并且特别适合通过Servlets在Web应用中展示图表。 6. **Cewolf**:Cewolf是一个用于在Web应用中嵌入复杂图形图表的Servlet/JSP组件。它...
Struts2是一个强大的Java Web应用框架,源自WebWork2,结合了Struts1.x的优点,致力于简化企业级应用的开发、部署和维护。它强调在开发过程中提高效率,同时注重部署的简便性和后期维护的便利性。Struts2的易用性...
Struts2是一个强大的Java Web应用框架,它源自WebWork2并吸收了Struts1.x的优点。这个框架的主要目标是简化企业级应用的开发、部署和维护。Struts2的易用性和灵活性使得开发者能更专注于业务逻辑,而不是底层的HTTP...
使用BIRT,用户可以在应用中增加多种形式的报表:列表(Lists)、图表(Charts)、交叉表(Crosstabs)、文档(Letters&Documents)、组合报告(Compound Reports)。 2. Pentaho Report Designer Pentaho Report ...
在【办公用品申请系统】中,Struts2扮演着核心控制器的角色,负责接收用户请求,调度业务逻辑,并将结果呈现给用户。 系统设计通常包括以下几个主要模块: 1. 用户管理:该模块实现用户注册、登录、权限分配等功能...
Struts2是一个强大的Java Web应用程序框架,它源自WebWork2并结合了Struts1的优点,致力于简化企业级应用的开发、部署和维护。这个框架强调开发者可以专注于业务逻辑,而无需过多关注底层HTTP操作,提高了开发效率和...
JMagallanes是一个使用Java/J2EE开发的开源Olap和动态报表应用程序,结合了静态报表(JasperReports)、Swing Pivot Table(用于OLAP分析)和图表(JFreeChart)等功能。 **特点:** - **多功能集成:**集成了报表、OLAP...