JFreeChart在Webwork中的应用
当前位置:以往代写 > JAVA 教程 >JFreeChart在Webwork中的应用
2019-06-14

JFreeChart在Webwork中的应用

JFreeChart在Webwork中的应用

副标题#e#

媒介:

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是很多特性和合用性的组合,包罗利用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。


#p#副标题#e#

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目次下。

#p#副标题#e#

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文件中增加以下内容:

#p#分页标题#e#

<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>

部门源代码如下:

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();
   }
  }

#p#副标题#e#

建设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网站。

    关键字:

在线提交作业