当前位置: 代码迷 >> Web前端 >> JFreeChart在Web下的应用
  详细解决方案

JFreeChart在Web下的应用

热度:300   发布时间:2012-11-25 11:44:31.0
JFreeChart在Web上的应用

首先是把jar包:jcommon-1.0.16.jar和jfreechart-1.0.13.jar复制到Web应用程序目录中的/WEB-INF/lib目录. 并且在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>

?

这样,就可以利用JFreeChart插件生成动态统计图表了.

要先创建JFreeChart对象,然后

String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session); 
String chartURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename; 

?把chartURL放入作用域,就可以在页面上使用了.

也可以生成本地图片使用.

?

?

?

?

如果是结合struts2使用,需要struts2-jfreechart-plugin-2.1.6.jar,并且在action中必需有一个名为chart的JFreeChart 对象,名字不能错,

    /**  
     * 定义JFreeChart对象 注意在这里JFreeChart对象名只能为chart     
     *   
     */  
    private JFreeChart chart;   
  
    public JFreeChart getChart() {   
        return chart;   
    }   
  
    public void setChart(JFreeChart chart) {   
        this.chart = chart;   
    }   
  
    @Override  
    public String execute() throws Exception {   
         //实例化chart
        this.chart = getPieChart();
            return SUCCESS;   
    }   

?

在struts的配置文件中有两种方法:一是让action所在的包继承jfreechart-default包

<package name="chart" extends="jfreechart-default"> 
    <action name="test" class="com.fsj.action.ChartTestAction"> 
      <result name="success" type="chart"> 
      <param name="width">800 </param> 
      <param name="height">600 </param> 
      </result> 
    </action> 
    </package> 

?还有一种方法是增加一个结果类型<result-types>

<package name="def" extends="struts-default" >
<!-- 统计,result-type 必须放在所有action之前-->
           <result-types>
	<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult" />
	</result-types>
	<action name="statisticAct" class="statisticAction">
		<result name="input">/WEB-INF/pages/admin/statistic/statistic_input.jsp</result>
		<result name="success" type="chart">
			<param name="width">900</param>
			<param name="height">400</param>
		</result>
	</action>

</package>

?

?页面上就可以直接访问该action了:?<img?alt="jfreechart"?src="statisticAct"/>??