冷月葬花魂 发表于 2015-1-16 22:49:20

ASP网页编程之利用ASP完成基于WEB的数据库材料体系

在实现ERP等高端的ASP应用时,用户需要提供核心的经营资料,需要ASP商有很高的信用度。楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。web|数据|数据库
ASP简介
ASP(ActiveServerPage)是Microsoft公司推出的基于IIS(InternetInformationServer)的静态网页开辟手艺。ASP都是以ISAPI(InternetServiceAPI)的道理完成的,它一般利用VBScript言语举行HTML文件的嵌进式剧本计划,文件名后缀是.asp。它的道理如所示。
当扫瞄器向WebServer收回.asp哀求时,WebServer入手下手运转ASP剧本程序,然后WebServer启动ASP,ASP将所哀求的文件从头至尾举行反省,实行文件中的嵌进的ASP剧本,最初将实行了局HTML网页前往给WebServer。WebServer再将该HTML网页发送给客户端。如许,用户能够依据扫瞄器收回的哀求计划ASP剧本,从而由分歧的哀求发生分歧的剧本实行了局。ASP具有很多长处(如利用复杂,实行效力较初等),但它同时也具有其后天的缺点,即它利用的是剧本言语,功效无限,难以完成很多庞大的营业功效。微软为了填补这一缺点,供应了在ASP中利用ActiveX组件的功效,从而很多庞大的功效就能够用别的很多初级言语(如VisualC++)来完成,然后将这些功效包装为ActiveX,供ASP挪用。ADO(ActiveXDataObject)就是在ASP中经常使用的数据库会见组件。

