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

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

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

    JAVA—咖啡館

    ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術(shù),交流工作經(jīng)驗,分享JAVA帶來的快樂!本網(wǎng)站部分轉(zhuǎn)載文章,如果有版權(quán)問題請與我聯(lián)系。

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks


    前言

         關(guān)于Struts2入門以及提高等在這里就不介紹了,但是關(guān)于Struts2的學(xué)習(xí)有以下推薦:

      1. struts2-showcase-2.0.6.war:這個是官方自帶的Demo(struts-2.0.6-all.zip\struts-2.0.6\apps目錄下),非常全面,直接部署就可以了(很多朋友Struts2能學(xué)很好我估計還是直接從這里學(xué)來的)。
      2. wiki-WebWork:入了門的朋友應(yīng)該都知道,strust2由webwork2和struts1.x合并起來的,但主要還是以webwork2為主,所以如果找不到Struts2的資料可以找WebWork資料看看。
      3. Max On Java的博客,他的博客的資料在中文的Struts2算是比較全的了,寫得很詳細(xì)。
      4. The Code ProjectGoogle - CodeSearchKoders:這幾個代碼搜索網(wǎng)站在我找不到中文資料甚至英文文章的時候幫了我大忙!

         關(guān)于JFreeChart入門等這里我也不打算介紹了,中文資料很多了。


     

     

    正題
         下面以邊帖圖片和代碼的方式來講解Struts2JFreeChart的整合。
         搭建環(huán)境:首先帖一張工程的目錄結(jié)構(gòu)以及所需的jar包。注意:如果你不打算自己寫ChartResult的話只需要引入struts2-jfreechart-plugin-2.0.6.jar(這個在struts-2.0.6-all.zip可以找到了):
             
           1.依次帖web.xml、struts.xml、struts.properties和struts-jfreechart.xml幾個配置文件的代碼:
            web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
        xmlns
    ="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation
    ="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    >
        
        
    <filter>
            
    <filter-name>struts2</filter-name>
            
    <filter-class>
                org.apache.struts2.dispatcher.FilterDispatcher
            
    </filter-class>
        
    </filter>
        
    <filter-mapping>
            
    <filter-name>struts2</filter-name>
            
    <url-pattern>/*</url-pattern>
        
    </filter-mapping>
    </web-app>
            struts.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC 
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
        "http://struts.apache.org/dtds/struts-2.0.dtd"
    >

    <struts>
        
    <include file="struts-jfreechart.xml" />
    </struts>
            struts.properties
    struts.ui.theme=simple
            struts-jfreechart.xml 
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"
    >
    <struts>
        
    <package name="jFreeChartDemonstration" extends="struts-default"
            namespace
    ="/jfreechart">
            
    <result-types>
                
    <result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"></result-type>
            
    </result-types>
            
    <action name="JFreeChartAction" class="com.tangjun.struts2.JFreeChartAction">
                  
    <result type="chart"> 
                       
    <param name="width">400</param>
                       
    <param name="height">300</param>
                
    </result>
            
    </action>
        
    </package>
    </struts>
            說明:這里只需要說明下struts-jfreechart.xml,這里直接調(diào)用已經(jīng)寫好的類ChartResult,這個類是繼承自com.opensymphony.xwork2.Result,傳入生成圖片大小的參數(shù)width和height就可以了。

           2.
    新建JFreeChartAction繼承ActionSupport,生成JFreeChart對象并保存到chart中,注意這個名稱是固定的。
    package com.tangjun.struts2;

    import com.opensymphony.xwork2.ActionSupport;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.JFreeChart;
    import org.jfree.data.general.DefaultPieDataset;

    public class JFreeChartAction extends ActionSupport {

        
    /**
         * 
         
    */
        
    private static final long serialVersionUID = 5752180822913527064L;

        
    //供ChartResult調(diào)用->ActionInvocation.getStack().findValue("chart")
        private JFreeChart chart;
        
        @Override
        
    public String execute() throws Exception {
            
    //設(shè)置數(shù)據(jù)
            DefaultPieDataset data = new DefaultPieDataset();
            data.setValue(
    "Java"new Double(43.2));
            data.setValue(
    "Visual Basic"new Double(1.0));
            data.setValue(
    "C/C++"new Double(17.5));
            data.setValue(
    "tangjun"new Double(60.0));
            
    //生成JFreeChart對象
            chart = ChartFactory.createPieChart("Pie Chart", data, true,truefalse);
            
            
    return SUCCESS;
        }

        
    public JFreeChart getChart() {
            
    return chart;
        }

        
    public void setChart(JFreeChart chart) {
            
    this.chart = chart;
        }
    }


    OK!至此代碼已經(jīng)全部貼完。
    輸入訪問 http://localhost:8080/Struts2JFreeChart/jfreechart/JFreeChartAction.action
    顯示結(jié)果如下:




    補充
        以上生成的圖片是PNG格式的圖片,如果需要自定義圖片格式的話(好像只能支持JPG和PNG格式),那么自己寫一個ChartResult繼承自StrutsResultSupport,見代碼:

     

    package com.tangjun.struts2.chartresult;

    import java.io.OutputStream;

    import javax.servlet.http.HttpServletResponse;

    import org.apache.struts2.ServletActionContext;
    import org.apache.struts2.dispatcher.StrutsResultSupport;
    import org.jfree.chart.ChartUtilities;
    import org.jfree.chart.JFreeChart;

    import com.opensymphony.xwork2.ActionInvocation;

    public class ChartResult extends StrutsResultSupport {

        
    /**
         * 
         
    */
        
    private static final long serialVersionUID = 4199494785336139337L;
        
        
    //圖片寬度
        private int width;
        
    //圖片高度
        private int height;
        
    //圖片類型 jpg,png
        private String imageType;
        
        
        @Override
        
    protected void doExecute(String arg0, ActionInvocation invocation) throws Exception {
            JFreeChart chart 
    =(JFreeChart) invocation.getStack().findValue("chart");
            HttpServletResponse response 
    = ServletActionContext.getResponse();
            OutputStream os 
    = response.getOutputStream();
            
            
    if("jpeg".equalsIgnoreCase(imageType) || "jpg".equalsIgnoreCase(imageType))
                ChartUtilities.writeChartAsJPEG(os, chart, width, height);
            
    else if("png".equalsIgnoreCase(imageType))
                ChartUtilities.writeChartAsPNG(os, chart, width, height);
            
    else
                ChartUtilities.writeChartAsJPEG(os, chart, width, height);
            
            os.flush();

        }
        
    public void setHeight(int height) {
            
    this.height = height;
        }

        
    public void setWidth(int width) {
            
    this.width = width;
        }
        
        
    public void setImageType(String imageType) {
            
    this.imageType = imageType;
        }

    }

    如此的話還需要小小的修改一下struts-jfreechart.xml:

    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"
    >

    <struts>
        
    <package name="jFreeChartDemonstration" extends="struts-default"
            namespace
    ="/jfreechart">
            
    <!-- 自定義返回類型 -->
            
    <result-types>
                
    <!-- 
                <result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"></result-type>
                 
    -->
                
    <result-type name="chart" class="com.tangjun.struts2.chartresult.ChartResult"></result-type>
            
    </result-types>

            
    <action name="JFreeChartAction" class="com.tangjun.struts2.JFreeChartAction">
                  
    <!--
                  <result type="chart"> 
                       <param name="width">400</param>
                       <param name="height">300</param>
                </result>
                
    -->
                  
    <result type="chart"> 
                       
    <param name="width">400</param>
                       
    <param name="height">300</param>
                       
    <param name="imageType">jpg</param>
                
    </result>
            
    </action>
        
    </package>
    </struts>

    OK!顯示的效果是一樣的,只是圖片格式不一樣,當(dāng)然這里面你可以做更多操作!

    posted on 2010-01-06 17:08 rogerfan 閱讀(2089) 評論(0)  編輯  收藏 所屬分類: 【開源技術(shù)】
    主站蜘蛛池模板: 亚洲人成人77777在线播放| 国产乱色精品成人免费视频| 男女午夜24式免费视频| 国产免费一级高清淫曰本片| xxxxx做受大片视频免费| 无码精品人妻一区二区三区免费| 免费看内射乌克兰女| 日韩精品无码免费视频| 九九全国免费视频| 亚洲精品视频免费观看| 日本高清不卡aⅴ免费网站| 永久免费A∨片在线观看| 免费无码又爽又刺激高潮视频| 99在线观看免费视频| 国内精自视频品线六区免费| 91情侣在线精品国产免费| 在线免费观看中文字幕| 免费乱理伦在线播放| 亚洲精品无码mv在线观看网站| 2022年亚洲午夜一区二区福利 | 人妻无码久久一区二区三区免费| 久久A级毛片免费观看| 青青青国产在线观看免费| 亚洲6080yy久久无码产自国产 | 亚洲成人动漫在线| 亚洲成a人片毛片在线| 亚洲色一区二区三区四区| 猫咪免费观看人成网站在线| 二区久久国产乱子伦免费精品| 久久久久久一品道精品免费看| 99在线视频免费观看视频 | 色视频色露露永久免费观看| 亚洲 另类 无码 在线| 亚洲AV午夜成人影院老师机影院| 亚洲狠狠狠一区二区三区| 亚洲三级在线免费观看| 男女交性无遮挡免费视频| 日本免费中文视频| 欧美男同gv免费网站观看| 亚洲国产精品专区在线观看| 亚洲Aⅴ无码专区在线观看q |