利用JSP技術和Chart組件實現基於WEB的統計圖表

來源:互聯網
上載者:User
chart|js|web|統計|圖表 JSP(Java Server Pages)[1]是由Sun微系統公司於1999年6月推出的一項新技術,是基於JavaServlet以及整個java體系的Web開發技術,利用這一技術可以建立先進、安全和跨平台的動態網站。JSP 與Microsoft的ASP(Active Server Pages)技術非常相似。兩者都提供在HTML 程式碼中混合某種程式碼、由語言引擎解釋執行程式代碼的能力。在ASP或JSP 環境下,HTML代碼主要負責描述資訊的顯示樣式,而程式碼則用來描述處理邏輯。ASP下的程式設計語言是 vb script 之類的指令碼語言,而JSP 使用的是Java。

Microsoft? Office Web 元件[2]首次包含在 Microsoft? Office 2000 中。它們是用於向 Web 頁添加試算表、圖表和資料處理功能的 ActiveX? 控制項的集合。在使用 Microsoft? Internet Explorer 瀏覽包含 Office Web 元件的 Web 頁時,您可以直接在 Internet Explorer 中處理顯示的資料,如對資料進行排序和篩選,輸入新的數值,展開和摺疊詳細資料,進行行列旋轉以查看來源資料的不同匯總資訊等。Microsoft? Office Web 控制項能夠提供所有這些功能,共有三種 Office Web 元件:Spreadsheet 組件、Chart 組件和 PivotTable? 組件。本文將使用其中的Chart 組件。

1、JSP技術與Chart組件

JSP技術是一種在伺服器端編譯執行的Web設計語言,其指令碼語言採用Java,完全繼承了Java的所有優點。它能將網頁的動態部分與靜態部分有效分開,你只要用任何一種你熟悉的網頁製作工具,編寫規則的HTML,然後通過JSP標記(tag)[3]將動態部分包含進來就可以了,tag絕大部分是以"<%"開始,以"%>"結束的。

Chart組件是 Microsoft Office 使用的資料繫結 ActiveX 控制項,用於向 Web 頁添加圖表功能。我們在安裝微軟的Office 2000時會預設安裝一個組件Office Web Components,Chart組件就含在這個組件中,對應的檔案是msowc.dll。

2、實現執行個體

本文的運行環境是:Jbuilder7+Oracle8i,同時運用了JAVABEAN技術來實現與Oracle資料庫的串連[4]。

下面的程式graph.jsp實現了從資料庫中讀出一段時間內內燃機車和電力機車的數值,然後用統計圖表顯示,使用者可以選擇圖形方式。(以下斜體部分為JSP代碼)

<%@page contentType="text/html;charset=gb2312" %>

<%@ page import="java.sql.*,java.io.*,java.util.*,java.util.Date"%>

<jsp:useBean id="zzjwbean" scope="page" class="jsp.zzjw"/>

<!-- 用JAVABEAN實現與資料庫連接(本段代碼略) -->

<%

/*變數定義略*/

/*獲得查詢的年,月,起始日期,即: year,month,f_gk_startdate和截至日期f_gk_enddate,本段代碼略*/

%>

<html>

<head>

<title>

</title>

<form name=fm action="" method="post">

</form>

<body bgcolor="#DAFAFC">

<script language="vb script">

sub window_onload()

Dim categories(34) '將橫座標的值賦給vb script環境下的數組categories

Dim values(34) '將縱座標的值賦給vb script環境下的數組values

<%

i = 0;

rs = zzjwbean.executeQuery("select * from T_zzj_dw"); /*獲得單位名稱*/

while(rs.next())

{

%>

categories(<%=i%>)=<%="\""+rs.getString("f_fjmc")+"\""%>

<%

i++;

}

%>

ChartSpace1.Charts.Add‘將圖表添加到圖表工作區中

'將變數c設定為 Constants 屬性所返回的對象, 因為在 vb script 中不能使用已命名的常量

Set c = ChartSpace1.Constants

ChartSpace1.Charts(0).hastitle=true '圖表有標題

ChartSpace1.Charts(0).Title.Font.Name = "仿宋_GB231280" '標題字型

ChartSpace1.Charts(0).Title.Font.size=11 '標題字型大小

ChartSpace1.Charts(0).Title.Font.color="blue" '標題字型顏色

