Struts2下的JFreeChart应用

来源:互联网 发布:mac的扑克游戏在哪里 编辑:程序博客网 时间:2024/04/30 07:17

本人是Java菜鸟,最近接触JFreeChart,做一下学习总结,与各位分享,有哪里不对劲的,请各位前辈指出来方便我的学习,thx!

JFreeChart的官网:http://www.jfree.org/jfreechart/

官网里面有很多详细的介绍,以及相关的技术文档!此次用的JFreeChart版本是jfreechart-1.0.19:http://sourceforge.net/projects/jfreechart/files/,用到的jar包如图两个:

然后用到的Struts2的版本为struts-2.3.20:http://struts.apache.org/download.cgi#struts216,其中除了平时用于struts2开发的jar包外,还需要用到struts2下的用于支持JFreeChart的jar包:struts2-jfreechart-plugin-2.3.20.jar,总体上我加入到项目中的jar包如下图:

,基本的环境搭建完成。

1、依次新建、编辑web.xml、struts.xml、struts.properties和struts-jfreechart.xml几个配置文件

具体代码如下:

a、web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>JFreeChart_demo</display-name>
  <filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

b、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>

c、struts.properties

struts.ui.theme=simple

d、struts-jfreechart.xml

对于该文件要说明一下:文件中已经直接调用写好的ChartResult类(该类是继承了com.opensymphony.xwork2.Result),在这里只需要传入生成图片大小的参数width和height就OK了。

<?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>
    <package name="jFreeChartDemonstration" extends="struts-default"
        namespace="/jc">
        <result-types>
            <result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"></result-type>
        </result-types>
        <action name="piechart" class="com.study.jfreechart.JFreeChartAction">
              <result type="chart"> 
                   <param name="width">400</param>
                   <param name="height">300</param>

            </result>
        </action>
    </package>
</struts>


2、新建JFreeChartAction继承ActionSupport。代码如下:

package com.study.jfreechart;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import com.opensymphony.xwork2.ActionSupport;
/**
 * @author 砍柴人
 *
 * 新建JFreeChartAction继承ActionSupport,
 * 生成JFreeChart对象并保存到chart中,
 * 注意这个名称是固定的。

 */
public class JFreeChartAction extends ActionSupport {

private static final long serialVersionUID = 1L;

//供ChartResult调用->ActionInvocation.getStack().findValue("chart")
    private JFreeChart chart;

@Override
public String execute() throws Exception {

        //生成JFreeChart对象
        chart = ChartFactory.createPieChart(
        "Pie Chart",//图表表题
        setData(),//数据
        true, //是否显示图例
        true, //是否显示工具提示
        false //是否生成url
        );
        
        return SUCCESS;
}
public DefaultPieDataset setData(){
//设置数据
DefaultPieDataset data = new DefaultPieDataset();
data.setValue("Java", new Double(43.2));
        data.setValue("PHP", new Double(20.0));
        data.setValue("C/C++", new Double(17.5));
        data.setValue(".Net", new Double(40.0));
return data;
}
public JFreeChart getChart() {
return chart;
}
public void setChart(JFreeChart chart) {
this.chart = chart;
}
}

3、通过新建JFreeChart.jsp页面,访问action。具体代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jfreechart</title>
</head>
<body>
<img alt="jfreechart" src="jc/piechart.action">
</body>
</html>

运行例子,访问JFreeChart.jsp,结果显示如下:

这只是个简单的饼状图例子,其中还有很多显示样式可以设置,比如背景色、显示百分比。通过这个例子,练习一下JFreeChart在Struts2下的应用!

0 0
原创粉丝点击