WEB数据库材料体系完成的关头手艺
要完成基于WEB的数据库材料体系,关头要办理两个方面的成绩。第一要完成将客户端文件材料经由过程扫瞄器上载到WEB服务器,并将文件内容保留到数据库中;第二要完成从数据库中读取材料内容,并将内容发送到客户端扫瞄器。为申明怎样完成这两项手艺,我们用一个复杂的数据库举行示例(这里利用的数据库情况是MSSQLServer6.5),这个数据库只要一个表(UploadFile),其布局如所示。
个中,id字段是关头字,自增范例;Title暗示材料题目;FileName是上载的材料文件名;Content字段怎样寄存二进制材料文件内容。上面将报告完成将客户端文件材料经由过程扫瞄器上载到WEB服务器,并将文件内容保留到数据库中和怎样从数据库中读取材料内容,并将内容发送到客户端扫瞄器。WEB服务器平台是WindowsNTServer4.0+IIS4.0+SQLServer6.5,客户端利用IE4.0,体系调试经由过程。
利用ASP完成文件上载到WEB服务器
基于Web体例上载文件,要服从RFC1867尺度(IE3.0和Netscape3.0以上版本扫瞄器都撑持)。但IIS没有供应这方面的撑持。因而要利用ASP完成文件上载,必需挪用响应的ActiveX组件,这个ActiveX组件ASP自己没有供应,能够本人开辟(依据RFC1867尺度),也能够利用第三方供应的组件。这里先容的办法利用第三方的组件ASPUpload.dll,在利用前必需先在WEB服务器上注册(将ASPUpload.dll拷贝到winntsystem32目次下,然后云运转“regsvr32aspupload.dll”)。
个中客户端源文件以下(uploadTest.htm):
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>文件上载客户端</title>
</head>
<body>
<formmethod="POST"action="uploadTest1.asp"enctype="multipart/form-data"
name="UPloadForm">
<p><inputtype="file"Name="File1"> </p>
<p><inputtype="submit"value="Submit"name="Upload"></p>
</form>
</body>
</html>
个中客户端文件要注重两点:
*文件上载提交表单(Form)的enctype必需指定为“multipart/form-data”
*语句<inputtype="file"Name="File1">暗示上载文件域,用户能够在该域中输出或选定文件。
服务器端源文件以下(uploadTest1.asp):
<%response.buffer=true%>
<html>
<%SetUpload=Server.createobject("Persits.Upload.1")创立文件上载组件
Count=Upload.Save("e:aspupload")将客户端文件保留到WEB服务器真个当地硬盘上%>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>UploadTest</title>
<metaname="GENERATOR"content="MicrosoftFrontPage3.0">
</head>
<body>
<p>上载了<%=Count%>个文件</p>
<p>Filehasbeenuploaded.</p>
</body>
</html>
个中,剧本SetUpload=Server.createobject("Persits.Upload.1")创立了文件上载组件,该组件经由过程挪用Save办法将扫瞄器真个文件内容保留到指定路径。
将文件存在数据库中
将文件保留在数据库中次要用了ASPUpLoad组件中文件工具的ToDatabase办法。源文件以下:
客户端源文件(uploadToDB.htm):
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>文件上载客户端</title>
</head>
<body>
<formmethod="POST"action="UploadToDB.asp"enctype="multipart/form-data"
name="FormUpload">
<p><inputtype="file"name="FileUpload"></p>
<p><inputtype="submit"value="上载"name="B1"></p>
</form>
<p><ahref="readFile.asp">读取数据库中文件</a></p>
</body>
</html>
服务器端源文件(uploadToDB.asp):
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>文件上载到数据库</title>
</head>
<body>
<%SetUpload=Server.createobject("Persits.Upload.1")
Count=Upload.Save("e:aspupload")
onerrorresumenext
setFileObj=Upload.Files("FileUpload")
SQL="insertintoupLoadFile(Title,FileName,Content)values("&FileObj.Path&","&FileObj.Path&",?)"
response.writeSQL
FileObj.ToDatabase"DSN=FileUpload;UID=sa;",SQL
ifErr0then
Response.write"ErrorSavingthefile:"&Err.Description
else
FileObj.delete
response.write"Success!"
endif
%>
</body>
</html>
从数据库中读取文件内容并发送给客户端扫瞄器
从数据库中读取内容在发送给扫瞄器之前,起首必需让扫瞄器晓得内容的数据范例,这经由过程向客户端发送ContentType形貌完成。为复杂起见,这里假定发送的内容是Word文档,而且显现最新拔出的纪录。源文件以下:
客户端源文件为uploadToDB.htm(同上一部分的客户端文件)。
服务器端源文件(readFile.asp):
<%Response.Expires=0
response.buffer=true%>
<%response.clear
Response.ContentType="application/msword"
setconn=server.createobject("adodb.connection")
conn.open"DSN=FileUpload;UID=sa;"
setrs1=conn.execute("selectmaxid=max(id)fromuploadFile")
SQL="select*fromuploadFilewhereid="&rs1("maxid")
setrs=conn.execute(SQL)
Response.BinaryWriters("Content")
rs.close
rs1.close
conn.close
Response.End
%>
个中,WebServer向客户端发送Content-Type="application/msword",使客户端以为这是Word文档,然后服务器从数据库中读取文件内容(为复杂起见,假定是数据库中最初一笔记录),然后以二进制流的体例向客户端发送(挪用ASP内置工具Response的BinaryWrite办法)。当客户端吸收到这些内容后便主动启动WordOLE服务,使Word控件嵌在扫瞄器IE中将收到的内容格局化显现。
总结
综上,经由过程利用ASP剧本和文件上载组件及ADO组件,能够便利地完成WEB数据库材料体系的关头手艺。有了上述手艺,关于基于WEB的数据库材料的复杂体系即可以很简单地失掉扩大和完成。笔者以上述手艺为中心开辟了一套Internet上的数据库档案材料办理体系,体系十分不乱牢靠(很年夜一部分要回功于aspUpload组件的不乱性),档案内容包括html、word、excel、文本、图象等各类格局,档案材料的办理、保护和检索非常便利,遭到用户的分歧好评。

优点:简单易学、开发速度快、有很多年“历史”,能找到非常多别人做好的程序来用、配合activeX功能强大,很多php做不到的asp+activeX能做到,例如银行安全控件

第二个灵魂 发表于 2015-1-20 05:11:11

哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?

分手快乐 发表于 2015-1-28 16:37:17

那么,ASP.Net有哪些改进呢?

只想知道 发表于 2015-2-5 22:15:04

下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。

小妖女 发表于 2015-2-13 22:03:40

跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组

柔情似水 发表于 2015-3-4 02:06:20

在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。

蒙在股里 发表于 2015-3-11 15:23:53

不能只是将它停留在纸上谈兵的程度上。

兰色精灵 发表于 2015-3-19 01:13:25

先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习

金色的骷髅 发表于 2015-3-27 00:19:22

尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
页: [1]
查看完整版本: ASP网页编程之利用ASP完成基于WEB的数据库材料体系