分享
 
 
 

JFreeChart在webwork中的应用

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

前言:

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

1,JFreeChart 简介

2,webwork简介及webwork,JFreeChart应用环境的配置

3,JFreeChart在webwork中的应用的具体例子

<B一: JFreeChart 简介:</B

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 用于处理显示图象;

<B二:webwork简介及webwork,JFreeChart应用环境的配置</B

WebWork是一个源代码开放的Web应用框架,用于简化基于Web的应用开发。

WebWork的最大优点是它的简单性和灵活性。WebWork有一个很小的API,它使开发者可以迅速进行开发工作。

WebWork是许多特性和适用性的组合,包括使用variour view技术,

例如JavaServer Pages(JSP),Velocity,Extensible Stylesheet Language Transformations

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。

<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN"

"http://www.opensymphony.com/xwork/xwork-1.0.dtd"

<xwork

<include file="webwork-default.xml"/

<package name="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.3 Taglib部分的选择

如果你不打算使用taglib、Velocity、或者XSLT,仅仅只需要在web.xml中不要包含这些内容就可以了。

2.4 Log的设置

Webwork使用log4j,如果你的app server没有安装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目录下。

<B三 JFreeChart在webwork中的应用的具体例子</B

在进行上面的步骤后,我们将要进行具体的开发过程。

步骤:首先在xwork.xml -定义result-types

<result-types

<result-type name="chart" class="pawpaw.test.ChartResult"/

</result-types

然后在xwork.xml - 定义action

<action name="viewModerationChart" class="pawpaw.test.ViewModerationChartAction"

<result name="success" type="chart"

<param name="width"400</param

<param name="height"300</param </result

</action

其中param里面定义的是chart图表的长宽。

然后在web.xml文件中增加以下内容:

<servlet

<servlet-nameDisplayChart</servlet-name

<servlet-classorg.jfree.chart.servlet.DisplayChart</servlet-class

</servlet

<servlet-mapping

<servlet-nameDisplayChart</servlet-name

<url-pattern/servlet/DisplayChart</url-pattern

</servlet-mapping

部分源代码如下:

package pawpaw.test;

import com.opensymphony.webwork.ServletActionContext;

import com.opensymphony.xwork.ActionInvocation;

import com.opensymphony.xwork.Result;

import org.jfree.chart.ChartUtilities;

import org.jfree.chart.JFreeChart;

import java.io.OutputStream;

import javax.servlet.http.HttpServletResponse;

/*

* <pDescription: 把chart文件流换成是通过HttpServletResponse

*

对象获取到的输出流在浏览器中输出</p

* author: pawpaw

* @version 1.0

12/15/2003

*/

public class ChartResult implements Result {

JFreeChart chart;

boolean chartSet = false;

private int height;

private int width;

public void setChart(JFreeChart chart) {

this.chart = chart;

chartSet = true;

}

//设置图片的长度

public void setHeight(int height) {

this.height = height;

}

//设置图片的宽度

public void setWidth(int width) {

this.width = width;

}

public void execute(ActionInvocation invocation) throws Exception {

JFreeChart chart = null;

if (chartSet) {

chart = this.chart;

} else {

chart = (JFreeChart) invocation.getStack().findValue("chart");

}

if (chart == null) {

throw new NullPointerException("No chart found");

}

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

HttpServletResponse response = ServletActionContext.getResponse();

OutputStream os = response.getOutputStream();

ChartUtilities.writeChartAsPNG(os, chart, width, height);

os.flush();

}

}

创建JFreeChart的action类。

package pawpaw.test;

import java.awt.Insets;

import java.awt.Font;

import java.io.PrintWriter;

import javax.servlet.http.HttpSession;

import org.jfree.data.*;

import org.jfree.chart.*;

import org.jfree.chart.plot.*;

import org.jfree.chart.entity.*;

import org.jfree.chart.urls.*;

import org.jfree.chart.servlet.*;

import org.jfree.chart.labels.StandardPieToolTipGenerator;

import org.jfree.util.Rotation;

import com.opensymphony.xwork.ActionSupport;

/*

*<pDescription: 输出一条斜线chart</p

* author: pawpaw

* @version 1.0

12/15/2003

*/

public class ViewModerationChartAction extends ActionSupport {

private JFreeChart chart;

public String execute() throws Exception {

// 创建chart文件数据集

XYSeries dataSeries = new XYSeries(null);

for

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有