1. 創建一個struts工程
首先要搭建一個struts的工程,這裏主要講解jfreechart和struts的整合,struts項目的如何搭建這裏不在
贅述;
2. copy struts2 jfreechart的插件
jfreechart是作爲struts的一個插件形式和struts整合的,首先要把struts中關於jfreechar的插件包(struts2-jfreechart-plugin-2.3.14.jar)
導到struts的工程的lib目錄下,這個文件在struts的lib包中可以找到,在這個jar包中就兩個文件,一個配置文件struts-plugin.xml和一個java類文件
org.apache.struts2.dispatcher.ChartResult,這個類文件定義了一個結果集;在struts-plugin.xml配置了一個包和一個結果集,這個包
繼承自struts-default
其內容如下:
<package name="jfreechart-default" extends="struts-default">
<result-types>
<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult">
<param name="height">150</param>
<param name="width">200</param>
</result-type>
</result-types>
</package>
3. copy jfreechart的jar包
jfreechart是一個開源的礦建我們可以在他們的官網上下載
下載後解壓找到其中的lib包,其中有兩個jar包jcommon-1.0.17.jar和jfreechart-1.0.14.jar,將這兩個jar包
拷貝到我們的工程的lib目錄下,這樣環境我們就搭建好了!
提醒:
在解壓後的文件中有這麼一個jar包,jfreechart-1.0.14-demo.jar,這裏包裹全部jfreechart可以做的圖形
demo,我們可以查看其中jfreechart能做出來的各種各樣的圖形,
打開windows的dos窗口將目錄切換到jfreechart-1.0.14-demo.jar多在的目錄,運行java命令執行這個文件
java -jar jfreechart-1.0.14-demo.jar
這樣就可以打開這個jar文件
4. 接下來我們來做第一個demo
首先我們創建一個action
代碼如下:
package app.jfreechat;
import java.awt.Font;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import com.opensymphony.xwork2.ActionSupport;
public class BookChart extends ActionSupport {
//聲明與ChartResult結果類型的屬性"chart",同類型、同名的屬性
//java.lang.NullPointerException: No JFreeChart object found on the stack with name chart
private JFreeChart chart;
public PieDataset getDataset(){
DefaultPieDataset localDefaultPieDataset = new DefaultPieDataset();
localDefaultPieDataset.setValue("JAVA", 800000);
localDefaultPieDataset.setValue("PHP", 400000);
localDefaultPieDataset.setValue(".NET", 300000);
localDefaultPieDataset.setValue("C++", 200000);
localDefaultPieDataset.setValue("ANDROID", 1000000);
return localDefaultPieDataset;
}
public JFreeChart getChart() {
chart = ChartFactory.createPieChart3D(
"顯示各學科情況圖", //設置圖形標題
getDataset(), //獲取顯示數據
false, //是否顯示圖例
true, //是否顯示工具提示
false); //是否生成URL
//處理一下中文亂碼問題
chart.setTitle(new TextTitle("顯示各學科情況圖",new java.awt.Font("宋體",Font.BOLD,22)));
return chart;
}
}
5. 配置struts.xml文件
<package name="default" namespace="/" extends="jfreechart-default">
<action name="bookAction" class="app.jfreemchar.action.BookCharAction">
<result name="success" type="chart">
<param name="height">600</param>
<param name="width">800</param>
</result>
</action>
</package>
注意:
這裏的package必須繼承jfreechart-default包,這樣太能使用其中定義的結果集
在這裏的result的type類型必須爲chart,這樣才能被jfreechart的結果集來對我們的action的結果進行進一步的處理
返回給mode層生成動態的網頁相應給客戶機
6. 在瀏覽器中輸入 http://localhost/jfreechart/bookAction 這裏jfreechart是你的項目的名字