`
liubin2010
  • 浏览: 307266 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Struts1.2集成jfreechart的简单示例

阅读更多
关于Struts1.2和JFreeChart在这里就不做详细的解说了,正如标题,写这篇文章只是通过一个简单的示例介绍下如何在使用了Struts1的已有项目中加入JFreeChart.

首先需要下载JFreeChart的包,没有的可以到jfreechart的下载站点:http://sourceforge.net/projects/jfreechart/files/下载。

想要使用JFreeChart,则需要将jfreechart-版本号.jar、jcommon-版本号.jar两个jar文件复制到WEB项目的WEB-INF/lib目录(笔者使用的是jfreechart-1.0.13.jar和jcommon-1.0.16.jar)。

接下来在项目的web.xml中添加如下代码

view plaincopy to clipboardprint?
<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> 
<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>

下面在项目中添加一个生成图表的Action,笔者是在笔者项目中存放Action的包中添加了一个名为FreeChartAction的Action类,代码如下

view plaincopy to clipboardprint?
package com.ice.struts.action;  
import java.awt.Font;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import org.apache.struts.action.Action;  
import org.apache.struts.action.ActionForm;  
import org.apache.struts.action.ActionForward;  
import org.apache.struts.action.ActionMapping;  
import org.jfree.chart.ChartFactory;  
import org.jfree.chart.JFreeChart;  
import org.jfree.chart.plot.PlotOrientation;  
import org.jfree.chart.servlet.ServletUtilities;  
import org.jfree.data.category.CategoryDataset;  
import org.jfree.data.category.DefaultCategoryDataset;  
public class FreeChartAction extends Action {  
    @Override 
    public ActionForward execute(ActionMapping mapping, ActionForm form,  
            HttpServletRequest request, HttpServletResponse response)  
            throws Exception {  
        CategoryDataset dataset=getCategoryDataSet();//获得数据集  
        JFreeChart chart = ChartFactory.createBarChart3D(  
                "水果产量图", // 图表标题  
                "水果", // 目录轴的显示标签  
                "产量", // 数值轴的显示标签  
                dataset, // 数据集  
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直  
                true, // 是否显示图例(对于简单的柱状图必须是false)  
                false, // 是否生成工具  
                false // 是否生成URL链接  
                );  
          
        chart.getTitle().setFont(new Font("新宋体 ",Font.BOLD,13));//设置图表标题字体样式  
        Font font=new Font("楷体",Font.PLAIN,9);  
        chart.getCategoryPlot().getDomainAxis().setLabelFont(font);//设置图表横坐标轴标题字体样式  
        chart.getCategoryPlot().getRangeAxis().setLabelFont(font);//设置图表纵坐标轴标题字体样式  
        chart.getCategoryPlot().getDomainAxis().setTickLabelFont(font);//设置图表横坐标轴目录字体样式  
        chart.getLegend().setItemFont(font);//设置图示字体样式  
        chart.getCategoryPlot();  
        String filename=ServletUtilities.saveChartAsJPEG(chart, 600, 600, request.getSession());  
        request.setAttribute("chartUrl", request.getContextPath()+"/servlet/DisplayChart?filename="+filename);  
        return mapping.findForward("show");  
    }  
    private CategoryDataset getCategoryDataSet(){  
        DefaultCategoryDataset dataset=new DefaultCategoryDataset();  
        dataset.addValue(100, "北京", "苹果");  
        dataset.addValue(100, "上海", "苹果");  
        dataset.addValue(100, "广州", "苹果");  
        dataset.addValue(200, "北京", "梨子");  
        dataset.addValue(200, "上海", "梨子");  
        dataset.addValue(200, "广州", "梨子");  
        dataset.addValue(300, "北京", "葡萄");  
        dataset.addValue(300, "上海", "葡萄");  
        dataset.addValue(300, "广州", "葡萄");  
        dataset.addValue(400, "北京", "香蕉");  
        dataset.addValue(400, "上海", "香蕉");  
        dataset.addValue(400, "广州", "香蕉");  
        dataset.addValue(500, "北京", "荔枝");  
        dataset.addValue(500, "上海", "荔枝");  
        dataset.addValue(500, "广州", "荔枝");  
        return dataset;  
    }  

package com.ice.struts.action;
import java.awt.Font;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
public class FreeChartAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
CategoryDataset dataset=getCategoryDataSet();//获得数据集
JFreeChart chart = ChartFactory.createBarChart3D(
"水果产量图", // 图表标题
"水果", // 目录轴的显示标签
"产量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);

chart.getTitle().setFont(new Font("新宋体 ",Font.BOLD,13));//设置图表标题字体样式
Font font=new Font("楷体",Font.PLAIN,9);
chart.getCategoryPlot().getDomainAxis().setLabelFont(font);//设置图表横坐标轴标题字体样式
chart.getCategoryPlot().getRangeAxis().setLabelFont(font);//设置图表纵坐标轴标题字体样式
chart.getCategoryPlot().getDomainAxis().setTickLabelFont(font);//设置图表横坐标轴目录字体样式
chart.getLegend().setItemFont(font);//设置图示字体样式
chart.getCategoryPlot();
String filename=ServletUtilities.saveChartAsJPEG(chart, 600, 600, request.getSession());
request.setAttribute("chartUrl", request.getContextPath()+"/servlet/DisplayChart?filename="+filename);
return mapping.findForward("show");
}
private CategoryDataset getCategoryDataSet(){
DefaultCategoryDataset dataset=new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(100, "上海", "苹果");
dataset.addValue(100, "广州", "苹果");
dataset.addValue(200, "北京", "梨子");
dataset.addValue(200, "上海", "梨子");
dataset.addValue(200, "广州", "梨子");
dataset.addValue(300, "北京", "葡萄");
dataset.addValue(300, "上海", "葡萄");
dataset.addValue(300, "广州", "葡萄");
dataset.addValue(400, "北京", "香蕉");
dataset.addValue(400, "上海", "香蕉");
dataset.addValue(400, "广州", "香蕉");
dataset.addValue(500, "北京", "荔枝");
dataset.addValue(500, "上海", "荔枝");
dataset.addValue(500, "广州", "荔枝");
return dataset;
}
}


由于只是简单示例,笔者就没有从数据库中取数据,而是直接在FreeChartAction中添加了一个getCategoryDataSet()方法用于模拟生成图表的数据集对象,笔者生成的是一个柱状图,在编写过程中发现,当我们使用中文时,应该为图表的标题、图示、坐标轴名称等设置字体样式,否则将无法正常显示中文,这里只是提供一个参考,在应用时可根据自己需要将代码添加你认为合适的位置。

接下来要在struts-config.xml中对FreeChartAction进行配置,在struts-config.xml中的<action-mapping></action-mapping>标签体内添加如下代码

view plaincopy to clipboardprint?
<action   
    attribute="chartForm" 
    input="/index.jsp" 
    path="/FreeChart" type="com.ice.struts.action.FreeChartAction">  
        <forward name="show" path="/ShowChart.jsp"></forward>  
    </action> 
<action
attribute="chartForm"
input="/index.jsp"
path="/FreeChart" type="com.ice.struts.action.FreeChartAction">
<forward name="show" path="/ShowChart.jsp"></forward>
</action>

在<form-beans></form-beans>标签体内添加

<form-bean name="chartForm" type="org.apache.struts.action.DynaActionForm"/>

接下来我们要在ShowChart.jsp中将图表显示出来,ShowChart.jsp代码如下

view plaincopy to clipboardprint?
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
  <head> 
    <title></title> 
  </head> 
    
  <body> 
    <center> 
        <img alt="图表" src="${chartUrl }" mce_src="${chartUrl }"> 
    </center> 
  </body> 
</html> 
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
  </head>
 
  <body>
    <center>
    <img alt="图表" src="${chartUrl }" mce_src="${chartUrl }">
    </center>
  </body>
</html>

<img/>标签中的src我们让它获得我们在action中保存在request对象中的chartUrl。

至此,整个添加过程就结束了。

最后将项目进行部署并运行即可。笔者在将项目部署在tomcat上,打开浏览器在地址栏输入http://localhost:8080/FreeChart/FreeChart.do即可看到我们想要得到的柱状图了。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cooliceman/archive/2010/05/29/5632174.aspx
分享到:
评论

相关推荐

    Struts2 in action中文版

    2.2 简单的HelloWorld示例 20 2.2.1 部署示例应用程序 20 2.2.2 探索HelloWorld应用程序 24 2.3 使用注解的HelloWorld 31 2.4 小结 33 第二部分 核心概念:动作、拦截器和类型转换 第3章 使用Struts 2动作 36 3.1 ...

    java开源包1

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包11

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包2

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包3

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包6

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包5

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包10

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包4

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包8

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包7

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包9

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    java开源包101

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    Java资源包01

    它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费...

    JAVA上百实例源码以及开源项目源代码

    简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 ...

Global site tag (gtag.js) - Google Analytics