利用ASP蚔BScript技术开发Web数据库查询系统
利用ASP和VBScript技术开发Web数据库查询系统
焦纯李洪义范晓宇陈马丁
摘要:Web数据库查询是网上最普遍的应用之一。而ASP模型是创建服务器端Web应用程序最重要的架构之一。ASP动态网页技术和VBScript脚本语言的结合又使得传统VB程序员在开发Web应用程序时具有较大的优势。本文结合一个Web上课程表查询的实例对ASP和VBScript两种技术的结合使用作了详细的说明,同时对各种开发Web应用程序的方法作了详细的比较。
关键词:ASP VBScript Web应用程序数据库查询ADO
一、ASP的工作机制和环境
ASP(即Active Server Pages)是一种服务器端的脚本开发环境。通过ASP能创建和运行动态、交互和高效的页面组成的Web服务程序。对于程序员,所谓ASP,简单地说,就是在HTML文件中引入了两个扩展的成对的HTML标记〈%和%〉,同时文件的扩展名改为.asp。
同HTML文件一样ASP文件也是文本文件,包括文本、HTML标记和ASP脚本语句(用〈%和%〉界定符标记)。它以.asp为扩展名,区别于一般的HTML文件。任何文本编辑器都可以制作ASP文件。
在传统的静态HTML的模式中,浏览器通过HTTP协议向Web服务器请求页面,服务器收到请求后发送一个页面给浏览器,由浏览器进行格式化并显示数据。这种模式只为用户与Web服务器之间提供了有限的交互,静态HTML的内容必须进行手动的编辑和修改。
HTML语言本身是静态的,要想使其具有交互的动态功能,通常可采用的技术包括:Java,JavaScript,VBScript/ActiveX,CGI,ISAPI/NSAPI等。Java,JavaScript,VBScript/ActiveX是客户端的技术,它们最大的缺点就是浏览器可能根本不支持这种技术,比如网景的Navigator就不支持功能非常强大的VBScipt/ActiveX,即使是已经成为业界标准的Java,一些老版本的浏览器也不支持。而采用公共网关接口CGI及ISAPI/NSAPI等接口,由于它们是服务器端的技术,它们的共同缺点是HTML的编写与程序的编写是分离的,必须用不同的工具分别编写,然后在HTML文件中调用CGI,ISAPI或NSAPI程序,调试比较麻烦。事实上,它们与HTML文件的编写是两个完全不同的设计过程。
作为一种新技术,ASP则不同。ASP是微软公司IIS3.0中的一个组件,它实际上是一个服务器端的脚本环境。当脚本运行在服务器上(注意不是客户机)时,Web服务器完成所有的工作,包括动态生成HTML页面并传送到用户的浏览器上。程序员不必担心浏览器是否能处理你的页面,因为Web服务器已经全部替浏览器完成页面的转化工作,对浏览器而言,见到的还是普通的HTML页面。由此可见,程序员可以通过ASP直接添加可执行的脚本到HTML文件中。这样HTML开发和脚本开发成为同一件事情,使动态交互页面的开发成为一个整体,开发与维护工作变得简单、快捷。程序员可以集中精力于Web站点
外观的设计,用一些动态的元素修饰你的页面。
ASP了提供VB SCRIPT和Java SCRIPT两种脚本引擎,缺省为VB SCRIPT。由于ASP采用了与微软公司风靡世界的编程语言Visual Basic一脉相传的VBScript语言,并将其搬到了服务器端,解决了浏览器的兼容性问题,同时又延续了ActiveX的组件思想,用户可以用VB,VC等工具开发服务器端的ActiveX组件,以扩展ASP 的功能。它最大的特点是将VBScript的程序直接嵌入HTML文件中,用任意一个文本编辑器就可以编写一个完整的ASP页面。
综合以上,ASP应用程序具有以下的突出优点:
(1)可以完全同HTML集成。
(2)易于创建,不需要手动编译和连接。
(3)面向对象和易于用ActiveX组件扩展。
(4)对客户端没有特别的要求,只要有一个浏览器就行。
(5)安全性和保密性较好。在IIS接到用户对.asp文件的请求时,首先执行括在〈%和%〉标记间的VBScript 语句,然后将执行的结果和其他的HTML语句一起返回客户端,这样客户看到的仍然是标准的
HTML语句,不会看到开发者的编程逻辑,这与客户端的JavaScript是完全不同的,JavaScript没有办法阻止用户看到源码。从而有效地保证了系统的安全性及开发人员的知识产权。
需要说明的是,ASP不是脚本语言,而是一种服务器端的脚本语言开发环境,可以把它理解为一种架构,一种模型。它负责解释插入HTML页面的脚本描述。ASP必须在安装了以下软件的平台上才能运行:
*Windows NT Server上的Microsoft Internet Information Server3.0以上版本
*Windows NT Workstation上的Microsoft Peer Web Services3.0
*Win95或Win98上的Microsoft Personal Web Server
Microsoft Personal Web Server(PWS)4.0是解决个人信息共享和Web开发需要的方案。PWS是加速和简化Web站点设置(从自动创建个性化主页到文档的拖放式发布)的桌面Web服务器。在企业Intranet上,Personal Web Server可用于以自身的格式快速共享文档,或者将文档转换为HTML,然后使用PWS在不同的操作系统共享这些文档。
由于Personal Web Server支持Active Server Pages,因此可以作为Web站点的开发和测试平台。在企业服务器上或Internet服务提供商处使用您的站点前,可以先在办公室或家里创建站点,并使用Personal
Web Server进行测试。
可以说。ASP代表着Web技术的重大进步。
二、定位常用的几种开发基于ASP模型的Web数据库应用程序的方法
以Internet和Intranet作为平台的Server/Browser结构的应用程序,由于具有操作系统独立性,维护简单性,用户界面一致性等特点,正越来越受到广大程序员和用户的欢迎。引入了ASP技术的Web应用程序更具有了前所未有的优势,它把客户端和服务器很好地集成到了一起。
实现WEB数据库的应用通常有两种方法:一种是WEB服务器端提供中间件连接WEB服务器和数据库服务器;一种是把应用程序下载到客户端直接访问数据库。其中第二种方法在程序的编写、调试上显得较为繁琐,网络安全也较难保证。在第一种方法中较常用的的中间件技术有通用网关接口(CGI)和应用程序编程接口(API)两种,而API有两种版本,ISAPI和NSAPI。CGI的最大不足在于对每个访问都会在服务器端产生一个应用程序副本,占用系统资源。API以动态连接库的形式出现虽然克服了CGI的这一缺点,却带来了另一个问题,即当需要修改或更新服务程序时必须重起系统,而这在许多事实性较强的应用服务器上是不允许的。同时,无论是CGI 还是API它们共同的缺点是程序和HTML文本分离,编写和调试很不灵活。人们一直期待着一种功能强大且编写容易的WEB数据库开发技术的出现。
ASP应用程序是包含了ASP网页的Web应用程序。由于ASP模型具有很多的优点,基于ASP架构的数据库应用程序也是一种功能强大的Web数据库解决方案。
常用的开发ASP应用程序的方法有以下几种:利用Visual InterDev集成环境开发ASP应用程序;利用VB6开发ASP的IIS应用程序;借助FrontPage98开发界面,直接编辑ASP文本文件等三种方法。
对于一般的开发人员,微软的VISUAL INTERDEV以其强大的功能和优秀的集成编辑环境成为开发ASP应用程序的首选工具。
对于VB程序员,第二种方法是较好的选择,它基于VB6的开发环境,借助FrontPage98来开发界面,它具有开发一般VB应用程序的相似步骤,具有VB完全的事件驱动和面向对象的特点。最近以来,由于微软的影响及其在系统、网络和开发工具上的一体化解决方案,VBScript脚本语言逐渐具有了替代JavaScript成为最流行的INTERNET脚本语言的趋势。同时由于VB6引入了新的INTERNET开发特性,使得它成为最重要的INTERNET 应用程序开发工具之一。但是这种方法也有缺点,即Frontpage98和VB6是两个完全不同的环境,在Frontpage98中的修改并不能立即反映在VB6的开发环境中,有时还不能把两者的优势很好地结合起来。
无论采用什么方法,都必须基于ASP模型,都要使用VBScript等脚本语言,区别只是开发环境的不同。因而对于一个有经验的程序员,直接的脚本编辑,即第三种方法提供了最宝贵的灵活性,它能最大限度
地发挥程序员的灵活性,而且直接编辑ASP脚本在FrontPage98中就可以完成,编写和调试非常方便。对于熟悉HTML语法和VBScript或JavaScript语言的程序员来说效率最高。
本文着重从第三种方法的角度对Web数据库查询系统的设计进行探讨。
三、设计一个具体的Web数据库查询系统
一个适用的Web数据库查询系统首先应该是一个服务器端的IIS应用程序,由Web服务器来响应浏览器的请求,而IIS程序使用HTML来显示它的用户界面,由服务器在数据仓库中提取数据,并把数据返回给浏览器。因此,一个良好的Web数据库查询系统也应该是基于ASP模型的应用程序。它应该具有较好的安全性和交互性。
一个基本的Web数据库查询系统可以是如下结构的:
在Web数据库查询中,后台数据库的连接是至关重要的。ASP对数据库的访问主要是通过内置对象ADO(Active Data Object)来实现的。ADO是Microsoft针对网络数据库应用和Visual系列开发工具所开发的数据对象,在微软的系列产品中得到了很好的支持。在ASP中它可以被认为是一种数据库服务组件。与很多程序员熟悉的RDO、DAO不同,ADO是在OLE DB规范下开发的,它具有面向对象的特性.操作方法和DAO类似。
通过ADO访问Web数据库已经成为开发Web数据库查询系统的一般模式。在Web上访问数据库一般可分为以下步骤:
(1)创建数据库源名。数据库源名,即Data Source Name是连接ODBC和数据库的桥梁,ODBC通过DSN 来到要访问的数据库。在Windows的控制面板中提供了一个名为“32位ODBC”的工具对其进行管理。在单机环境中开发Web应用时,这种通过首先创建数据库源的方法来访问数据库具有较好的可调试性,否则必须连接到一个Web上的服务器来寻一个可供访问的数据库源。
(2)创建数据库连接。在ASP中要访问数据,必须还要创建与数据库的连接。
具体语法如下:Set Conn1=Server.CreateObject(“ADODB.Connection”),这样就创建了链接对象Conn1。具体编程中,Conn1是直接访问数据库的一个很关键的对象名。创建数据库连接后,就要打开这个连接以供访问。
具体语法如下:Conn1.Open“DSN1”,“username”,“password”。最后两个参数是可选参数。
(3)创建数据对象。RecordSet是ADO中保存数据库命令结果集的对象。通过它可以直接访问数据库中的每个记录和各个字段的属性。具体语法如下:
Set RecordSet=Conn1.Execute(sqlStr)这条语句创建并打开了一个Recordset对象,sqlStr是一条SQL的
查询语句,执行这条SQL语句后返回具体的查询结果给Recordset对象。
(4)操作数据库。Execute方法的参数是一个标准的SQL语句串,可以用它来实现数据插入、修改、删除等操作。
(5)关闭数据对象和链接。打开了一个ADO对象后,必须在使用完后关闭它。以释放在服务器上的资源。
vb采用什么的编程机制在开发Web数据库应用程序时,由于ASP模型主要是基于服务器端的,只有当用户单击了一个ASP调用(如〈form method="POST"action="complex_result.asp"〉)的超链接或表单的提交按钮后才能工作,无法对客户的输入作出实时响应。如一个检查各字段是否为空的操作,就必须数据传送到服务器端后,才能作出判断。表现在具体编程中,就是判断的代码必须放在下一个页面中。由于VBScript是基于客户端的脚本语言,所以这种检查可以通过在ASP中内嵌VBScript脚本来完成。实际上,一个成功的ASP应用程序经常是ASP模型与VBScript或JavaScript脚本紧密结合的产物。
与一般源代码编写不同的是,ASP应用程序的重点不在一般HTML代码的编写上,IIS只对〈%〉标志对内的代码进行解释和运行。〈%〉标志对内的代码具有相对完整性,可以认为它与一般HTML语言是完全互不影响的。
ASP应用程序的实际实现过程中,界面设计和代码的编写实现一种紧密结合能极大地提高效率。尤其在FrontPage98中,良好的界面设计可以极大地优化程序的结构,也具有较好的可读性。
四、实现技巧及具体实例
以下就笔者的一点经验谈谈在编制ASP应用程序中的一些技巧。
(1)Response对象中的Write方法在直接输出一个由变量表达的字符串时具有重要的作用。甚至它可以作为一种ASP向客户端返回HTML页面的一种主要方式。这也是VB6中创建动态HTML的一种重要方法。
可以参考以下代码:
〈%if rs.fields("有无幻灯").value=true then
response.write"〈td width='13%'〉〈p align='center'〉有〈/td〉"
else
response.write"〈td width='13%'〉〈p align='center'〉无〈/td〉"
end if%〉
(2)对同一表单内的元素可以用Request.Form(parameter)方法获得当前表单内的元素的值,这在实际编程中具有极大的便利。甚至在两个相邻的页面间也能顺利传值。
(3)ASP应用程序中如何解决页面间的传值一直是个关键的问题。一般可以有以下六种方法:
A.利用Application对象在应用程序的所有用户中共享信息,它可以在服务器运行期间持久地保存数据。
B.可以用Session对象中的对象为应用程序的单个用户持久保存数据。但保存时间受到Session对象的另一个属性Timeout控制。
C.相邻页面之间同一表单内的元素可以使用Request.form(parameter)的方法来实现传值。
D.在ASP应用程序目录中的Global.asa文件中定义一些全局变量及过程。在Global.asa文件中创建的全局变量和过程在整个Web应用程序中都是可见的。
E.对于在多个页面之间的传值,最适合的方法是利用Request.querystring属性。即在表单的Action或页面元素的超链接中,可以添加关于Request.querystring的引用。具体如下:
〈form method="POST"action="complex_query.asp"?query1=rs.fields(0).value〉
则在complex_query.asp中,可以通过Request.querystring(“query1”)来取得query1的值,并可以采用同样
的方法把这个值再传送下去。
F.还可以利用HTML中隐含域的特性传递。
以下是一段关于Web数据库查询的程序实例。
下面一段程序实现复合查询条件的生成,ASP文件名为Complex_query.asp。
〈html〉
〈%@Language="VBScript"%〉
〈head〉
〈meta http-equiv="Content-Type"content="text/html;charset=gb2312"〉
〈meta name="GENERATOR"content="Microsoft FrontPage3.0"〉
〈title〉复合查询页面〈/title〉
〈meta name="Microsoft Theme"content="none"〉
〈meta name="Microsoft Border"content="tl,default"〉
〈/head〉
〈%
set ateobject("tion")
conn1.open"kc_mdb","",""
set ute("select*from teacher")%〉
〈body background="bg005.gif"〉
〈hr size="6"color="#FF00FF"〉
〈p〉〈font face="楷体_GB2312"color="#0000FF"〉〈strong〉〈big〉〈big〉请选择查询方式〈/big〉〈/big〉〈/strong〉〈/font〉〈/p〉

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。