<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
    前言:
      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-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();
        }
      }
      創建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
    posted on 2007-09-11 10:17 禮物 閱讀(257) 評論(0)  編輯  收藏 所屬分類: 報表
    主站蜘蛛池模板: 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲视频2020| 国产免费阿v精品视频网址| 亚洲一级特黄大片无码毛片| 青青青亚洲精品国产| 国产免费看插插插视频| 丰满亚洲大尺度无码无码专线| 四虎影视www四虎免费| 亚洲人成网站在线在线观看 | 国产乱子伦精品免费女| 亚洲国产午夜精品理论片在线播放 | 成人毛片免费视频| 亚洲人成网亚洲欧洲无码| 香蕉视频在线观看免费国产婷婷| 学生妹亚洲一区二区| 永久免费看mv网站入口| 四虎影视在线看免费观看| 一本色道久久综合亚洲精品高清| AAAAA级少妇高潮大片免费看| 久久国产亚洲精品麻豆| 4虎1515hh永久免费| 中文字幕亚洲码在线| 亚洲av无码国产精品色在线看不卡| 四虎国产精品永免费| 久久精品九九亚洲精品天堂| 99视频有精品视频免费观看| 亚洲Av无码一区二区二三区| 国产精品久久久久影院免费| 又大又硬又粗又黄的视频免费看| 亚洲精品国产精品乱码在线观看| 永久在线免费观看| 久久亚洲色WWW成人欧美| 亚洲精品成人网站在线观看| 久久久久久久免费视频| 免费国产高清毛不卡片基地| 亚洲国产精品一区| 黑人粗长大战亚洲女2021国产精品成人免费视频| 日本永久免费a∨在线视频| 亚洲欧洲免费视频| 免费v片在线观看无遮挡| 四虎影视成人永久免费观看视频 |