ChartSpace1.Charts(0).Title.caption="<%=year%>年<%=month%>月機車概況月報表統計圖" '標題內容

ChartSpace1.Charts(0).HasLegend = True '指定圖表具有圖例

'指定圖表的圖形方式為列狀圖

ChartSpace1.Charts(0).type=c.chChartTypeColumnClustered

'給圖表賦橫座標的值

ChartSpace1.Charts(0).SetData c.chDimCategories, c.chDataLiteral,categories

'系列0對應內燃機車統計數值

ChartSpace1.Charts(0).SeriesCollection(0).Caption="內燃機車統計" '系列0的圖例

'將內燃機車統計的值賦給vb script環境下的數組values

<%

i = 0;

rs1 = null;

f_fjbm = "";

rs = zzjwbean.executeQuery("select * from T_zzj_dw");

while(rs.next())

{

f_fjbm = rs.getString("f_fjbm");

rs1 = zzjwbean.executeQuery("select sum(f_jc_nrhj) from T_jccwygk where f_jccwy_fj='"+f_fjbm+"' and f_date>='"+f_gk_startdate+"' and f_date<='"+f_gk_enddate+"'");/*統計資料*/

if(rs1.next())

{

%>

values(<%=i%>)=<%=rs1.getInt(1)%>

<%

i++;

}

}

%>

'將內燃機車統計的值賦給圖表的系列0

ChartSpace1.Charts(0).SeriesCollection(0).SetData c.chDimValues, c.chDataLiteral, values

ChartSpace1.Charts(0).SeriesCollection.Add '向圖表中添加系列1

ChartSpace1.Charts(0).SeriesCollection(1).Caption="電力機車統計" '系列1的圖例

'將電力機車統計的值賦給vb script環境下的數組values

<%

i = 0;

rs1 = null;

f_fjbm = "";

rs = zzjwbean.executeQuery("select * from T_zzj_dw");

while(rs.next())

{

f_fjbm = rs.getString("f_fjbm");

rs1 = zzjwbean.executeQuery("select sum(f_jc_dlhj) from T_jccwygk where f_jccwy_fj='"+f_fjbm+"' and f_date>='"+f_gk_startdate+"' and f_date<='"+f_gk_enddate+"'");

if(rs1.next())

{

%>

values(<%=i%>)=<%=rs1.getInt(1)%>

<%

i++;

}

}

%>

'將電力機車統計的值賦給圖表的系列1

ChartSpace1.Charts(0).SeriesCollection(1).SetData c.chDimValues, c.chDataLiteral, values

'指定垂直軸有標題,並賦值,然後指定資料的顯示格式

ChartSpace1.Charts(0).axes(c.chAxisPositionLeft).hastitle=true

ChartSpace1.Charts(0).axes(c.chAxisPositionLeft).title.Font.Name = "黑體"

ChartSpace1.Charts(0).axes(c.chAxisPositionLeft).title.Font.size = 11

ChartSpace1.Charts(0).axes(c.chAxisPositionLeft).title.caption="機車合計(台數)"

ChartSpace1.Charts(0).Axes(c.chAxisPositionLeft).NumberFormat = "0.##"

'指定橫座標軸有標題,並賦值

ChartSpace1.Charts(0).axes(c.chAxisPositionBottom).hastitle=true

ChartSpace1.Charts(0).axes(c.chAxisPositionBottom).title.Font.Name = "黑體"

ChartSpace1.Charts(0).axes(c.chAxisPositionBottom).title.Font.size = 12

ChartSpace1.Charts(0).axes(c.chAxisPositionBottom).title.caption="鄭州局機車概況月報表"

end sub

'根據使用者選擇的圖形方式,改變圖表的形狀

sub dd_onchange()

ChartSpace1.Charts(0).type=dd(dd.selectedIndex).value

end sub

</script>

</head>

<body>

<select name="dd" size="1">

<option value="0" selected>列狀圖</option>

<option value="3">欄狀圖</option>

<option value="6">平滑曲線圖</option>

<option value="18">餅行圖</option>

<option value="29">面積圖</option>

</select>

<!-- 建立一個圖表工作區對象, 名為“ChartSpace1” -->

<p>

<object id=ChartSpace1 classid=CLSID:0002E500-0000-0000-C000-000000000046 codebase="msowc.dll" style="width:100%;height:350">

</object>

</p>

</body>

</html>



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.