struts和jfreechart

jfreechart与struts的整合
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是你的项目的名字


发布了34 篇原创文章 · 获赞 9 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章