struts2 + jfreechart整合:
1、配置环境:
在struts2中,默认的struts-default.xml中,并没有包含chart的result-type,它是插件的形式使用的。
把 struts2的解压包的lib里找到struts2-jfreechart-plugin-2.1.8.1.jar,拷贝到你的项目的 classpath里,
因为这个插件里的文件struts-plugin.xml里有一个chart的result-type。内容如下:
<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>
同时把jfreechart的库文件jfreechart-1.0.13.jar和jcommon-1.0.16.jar拷贝到你的项目的 classpath里。
2、修改web.xml,增加下面的struts2的配置:
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param> <param-name>struts.i18n.encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3、在src目录下增加新建一个struts.xml配置文件,其主要内容如下:
<!-- 关于extends继承jfreechart-default这点请大家注意 因为在struts-default这个包里并没有result-type为chart的 chart 定义在前面我们导入的struts2-jfreechart-plugin-2.1.8.jar 下面的struts-plugin.xml文件中 --> <package name="jfreechart" extends="jfreechart-default"> <action name="jfreechart" class="org.usc.actions.JfreeChartAction"> <result name="success" type="chart"> <param name="width">600</param> <param name="height">400</param> </result> </action> </package>
4、写测试页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>jfreechart</title>
</head>
<body>
<img alt="jfreechart" src="jfreechart.action"/>
</body>
</html>
5、在你的action代码里,返回一个JFreeChart对象即可:
/**
* File : JfreeChartAction.java
* Author : zqding
* Date : 2010-7-27
* Version:
* Desc :
*/
package org.usc.actions;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import com.opensymphony.xwork2.ActionSupport;
public class JfreeChartAction extends ActionSupport {
/**
* 定义JFreeChart对象 大家请注意在这里JFreeChart对象名只能为chart
* 不能是别的, 关于这点大家可以上struts2网站上面查看一下
* http://struts.apache.org/2.x/docs/jfreechart-plugin.html
*/
private JFreeChart chart;
public JFreeChart getChart() {
return chart;
}
public void setChart(JFreeChart chart) {
this.chart = chart;
}
@Override
public String execute() throws Exception {
//设置数据
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("Android", new Double(60.0));
//设置字体及生成的图片格式设置略,请参照API文档
//生成JFreeChart对象
chart = ChartFactory.createPieChart("Programme Language", data, true,true, false);
return SUCCESS;
}
}
6、发布到应用服务器,进行测试。
http://localhost:9090/SSHDemo/jfreechart.jsp
如下图: