乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      JFreeChart在webwork中的應(yīng)用

       Joshua 2006-01-09
      JFreeChart在webwork中的應(yīng)用
      pawpaw 原創(chuàng)  (參與分:6096,專家分:130)   發(fā)表:2003-12-19 20:38   更新:2003-12-20 08:17   版本:1.0   閱讀:5964

      前言:
      webwork是當(dāng)今流行的J2EE幾大架構(gòu)之一,在實際的項目中,我們往往要在webwork的輸出流中調(diào)用一個圖表chart,代替直接用response.out輸出。那么我們應(yīng)該怎么樣去實現(xiàn)呢?本文將詳細(xì)闡述JFreeChart在webwork中的應(yīng)用。本文調(diào)試環(huán)境為windows2000+tomcat5.0。共分三個部分:
      1,JFreeChart 簡介 
      2,webwork簡介及webwork,JFreeChart應(yīng)用環(huán)境的配置
      3,JFreeChart在webwork中的應(yīng)用的具體例子

      一: JFreeChart 簡介:
      JFreeChart是開放源代碼項目,它主要用來各種各樣的圖表,這些圖表包括:餅圖、柱狀圖(普通柱狀圖以及堆棧柱狀圖)、線圖、區(qū)域圖、分布圖、混合圖、甘特圖以及一些儀表盤等等。
      一.JFreeChart創(chuàng)建WEB圖表的基本知識
      JFreeChart主要是由三個類構(gòu)成:
      org.jfree.chart.servlet.ChartDeleter
      org.jfree.chart.servlet.DisplayChart
      org.jfree.chart.servlet.ServletUtilities
      在下面做一下簡單的介紹:
      ChartDeleter 繼承自HttpSessionBindingListener,用于實現(xiàn)當(dāng)Session 關(guān)閉時,刪除
      臨時目中的圖象文件。
      ServletUtilities有一系列方法:
      saveChartAs*;saveChartAs*是把圖表按照不同的形式存儲為圖象;
      sendTempFile方法被重載了很多次,用于把文件流發(fā)送response;
      DisplayChart繼承自Httpservlet 用于處理顯示圖象;

      二:webwork簡介及webwork,JFreeChart應(yīng)用環(huán)境的配置
      WebWork是一個源代碼開放的Web應(yīng)用框架,用于簡化基于Web的應(yīng)用開發(fā)。
      WebWork的最大優(yōu)點是它的簡單性和靈活性。WebWork有一個很小的API,它使開發(fā)者可以迅速進(jìn)行開發(fā)工作。
      WebWork是許多特性和適用性的組合,包括使用variour view技術(shù),
      例如JavaServer Pages(JSP),Velocity,Extensible Stylesheet Language Transformations 
      Specification(XSLT)和JasperReporters。還有,webwork對JFreechart有非常好的支持。
      從這里下載webwork-2.0-beta2.zip。
      (https://webwork.dev./servlets/ProjectDocumentList)
      解壓縮文件,你可以在webwork-2.0\lib\optional目錄下找到j(luò)freechart-0.9.13.jar。
      你也可以從這里下載最新的jfreechart-0.9.15.zip。
      http://www./jfreechart/index.html
      本文使用的是jfreechart-0.9.15.zip。
      web應(yīng)用的目錄結(jié)構(gòu)圖如下所示:
      /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 
      接下來請務(wù)必將下面這些包放在/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 
      下面是可以選擇的包,具體根據(jù)項目需要來決定是否添加: 
      cos-multipart.jar 
      pell-multipart.jar 
      velocity-dep-1.3.jar
      2.1 配置你的xwork.xml 
      文件像下面例子一樣,注意一定要包含webwork-default.xml。
      1. <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" 
      2. "http://www./xwork/xwork-1.0.dtd">
      3. <xwork>
      4.     <include file="webwork-default.xml"/>   
      5.    <package name="default" extends="webwork-default">
      6.     ...
      7.     </package>
      8. </xwork>

      webwork-default.xml這個文件在webwork-2.0-beta.jar里面。
      2.2 修改web.xml文件
      修改web.xml文件以包含webwork的設(shè)置,如何設(shè)置的內(nèi)容,請察看
      $WEBWORK/src/resource/web/WEB-INF/web.xml文件。
      2.3 Taglib部分的選擇
      如果你不打算使用taglib、Velocity、或者XSLT,僅僅只需要在web.xml中不要包含這些內(nèi)容就可以了。
      2.4 Log的設(shè)置
      Webwork使用log4j,如果你的app server沒有安裝log4j,你需要增加log4j,復(fù)制log4j.jar文件到合適的lib目錄。如果你使用tomcat,那么安裝目錄是$TOMCAT_HOME\lib,當(dāng)然也可以安裝到你的web應(yīng)用的路徑。但需要注意的是如果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都是開發(fā)運(yùn)行需要的文件,把這三個文件放置到/webapp/WEB-INF/lib目錄下。

      三 JFreeChart在webwork中的應(yīng)用的具體例子
      在進(jìn)行上面的步驟后,我們將要進(jìn)行具體的開發(fā)過程。 
      步驟:首先在xwork.xml -定義result-types 
         
      1. <result-types>
      2.    <result-type name="chart" class="pawpaw.test.ChartResult"/>
      3.    </result-types>

         然后在xwork.xml - 定義action 
      1. <action name="viewModerationChart" class="pawpaw.test.ViewModerationChartAction"
      2.   <result name="success" type="chart"
      3.     <param name="width">400</param>
      4.     <param name="height">300</param> </result>
      5. </action>

      其中param里面定義的是chart圖表的長寬。
      然后在web.xml文件中增加以下內(nèi)容:
          
      1. <servlet>
      2.         <servlet-name>DisplayChart</servlet-name>
      3.         <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
      4.     </servlet>
      5.     <servlet-mapping>
      6.         <servlet-name>DisplayChart</servlet-name>
      7.         <url-pattern>/servletDisplayChart</url-pattern>
      8.     </servlet-mapping>

      部分源代碼如下:
      1. package pawpaw.test;
      2. import com.opensymphony.webwork.ServletActionContext;
      3. import com.opensymphony.xwork.ActionInvocation;
      4. import com.opensymphony.xwork.Result;
      5. import org.jfree.chart.ChartUtilities;
      6. import org.jfree.chart.JFreeChart;
      7. import java.io.OutputStream;
      8. import javax.servlet.http.HttpServletResponse;
      9. /*
      10.  * <p>Description: 把chart文件流換成是通過HttpServletResponse
      11.  *    對象獲取到的輸出流在瀏覽器中輸出</p>
      12.  * author: pawpaw
      13.  * @version 1.0  12/15/2003
      14.  */
      15. public class ChartResult implements Result {
      16.     JFreeChart chart;
      17.     boolean chartSet = false;
      18.     private int height;
      19.     private int width;
      20.     public void setChart(JFreeChart chart) {
      21.         this.chart = chart;
      22.         chartSet = true;
      23.     }
      24.     //設(shè)置圖片的長度
      25.     public void setHeight(int height) {
      26.         this.height = height;
      27.     }
      28.     //設(shè)置圖片的寬度
      29.     public void setWidth(int width) {
      30.         this.width = width;
      31.     }
      32.     public void execute(ActionInvocation invocation) throws Exception {
      33.         JFreeChart chart = null;
      34.         if (chartSet) {
      35.             chart = this.chart;
      36.         } else {
      37.             chart = (JFreeChart) invocation.getStack().findValue("chart");
      38.         }
      39.         if (chart == null) {
      40.             throw new NullPointerException("No chart found");
      41.         }
      42.         
      43.         //把文件流換成是通過HttpServletResponse對象獲取到的輸出流
      44.         HttpServletResponse response = ServletActionContext.getResponse();
      45.         OutputStream os = response.getOutputStream();
      46.         ChartUtilities.writeChartAsPNG(os, chart, width, height);
      47.         os.flush();
      48.     }
      49. }


      創(chuàng)建JFreeChart的action類。
      1. package pawpaw.test;
      2. import java.awt.Insets;
      3. import java.awt.Font;
      4. import java.io.PrintWriter;
      5. import javax.servlet.http.HttpSession;
      6. import org.jfree.data.*;
      7. import org.jfree.chart.*;
      8. import org.jfree.chart.plot.*;
      9. import org.jfree.chart.entity.*;
      10. import org.jfree.chart.urls.*;
      11. import org.jfree.chart.servlet.*;
      12. import org.jfree.chart.labels.StandardPieToolTipGenerator;
      13. import org.jfree.util.Rotation;
      14. import com.opensymphony.xwork.ActionSupport;
      15. /*
      16.  *<p>Description: 輸出一條斜線chart</p>
      17.  * author: pawpaw
      18.  * @version 1.0  12/15/2003
      19.  */
      20. public class ViewModerationChartAction extends ActionSupport {   
      21.    private JFreeChart chart;
      22.    public String execute() throws Exception {
      23.       // 創(chuàng)建chart文件數(shù)據(jù)集
      24.       XYSeries dataSeries = new XYSeries(null);
      25.       for (int i = 0; i <= 100; i++) {
      26.          dataSeries.add(i, RandomUtils.nextInt());
      27.       }
      28.       XYSeriesCollection xyDataset = new XYSeriesCollection(dataSeries);
      29.             ValueAxis xAxis = new NumberAxis("Raw Marks");//x軸坐標(biāo)
      30.       ValueAxis yAxis = new NumberAxis("Moderated Marks");//y軸坐標(biāo)     
      31.       // 設(shè)置chart的樣式
      32.       chart =new JFreeChart(
      33.             "Moderation Function",// 圖表標(biāo)題
      34.             JFreeChart.DEFAULT_TITLE_FONT,
      35.             new XYPlot(
      36.                xyDataset,
      37.                xAxis,
      38.                yAxis,
      39.                new                         
      40.            StandardXYItemRenderer(StandardXYItemRenderer.LINES)),// 數(shù)據(jù)集
      41.             false    //是否生成URL鏈接
      42.             );
      43.       chart.setBackgroundPaint(java.awt.Color.white);  //設(shè)置圖片的背景色
      44.       Font font = new Font("黑體",Font.CENTER_BASELINE,20);//設(shè)置圖片標(biāo)題的字體和大小
      45.       TextTitle _title = new TextTitle(title);
      46.       _title.setFont(font);
      47.       chart.setTitle(_title);
      48.       return super.SUCCESS;
      49.    }   
      50.    public JFreeChart getChart() {
      51.       return chart;
      52.    }
      53. }

      小結(jié):這只是一個簡單的例子,如果你想深入了解的話,可以參考webwork文檔和jfreechart網(wǎng)站。
      參考資料:
      http://www./jfreechart/index.html
      webwork英文文檔

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多