<!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目录下。
三 JFreeChart在webwork中的应用的具体例子
在进行上面的步骤后,我们将要进行具体的开发过程。
步骤:首先在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-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/servletDisplayChart</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;
/*
* <p>Description: 把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;
/*
*<p>Description: 输出一条斜线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 (int i = 0; i <= 100; i++) {
dataSeries.add(i, RandomUtils.nextInt());
}
XYSeriesCollection xyDataset = new XYSeriesCollection(dataSeries);
ValueAxis xAxis = new NumberAxis("Raw Marks");//x轴坐标
ValueAxis yAxis = new NumberAxis("Moderated Marks");//y轴坐标
// 设置chart的样式
chart =new JFreeChart(
"Moderation Function",// 图表标题
JFreeChart.DEFAULT_TITLE_FONT,
new XYPlot(
xyDataset,
xAxis,
yAxis,
new
StandardXYItemRenderer(StandardXYItemRenderer.LINES)),// 数据集
false //是否生成URL链接
);
chart.setBackgroundPaint(java.awt.Color.white); //设置图片的背景色
Font font = new Font("黑体",Font.CENTER_BASELINE,20);//设置图片标题的字体和大小
TextTitle _title = new TextTitle(title);
_title.setFont(font);
chart.setTitle(_title);
return super.SUCCESS;
}
public JFreeChart getChart() {
return chart;
}
}
小结:这只是一个简单的例子,如果你想深入了解的话,可以参考webwork文档和jfreechart网站。
参考资料:
http://www.jfree.org/jfreechart/index.html
webwork英文文档
本文地址:http://com.8s8s.com/it/it13144.htm