ASP网站制作之使用OWC办事器端组件静态生成图表
Active Server Page技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。静态|办事器|图表 使用OWC办事器端组件静态生成图表之前在这里也已经有一些文章谈到了在ASP中生成静态图表的成绩,但那些文章中所谈到的一些办法都有某些方面的限制,如需求在客户端装置office2000或装置OWC,有些则能够在Intranet中利用时没甚么成绩,但在经由过程Internet会见的时分,便可能呈现没法正常任务的景象(这次要和SQL Server的平安设置有关)。那末,咱们若何来防止这些成绩呢?有一个很好的办法,就是将在ASP中生成的图表转换成图片文件保留在办事器上,如许用户终究看到的是GIF图片格局的图表,我想如今的任何一种阅读器在旁观GIF图片的时分都没甚么成绩吧。:)或许独一能够的成绩就是若何对这些生成的一时图片文件的处置成绩,关于这个成绩在最初咱们会会商。
上面咱们会用一个详细的实例来讲明这类办法。法式的测试情况为:
NT4.0(SP5)+IIS4.0+SQL Server7.0+IE5.0,要运转上面的ASP法式,请将上面的代码Copy,保留到你的一个虚拟目次中,在这个虚拟目次中创立一个子目次tmp(你能够修正代码中的途径以合适本人的途径),在IIS中设置read权限便可,注重了,在NT上你必需设置此tmp目次对IUSR_servername用户最少有Change的权限。创立一个pubs的DSN指向SQL Server的pubs数据库。
以下是代码:
chart.asp
<%
Function ExportChartToGIF(cspace)
Dim fso
Dim sFilePath
Dim sFileName
'生成一时文件的文件名
set fso = CreateObject("Scripting.FileSystemObject")
sFilePath = Request.ServerVariables("PATH_TRANSLATED")
sFilePath = left(sFilePath, InStrRev(sFilePath, "\"))
sFilePath = sFilePath & "tmp\"
sFileName = fso.GetTempName()
sFileName = sFileName & ".gif"
set fso=nothing
'将chart转换成GIF文件保留在一时目次
m_cspace.ExportPicture sFilePath & sFileName, "gif", 200, 150
'将生成的一时图片报存在session中以便于删除
Session("TC:" & sFilePath & sFileName) = sFilePath & sFileName
ExportChartToGIF = sFileName
End Function
Sub BindChartToDSC(cspace, dsc, sRSName, sCategories, sValues)
Dim cht
Dim ser
set c = cspace.Constants
cspace.Clear
' 绑定命据源
set cspace.DataSource = dsc
cspace.DataMember = sRSName
set cht = cspace.Charts.Add()
cht.HasLegend = True
cht.Type = c.chChartTypePie
set ser = cht.SeriesCollection.Add()
ser.SetData c.chDimCategories, 0, sCategories
ser.SetData c.chDimValues, 0, sValues
set dls = ser.DataLabelsCollection.Add()
dls.HasPercentage = True
dls.HasValue = False
End Sub
%>
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>使用OWC静态生成图表</title>
</head>
<body>
<%
set m_cspace = server.CreateObject("OWC.Chart")
set DSC = server.CreateObject("OWC.DataSourceControl")
DSC.ConnectionString = "DSN=pubs;uid=sa"
DSC.RecordsetDefs.AddNew "select distinct state,num=COUNT(*) FROM authors GROUP BY state",DSC.Constants.dscCommandText,"ChartData"
BindChartToDSC m_cspace, DSC, "ChartData", "state", "num"
m_sFilePath = ExportChartToGIF(m_cspace)
set m_cspace=nothing
set m_cht=nothing
%>
<br><br>
<img src="tmp/<%= m_sFilePath %>">
</BODY>
</HTML>
个中咱们会发明两个有效的函数:ExportChartToGIF和BindChartToDSC
ExportChartToGIF(cspace)是一个用来将chart转换成GIF文件的函数
cspace:一个OWC.Chart的实例
BindChartToDSC(cspace, dsc, sRSName, sCategories, sValues)用来将一个Chart绑定到数据源
cspace:OWC.Chart的实例
dsc:数据源
sRSName:纪录集称号
sCategories,sValues:Chart中每一个系列的称号字段和响应的值的字段名(说的好象不是很清晰,不外看看代码你就分明了)
在利用办事器真个OWC时,实践上和利用其它的组件没甚么区分,都是用server.createobject来创立一个实例,再挪用组件的办法和属性。
OWC包含四个组件,他们的ProgID分离为:
OWC.Chart:图表组件
OWC.SpreadSheet:电子表格组件
OWC.DataSourceControl:数据源组件
OWC.PivotTable:静态报表组件
最初说一下若何处置一时的图片文件
在ExportChartToGIF汉书中你可以看到以下的代码:
Session("TC:" & sFilePath & sFileName) = sFilePath & sFileName
咱们将发生的图片文件途径保留在session中,然后在Session_OnEnd中添加以下的代码:
Set fsoTemp = CreateObject("Scripting.FileSystemObject")
for each imagefile in Session.Contents
if left(imagefile,3) = "TC:" then
fsoTemp.DeleteFile mid(imagefile,4), True
end if
next
set fsoTemp=nothing
好了。终究写完了,个中关于一时文件的处置的办法或许不是很好,假如你有更好的办法的话,请告知我。但愿这篇文章对人人都所匡助:)
</p>使用cdonts,可以发送、查看邮件,实现webmail的功能。结合wsh,可以实现对nt主机的管理,如nt用户管理、iis虚拟主机设置、exchange邮箱设置等等,就像管理本地机一样方便。 用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。 封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。 作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。 还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。 以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。 在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。 另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件) 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: 运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。 在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。 尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。 在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的? 以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
页:
[1]
2