首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

小熠博客一:做图表OFC的使用,以Struts1框架为例

2012-11-22 
小熠博客1:做图表OFC的使用,以Struts1框架为例最近,由于项目的需要,我做了一个关于OFC与JSP结合做报表的De

小熠博客1:做图表OFC的使用,以Struts1框架为例
   最近,由于项目的需要,我做了一个关于OFC与JSP结合做报表的Demo,之所以选择使用Struts框架,是因为公司的项目系统比较老用的是这个框架。
      
    首先,我必须要向我参考的文章致敬:    
    http://hi.baidu.com/javagril/item/2ca42e3501554382c2cf29d6
      
   上边这个文章虽然粘了主要的代码,但你要是直接用的话,还是会有错误,我下面会更详细的说明使用的过程,我的思路是由jsp页面开始,框架,后台。

    结合上面的文章,我想展示的是一个包括“hello worle”字符串和饼图的页面,内容如下:

   

    1.我们看到上面的jsp页面,我想之前的父页面不管是什么,我们都需要一个action来跳转到改页面,那么在编写这个action之前,我们需要的配置Struts框架的一些配置文件,这里关于Struts的东西不详细说,只是粘出源码,供参考:
    (1). action-servlet_ofcTest.xml(这个名字你随便起,只是在web.xml中配置时需要注意),这里你们主要看的所有带“2”的文件,带“1”的文件是我用别的方法实现的用例


    (2)struts-config_ofcTest.xml


    其实,这个你在用ofc这个flex插件做图表时,你想啊,你得有数据吧,比如:饼图或者柱状图要显示的数据、x和y轴的标题、x和y轴每个分点代表什么之类,我以前用flex和java做时,需要将flex前端的所有信息在flex端组织成对象传给java端,java端在利用js解析这些对象的属性。但现在我们不用了,我们可以用别人直接封装好的类,利用类中的属性和方法直接将数据送给OFC。
     那么问题就来了,这个类是什么呢???你们可能也发现少了包的引用吧,嘿嘿~,我先把所有用到的包贴出来:
package snt.riskmanager.web.action.ofc_test2;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jofc2.model.Chart;
import jofc2.model.axis.XAxis;
import jofc2.model.axis.YAxis;
import jofc2.model.elements.BarChart;
import jofc2.model.elements.BarChart.Bar;
import jofc2.model.elements.PieChart;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import snt.riskmanager.web.action.BaseAction;

import com.thoughtworks.xstream.io.HierarchicalStreamDriver;

以snt开头的包,使我们公司自己的,我想你的公司肯定也有相同功能的东西吧~~
   
    (2).首先我们需要的jar包是:jofc2,我下载的名字是jofc2-1.0.0.jar,顾名思义:ofc的java实现,所以jofc,哈哈,我瞎理解的~
    一会儿去“附件”里找吧,jofc2-1.0-0.zip解压后就有那个jar包。
    
     有了上面这个jar包,当时我的情况是hello world打印,但是用来显示图表的区域还是什么都没有,还报错,我报的错但是没看懂,是关于这个东西的:com.thoughtworks.xstream.io.HierarchicalStreamDriver,好吧,果断没看过,我谷歌了一下,发现没有这个包xstream-1.3.1.jar,嘿嘿,我还是放在附件中,解压缩找找吧~~
    
    3.现在有了这些,我想你的图表应该出来了吧,如果还没出来,那么别着急,我们去检查下一下几点,主要是关于jsp页面中的内容: 
    (1).检查下面js文件的路径对不对

    (2).检查对“open-flash-chart.swf”这个文件应用的路径对不对
  //2.0  embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj)//2.2  embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr,xiSwfUrlStr, flashvarsObj, parObj, attObj, callbackFn)                       //swfUrlStr(必须):swf位置 ;            //replaceElemIdStr(必须):html中要替换成flash的元素的id          //widthStr(必须):宽                //heightStr(必须):高            //swfVersionStr(必须):flash版本                        //xiSwfUrlStr(可选):指定express install SWF的URL并激活Adobe express install           //flashvarsObj(可选):用"name:value对"指定你的flashvars           //parObj(可选):用"name:value对 "指定你的嵌套object元素的params(张熠的理解:指的是被用于"盛放"swf文件的那个元素的属性 )           //attObj(可选):用"name:value对"指定object的属性(张熠的理解:指的是swf文件的属性)                       


    好了,我想说的就是这些了,当你看完这篇文章时,我相信你能用ofc展示饼图了,柱状图之类的你继续参照开头提到的文章将action中的实现写出来即可!
     该例子的不足就是action里的数据是直接写的,而不是从数据库抓出来的,不过这个实现起来很容易,我现在没时间,等过两天做报表时我会实现这个,到时再给大家补充一下。   
    
     不过,是否理解了,我想还是看每个人的主管能动性吧,我的出发点是那些基础不好或者懂得少但是真心想学的人,我相信这些人他们做完后会自己思考的~~
  
    最后,其实我就是这样的人,我以前专学c++,flex有基础,java会,但java应用会的太少,当时不会做就是希望有个人手把手教教我,因为有些东西即使我再和他较劲,没人提点我还是想不出来,所以我当时心里就一直在想,谁能教教我,说仔细些,从例子出发,我自己也一定会思考,不会照搬的.......哈哈,我觉得我还是很幸运的,公司的“老前辈”会不厌其烦的教我,默默感谢他们!!!希望大家一起学习,别人帮你是你的幸运,但我们要永远立足于自己学习,哈哈,这话说的够文艺吧~~

                   
           
          
   
        

热点排行