`

Struts2+JFreeChart

阅读更多

下面以边帖图片和代码的方式来讲解Struts2JFreeChart的整合。
     搭建环境:首先帖一张工程的目录结构以及所需的jar包。注意:如果你不打算自己写ChartResult的话只需要引入struts2-jfreechart-plugin-2.0.6.jar(这个在struts-2.0.6-all.zip可以找到了):
         
       1.依次帖web.xml、struts.xml、struts.properties和struts-jfreechart.xml几个配置文件的代码:
        web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns
="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
    
    
<filter>
        
<filter-name>struts2</filter-name>
        
<filter-class>
            org.apache.struts2.dispatcher.FilterDispatcher
        
</filter-class>
    
</filter>
    
<filter-mapping>
        
<filter-name>struts2</filter-name>
        
<url-pattern>/*</url-pattern>
    
</filter-mapping>
</web-app>
        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>
        struts.properties
struts.ui.theme=simple
        struts-jfreechart.xml 
<!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
="/jfreechart">
        
<result-types>
            
<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"></result-type>
        
</result-types>
        
<action name="JFreeChartAction" class="com.tangjun.struts2.JFreeChartAction">
              
<result type="chart"> 
                   
<param name="width">400</param>
                   
<param name="height">300</param>
            
</result>
        
</action>
    
</package>
</struts>
        说明:这里只需要说明下struts-jfreechart.xml,这里直接调用已经写好的类ChartResult,这个类是继承自 com.opensymphony.xwork2.Result,传入生成图片大小的参数width和height就可以了。

       2. 新建JFreeChartAction继承ActionSupport,生成JFreeChart对象并保存到chart中,注意这个名称是固定的。

package com.tangjun.struts2;

import com.opensymphony.xwork2.ActionSupport;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;

public class JFreeChartAction extends ActionSupport {

    
/**
     * 
     
*/
    
private static final long serialVersionUID = 5752180822913527064L;

    
//供ChartResult调用->ActionInvocation.getStack().findValue("chart")
    private JFreeChart 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(
"tangjun"new Double(60.0));
        
//生成JFreeChart对象
        chart = ChartFactory.createPieChart("Pie Chart", data, true,truefalse);
        
        
return SUCCESS;
    }

    
public JFreeChart getChart() {
        
return chart;
    }

    
public void setChart(JFreeChart chart) {
        
this.chart = chart;
    }
}


OK!至此代码已经全部贴完。
输入访问 http://localhost:8080/Struts2JFreeChart/jfreechart/JFreeChartAction.action
显示结果如下:




补充
    以上生成的图片是PNG格式的图片,如果需要自定义图片格式的话(好像只能支持JPG和PNG格式),那么自己写一个ChartResult继承自StrutsResultSupport,见代码:

 

package com.tangjun.struts2.chartresult;

import java.io.OutputStream;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.dispatcher.StrutsResultSupport;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;

import com.opensymphony.xwork2.ActionInvocation;

public class ChartResult extends StrutsResultSupport {

    
/**
     * 
     
*/
    
private static final long serialVersionUID = 4199494785336139337L;
    
    
//图片宽度
    private int width;
    
//图片高度
    private int height;
    
//图片类型 jpg,png
    private String imageType;
    
    
    @Override
    
protected void doExecute(String arg0, ActionInvocation invocation) throws Exception {
        JFreeChart chart 
=(JFreeChart) invocation.getStack().findValue("chart");
        HttpServletResponse response 
= ServletActionContext.getResponse();
        OutputStream os 
= response.getOutputStream();
        
        
if("jpeg".equalsIgnoreCase(imageType) || "jpg".equalsIgnoreCase(imageType))
            ChartUtilities.writeChartAsJPEG(os, chart, width, height);
        
else if("png".equalsIgnoreCase(imageType))
            ChartUtilities.writeChartAsPNG(os, chart, width, height);
        
else
            ChartUtilities.writeChartAsJPEG(os, chart, width, height);
        
        os.flush();

    }
    
public void setHeight(int height) {
        
this.height = height;
    }

    
public void setWidth(int width) {
        
this.width = width;
    }
    
    
public void setImageType(String imageType) {
        
this.imageType = imageType;
    }

}

如此的话还需要小小的修改一下struts-jfreechart.xml:

<!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
="/jfreechart">
        
<!-- 自定义返回类型 -->
        
<result-types>
            
<!-- 
            <result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"></result-type>
             
-->
            
<result-type name="chart" class="com.tangjun.struts2.chartresult.ChartResult"></result-type>
        
</result-types>

        
<action name="JFreeChartAction" class="com.tangjun.struts2.JFreeChartAction">
              
<!--
              <result type="chart"> 
                   <param name="width">400</param>
                   <param name="height">300</param>
            </result>
            
-->
              
<result type="chart"> 
                   
<param name="width">400</param>
                   
<param name="height">300</param>
                   
<param name="imageType">jpg</param>
            
</result>
        
</action>
    
</package>
</struts>

OK!显示的效果是一样的,只是图片格式不一样,当然这里面你可以做更多操作!

分享到:
评论
1 楼 javaxiongxing 2011-11-24  
大哥,能详细点么...

相关推荐

    struts2+jfreechart

    Struts2和JFreeChart是两个在Java Web开发中广泛使用的开源库。Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建可维护性和可扩展性极高的Web应用程序,而JFreeChart则是一个用于生成高质量图表的...

    投票系统JSP +JavaBean+Struts2+JDBC+JFreeChart

    这是一个获取用户信息的投票系统,包含需求及代码,可以了解投票系统的基本需求,如何分析和设计数据库、使用JSP +JavaBean+Struts2+JDBC+JFreeChart进行开发、学会MySQL数据库的基本使用、使用JFreeChart画柱状图、...

    struts2 + jfreechart demo

    Struts2和JFreeChart是两个在Java Web开发中广泛使用的框架和技术。Struts2是一个强大的MVC(Model-View-Controller)框架,用于构建结构化的Web应用程序,而JFreeChart是一个开源图表库,能够生成各种高质量的图表...

    Struts2+JFreeChart开发所用Jar包

    Struts2和JFreeChart是两个在Java Web开发中广泛使用的框架和库。Struts2是一种基于MVC设计模式的开源框架,用于构建企业级Web应用程序,而JFreeChart则是一个强大的图表生成库,能够创建各种类型的图表,如饼图、...

    Struts2+JFreeChart+饼状图,柱状图,折线图

    总结一下,"Struts2+JFreeChart+Myeclipse实现饼状图,柱状图,折线图"这一主题涉及到以下几个关键知识点: 1. Struts2框架的基本概念和MVC设计模式。 2. JFreeChart库的使用,包括创建数据集、生成图表以及转换为...

    Struts2+JFreeChart 柱状图Demo

    Struts2+JFreeChart 柱状图Demo是一个典型的Java Web应用程序,它结合了Struts2框架、JFreeChart库以及可能的数据存储系统(如MySQL或Oracle),用于动态生成柱状图表。这个Demo旨在展示如何在实际项目中集成这些...

    Struts2 + jfreechart

    Struts2 和 JFreeChart 是两个在 Java 开发领域中常用的工具,它们分别负责Web应用程序的框架构建和数据可视化。Struts2 是一个强大的MVC(Model-View-Controller)框架,而 JFreeChart 是一个Java库,用于生成各种...

    struts2+JFreeChart

    Struts2和JFreeChart是Java开发中两个重要的技术组件,它们在企业级应用开发中发挥着关键作用。Struts2是一个成熟的MVC(模型-视图-控制器)框架,用于构建可维护、可扩展的Web应用程序。而JFreeChart则是一个强大的...

    投票系统 struts2+JFreechart

    知识点:struts2,struts2模型驱动,Java反射,struts2插件使用,struts2与JFreeChart的集成开发,JFreeChart图表 1、开发环境:MyEclipse6.0, Struts 2.0.11, JFreeChart 1.0.9, JCommon 1.0.12,struts2-jfreechart...

    struts2+JFreeChart整合

    Struts2和JFreeChart的整合是Web应用开发中一种常见的技术组合,主要用于创建动态、交互式的图表展示。Struts2是一个强大的MVC(模型-视图-控制器)框架,而JFreeChart则是一个用于Java的开源图表库,能够生成各种...

    JFreeChart(Struts1+jFreeChart)

    标题 "JFreeChart(Struts1+jFreeChart)" 提到的是在Struts1框架中集成JFreeChart库进行图表展示的技术。JFreeChart是一个强大的Java库,它提供了多种图表类型,如柱状图、饼图、线图、散点图等,用于数据可视化。而...

    Struts+jfreeChart整合

    Struts+jfreeChart整合注意事项以及代码实现

    投票系统 jsp+javabean+struts+jdbc+jfreechart

    这是个 jsp+javabean+struts+jdbc+jfreechart 完整的java 投票系统 项目源码 可以直接导入没有eclipse、myeclipse。内附数据库文件 mysql版,也可改成其它数据库, 换对应数据库连接驱动和修改sql语法即可

    spring+struts2+hibernate+ajax+jfreechart 广告管理系统

    《构建基于Spring、Struts2、Hibernate、Ajax与JFreeChart的广告管理系统》 在现代企业信息化建设中,广告管理系统的开发是至关重要的,它能够有效地整合广告资源,提高工作效率,减少人工操作错误。本系统利用了...

    jsp+javabean+struts2+jfreechart+eclipse投票系统.zip

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可...2. 部分字体及插图等来自网络,若是侵权请联系删除,本人不对所涉及的版权问题或内容负法律责任。收取的费用仅用于收集和整理资料耗费时间的酬劳

    struts2+MySQL+jfreechart生成带热点

    Struts2、MySQL和JFreeChart是Web应用开发中常用的技术栈,它们分别负责不同的功能领域。Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,用于构建更有序、可维护的Web应用程序。MySQL是一款...

    struts2+mysql+jfreechart

    Struts2、MySQL和JFreeChart是开发Web应用程序时常用的技术栈,它们分别负责不同的功能领域。Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,用于构建动态、数据驱动的Web应用。MySQL是一种...

    struts2+hibernate+spring+jfreechart+导出excel+导出pdf完美整合

    在这个"struts2+hibernate+spring+jfreechart+导出excel+导出pdf完美整合"项目中,开发者可能实现了以下功能: 1. **数据交互**:通过Struts2接收用户请求,将请求转发给Spring管理的业务层,由Hibernate处理数据库...

    Struts2 + Spring2.5 + JFreeChart 实现的投票系统,2008年高考作文评价投票

    知识点:struts2,struts2模型驱动,Java反射,struts2插件使用,struts2与JFreeChart的集成开发,JFreeChart图表 1、开发环境:MyEclipse6.0, Struts 2.0.11, Spring2.5.4, struts2-spring-plugin-2.0.11.1,...

    struts2+hibernate+spring+jfreechart+导出excel+导出pdf完美整合.zip

    这个压缩包文件“struts2+hibernate+spring+jfreechart+导出excel+导出pdf完美整合.zip”显然是一个整合了这些技术的示例项目,用于演示如何在实际开发中实现数据处理、视图展示以及文件导出功能。 首先,Struts2 ...

Global site tag (gtag.js) - Google Analytics