网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > Java&XML > WebServices > JFreeChart 在 webwork 中的应用  

JFreeChart 在 webwork 中的应用

2004-08-16  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏


  前言:
  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有一系列方法:

网管网www_bitscn_com


  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。 网管联盟bitsCN@com
  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里面。 网管u家u.bitsCN.com
  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"/>

网管网www_bitscn_com


    </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>/servlet/DisplayChart</url-pattern>
    </servlet-mapping>
  
  部分源代码如下:
  package pawpaw.test;
  
  import com.opensymphony.webwork.ServletActionContext;
  import com.opensymphony.xwork.ActionInvocation;
中国网管联盟bitsCN.com

  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 { 网管网www.bitscn.com
      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.*; 网管u家www.bitscn.net
  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
TAGs应用   chart   JFreeChart   webwork   目录   图表    
 上一篇:用JBuilderX开发WEB应用程序   下一篇:如何在 Linux 下搭建 Web 应用环境
相关文章列表
JFreeChart 在 webwork 中的应用 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.Java WebService 整理笔记
2.WebService是“良药”还是“毒药”
3.Java Web Service之客户端实现
4.java中使用jdom生成百度新闻抓取的xml文
5.JAVA中用XML实现INI文件格式的解决方案
6.关于JSP与XML的交互
7.运用Spring DM和CXF来实现WebService的动
8.Java RMI之HelloWorld篇
9.Web Service 的开发层次
10.利用WebSphere创建和管理ESB解决方案
最新推荐文章:
1.Java的编程过程
2.在 XSL/XSLT 中实现随机排序
3.使用Axis开发Web Service程序
4.Sun公司的WEB服务战略
5.WebLogic的初步研究
6.WebLogic Server 性能调优
7.用Tea简化Web开发
8.学用Java Web Start
9.Weblogic70的配置简单手动配置web app
10.WebLogic 9新特性:Web Services(组图)
网管论坛交流:
·大家来开心一下吧---看了会很开心的东西-
·中国人不可不知道的知识
·@@小鹏◎◎小鹏同志与某位女明星亲密接触
·◎◎小鹏◎◎发现不明生物,居然正在交配
·[图文]^^^版主是什么?????
·泡论坛的女人是好女人
·做个“水性杨花”的女人
·献给mm俱乐部的所有mm
·深圳一集团企业电脑基础应用培训教程
·■■■■十一遊玩照■■■■■