asp简介 asp(active server page)是microsoft公司推出的基于iis(internet information server)的动态网页研发技术。asp都是以isapi(internet service api)的原理实现的,他通常使用vbscript语言进行html文档的嵌入式脚本设计,文档名后缀是.asp。他的原理如图1所示。 当浏览器向web server发出.asp请求时,web server开始运行asp脚本程式,然后web server启动asp,asp将所请求的文档从头到尾进行检查,执行文档中的嵌入的asp脚本,最后将执行结果html网页返回给web server。web server再将该html网页发送给客户端。这样,用户能够根据浏览器发出的请求设计asp脚本,从而由不同的请求产生不同的脚本执行结果。asp具备许多长处(如使用简单,执行效率较高等),但他同时也具备其先天的弱点,即他使用的是脚本语言,功能有限,难以完成许多复杂的业务功能。微软为了弥补这一弱点,提供了在asp中使用activex组件的功能,从而许多复杂的功能就能够用其他许多高级语言(如visual c++)来实现,然后将这些功能包装为activex,供asp调用。ado(activex data object)就是在asp中常用的数据库访问组件。
web数据库资料系统实现的关键技术 要实现基于web的数据库资料系统,关键要解决两个方面的问题。第一要实现将客户端文档资料通过浏览器上载到web服务器,并将文档内容保存到数据库中;第二要实现从数据库中读取资料内容,并将内容发送到客户端浏览器。为说明怎样实现这两项技术,我们用一个简单的数据库进行示例(这里使用的数据库环境是ms sql server 6.5),这个数据库只有一个表(uploadfile),其结构如图2所示。 其中,id字段是关键字,自增类型;title表示资料标题;filename是上载的资料文档名;content字段怎样存放二进制资料文档内容。下面将讲述实现将客户端文档资料通过浏览器上载到web服务器,并将文档内容保存到数据库中连同怎样从数据库中读取资料内容,并将内容发送到客户端浏览器。web服务器平台是windows nt server 4.0 + iis4.0 +sql server 6.5,客户端使用ie4.0,系统调试通过。
<%set upload=server.createobject("persits.upload.1") count=upload.save("e:\aspupload") on error resume next set fileobj=upload.files("fileupload") sql="insert into uploadfile (title,filename,content) values ("&fileobj.path&","&fileobj.path&",?)" response.write sql fileobj.todatabase "dsn=fileupload;uid=sa;",sql if err<>0 then response.write "error saving the file:"&err.description else fileobj.delete response.write "success!" end if %>
从数据库中读取文档内容并发送给客户端浏览器 从数据库中读取内容在发送给浏览器之前,首先必须让浏览器知道内容的数据类型,这通过向客户端发送contenttype描述实现。为简单起见,这里假设发送的内容是word文档,并且显示最新插入的记录。源文档如下: 客户端源文档为uploadtodb.htm(同上一部分的客户端文档)。 服务器端源文档(readfile.asp): <%response.expires = 0 response.buffer=true%> <%response.clear response.contenttype = "application/msword" set conn=server.createobject("adodb.connection") conn.open "dsn=fileupload;uid=sa;" set rs1=conn.execute("select maxid=max(id) from uploadfile") sql="select * from uploadfile where id="&rs1("maxid") set rs=conn.execute(sql) response.binarywrite rs("content") rs.close rs1.close conn.close response.end %> 其中,web server向客户端发送content-type="application/msword",使客户端认为这是word文档,然后服务器从数据库中读取文档内容(为简单起见,假定是数据库中最后一条记录),然后以二进制流的方式向客户端发送(调用asp内置对象response的binarywrite方法)。当客户端接收到这些内容后便自动启动word ole服务,使word控件嵌在浏览器ie中将收到的内容格式化显示。