使用open flash chart制作报表.docx
- 文档编号:27652811
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:20
- 大小:71.60KB
使用open flash chart制作报表.docx
《使用open flash chart制作报表.docx》由会员分享,可在线阅读,更多相关《使用open flash chart制作报表.docx(20页珍藏版)》请在冰豆网上搜索。
使用openflashchart制作报表
使用openflashchart制作报表
您的评价:
收藏该经验
flashchart与struts2的整合使用做了详细的介绍,但是按照文章里面的内容进行实际操作的时候,却报了openflashcharioerrorLoadingtestdataError#2032的错,经过分析,原因我忘记了引入jofc2其所依赖的xstream包......在这里,需要注意的是这两个JAR包版本号的问题,我使用的是jofc2-1.0-0.jar和xstream-1.3.1.jar。
项目按照Struts2的开发标准搭建,然后把OFC开发所需的flash文件,页面显示Flash的支持文件swfobject.js放到发布目录的相应位置,再将jofc2和其依赖的xstream的jar包放到WEB-INF/lib下并加入编译路径即可。
需求还是按照那篇博客文章中写的那样:
记录系统访问用户所使用的浏览器并用图表显示。
那么需要在数据库中记录这样的信息,如图所示:
1----首先是Action的定义,代码如下:
查看源码
打印?
01
importjava.util.ArrayList;
02
importjava.util.List;
03
04
importcom.opensymphony.xwork2.ActionSupport;
05
06
importjofc2.model.Chart;
07
importjofc2.model.axis.Label;
08
importjofc2.model.axis.XAxis;
09
importjofc2.model.axis.YAxis;
10
importjofc2.model.elements.BarChart;
11
importjofc2.model.elements.LineChart;
12
13
/**
14
*
15
*@Projectgun
16
*@Packageaction.chart
17
*@ClassTestAction
18
*/
19
publicclassTestActionextendsActionSupport{
20
privateChartofcChart;
21
publicChartgetOfcChart(){
22
returnofcChart;
23
}
24
publicStringshowChart()throwsException{
25
//y轴数据集合-使用数量
26
List
27
for(inti=1;i<=12;i++){
28
dataSet.add((Integer)i);
29
}
30
//x轴数据集合-浏览器类型
31
List
32
//获取需要显示的数据集
33
ListbrowserList=newTestDAO().get();
34
for(inti=0;i 35 Testmap=(Test)browserList.get(i); 36 //填充x轴 37 dataSet.add((Integer)map.getStatCount()); 38 //填充y轴 39 xLabel.add(newLabel((String)map.getStatVar())); 40 } 41 //设置X轴内容 42 XAxislabels=newXAxis(); 43 labels.addLabels(xLabel); 44 //设置Y轴显示值域: Range的三个参数含义为: 坐标最小值,最大值和步进值 45 YAxisrange=newYAxis(); 46 range.setRange(0,200,10); 47 //OFC折线图设置 48 //LineChartlineChart=newLineChart(LineChart.Style.NORMAL); 49 //柱状图 50 BarChartlineChart=newBarChart(BarChart.Style.GLASS); 51 lineChart.addValues(dataSet); 52 lineChart.setColour("#6666FF"); 53 lineChart.setText("使用者数量"); 54 //图表设置 55 ofcChart=newChart("用户浏览器使用量分布"); 56 ofcChart.setXAxis(labels); 57 ofcChart.setYAxis(range); 58 ofcChart.addElements(lineChart); 59 60 returnSUCCESS; 61 } 62 63 } 2DAO类,从数据库中获取数据,另外还定义了一个Bean类Test 查看源码 打印? 01 importjava.sql.Connection; 02 importjava.sql.PreparedStatement; 03 importjava.sql.ResultSet; 04 importjava.sql.SQLException; 05 importjava.util.ArrayList; 06 importjava.util.List; 07 08 importcom.gun.base.db.DBConnection; 09 10 /** 11 *从数据库中取得所需的数据 12 * 13 *@Projectgun 14 *@Packageaction.chart 15 *@ClassTestDAO 16 */ 17 publicclassTestDAO{ 18 19 publicListget()throwsException{ 20 Connectionconn=null; 21 PreparedStatementstmt=null; 22 ResultSetrs=null; 23 24 StringquerySQL="selectstatCount,statVarfromtestwherestatType='broeser'"; 25 Listlist=newArrayList(); 26 try{ 27 conn=DBConnection.getConnection(); 28 stmt=conn.prepareStatement(querySQL); 29 rs=stmt.executeQuery(); 30 System.out.println("OK"); 31 while(rs.next()){ 32 Testtest=newTest(); 33 test.setStatCount(rs.getInt("statCount")); 34 test.setStatVar(rs.getString("statVar")); 35 list.add(test); 36 } 37 returnlist; 38 }catch(SQLExceptione){ 39 thrownewException("根据主键查询信息失败,错误信息: "+e.toString()); 40 }finally{ 41 try{ 42 if(rs! =null) 43 rs.close(); 44 if(stmt! =null) 45 stmt.close(); 46 if(conn! =null) 47 DBConnection.releaseConnection(conn); 48 }catch(SQLExceptione){ 49 thrownewException("关闭数据库失败,错误信息: "+e.toString()); 50 } 51 } 52 } 53 } 查看源码 打印? 01 /** 02 *请在此处填写类的描述 03 * 04 *@Projectgun 05 *@Packageaction.chart 06 *@ClassTest 07 */ 08 publicclassTest{ 09 privateStringstatVar; 10 11 privateintstatCount; 12 13 publicStringgetStatVar(){ 14 returnstatVar; 15 } 16 17 publicvoidsetStatVar(StringstatVar){ 18 this.statVar=statVar; 19 } 20 21 publicintgetStatCount(){ 22 returnstatCount; 23 } 24 25 publicvoidsetStatCount(intstatCount){ 26 this.statCount=statCount; 27 } 28 29 } 3最后定义了TestResult类,继承于StrutsResultSupport,用于生成json格式的数据。 查看源码 打印? 01 importjofc2.model.Chart; 02 03 importorg.apache.struts2.ServletActionContext; 04 importorg.apache.struts2.dispatcher.StrutsResultSupport; 05 06 importcom.opensymphony.xwork2.ActionInvocation; 07 08 publicclassTestResultextendsStrutsResultSupport{ 09 privatestaticfinalStringENCODING="GBK"; 10 11 privatestaticfinallongserialVersionUID=4702848904993212381L; 12 13 @Override 14 protectedvoiddoExecute(Stringarg0,ActionInvocationinv) 15 throwsException{ 16 Chartchart=(Chart)inv.getStack().findValue("ofcChart"); 17 HttpServletResponseresponse=ServletActionContext.getResponse(); 18 response.setContentType("application/json-rpc;charset="+ENCODING); 19 response.setHeader("Cache-Control","no-cache"); 20 response.setHeader("Expires","0"); 21 response.setHeader("Pragma","No-cache"); 22 Stringjson=chart.toString(); 23 System.out.println(json.toString()); 24 response.setContentLength(json.getBytes(ENCODING).length); 25 PrintWriterout=response.getWriter(); 26 out.print(json); 27 out.flush(); 28 out.close(); 29 } 30 } 4现在需要在struts.xml配置文件中配置Action,如下: 查看源码 打印? 01 xmlversion="1.0"encoding="UTF-8"? > 02 03 DOCTYPEstrutsPUBLIC 04 "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN" 05 06 "http: //struts.apache.org/dtds/struts-2.3.dtd"> 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 5JSP页面很简单,只需要写一些简单的JS代码即可: 查看源码 打印? 01 <%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%> 02 03 <% 04 Stringpath=request.getContextPath(); 05 StringbasePath=request.getScheme()+": //"+request.getServerName()+": "+request.getServerPort()+path+"/"; 06 %> 07 08 DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"> 09 10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
varflashvars={"data-file":
"test.action"};
25
varparams={menu:
"false",scale:
"noScale",wmode:
"opaque"};
26
swfobject.embedSWF("openflashchart/open-flash-chart.swf","my_chart","900","500","9.0.0",
27
"expressInstall.swf",flashvars,params);
28
29
30
31
32
33
34
35
36
37
38
39
40
最后运行程序,结果如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用open flash chart制作报表 使用 open chart 制作 报表