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

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

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

    posts - 78,  comments - 48,  trackbacks - 0
    前言:
    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。
    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"

    "<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>/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 (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英文文檔

     

    posted on 2006-03-08 17:13 黑咖啡 閱讀(301) 評論(0)  編輯  收藏 所屬分類: tec

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    留言簿(2)

    隨筆分類(67)

    文章分類(43)

    Good Article

    Good Blogs

    Open Source

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲欧洲日产国码无码久久99| 在线看片无码永久免费视频| 四虎永久成人免费影院域名| 一区二区在线视频免费观看| 青青青视频免费观看| 美女免费精品高清毛片在线视| 久久久久久亚洲av无码蜜芽| 久久亚洲精品11p| 精品一区二区三区免费毛片| 羞羞漫画页面免费入口欢迎你 | 国产免费AV片无码永久免费| 大香人蕉免费视频75| 天黑黑影院在线观看视频高清免费| caoporm超免费公开视频| 本道天堂成在人线av无码免费| 亚洲免费一区二区| 精品在线免费观看| 国产一卡二卡四卡免费| 最近的免费中文字幕视频 | 亚洲日本天堂在线| 亚洲成av人在线观看网站| 亚洲a无码综合a国产av中文| 成人国产网站v片免费观看| 成av免费大片黄在线观看| 久久免费视频99| 国产一卡2卡3卡4卡无卡免费视频| 天天看免费高清影视| 亚洲精品麻豆av| 亚洲国产精品va在线播放| 亚洲福利电影一区二区?| 亚洲日产乱码一二三区别| 特级毛片免费播放| 久久精品国产免费一区| 99久久99这里只有免费费精品| 日本免费人成黄页网观看视频| 亚洲熟伦熟女新五十路熟妇| 亚洲狠狠久久综合一区77777| 亚洲另类春色国产精品| 国产亚洲人成在线影院| 毛片在线全部免费观看| 女人张开腿等男人桶免费视频|