ASP范文10篇

时间:2023-03-21 20:32:21

ASP范文篇1

asp技术asp(activeserverpages动态网页)是微软公司推出的一种用以取代cgi(commongatewayinterface通用网关接口)的技术。目前,internet上的许多基于windows平台的web站点已开始应用asp来替换cgi。简单地讲,asp是一个位于服务器端的脚本运行环境,通过这种环境,用户可以创建和运行动态的交互式web服务器应用程序,如交互式动态网页,包括使用html表单收集和处理信息,上传与下载等等。通常情况下,用户通过浏览器看到的网页大多是静态的,目前internet上的许多站点,仍然提供"静态"(static)的主页内容。所谓"静态",指的就是站点的主页内容是"固定不变"的。当浏览器通过internet的http(hypertexttransportprotocol)协议,向站点服务器(webserver)要求提供主页的内容时,站点服务器收到要求后,就传送原已设计好的静态的html的文件数据给浏览器。一个"静态"的站点,若要更新主页的内容,必须手动的来更新其html的文件数据。而随着web应用的发展,用户希望能够看到根据要求而动态生成的主页,例如响应用户查询数据库的要求、生成报表等。当在浏览器上填好表单(form)的输入数据,以提供http要求时,可以在站点服务器中执行的应用程序,而不只是一个html文件。

站点服务器收到要求执行的应用程序,分析表单(form)的输入数据,将执行的结果以html的格式传送给浏览器。根据用户请求生成动态主页的传统方法有cgi、isapi等。cgi是根据浏览器端的http请求激活响应进程,每一个请求对应一个进程。当同时有很多请求时,程序挤占系统资源,造成效率低下;isapi针对这一缺点进行改进,利用dll(动态链接库)技术,以线程代替进程,提高了性能和速度,但要考虑线程的同步问题,而且开发步骤烦琐。这两种技术和另一普遍使用的开发动态网页的技术java都还存在着另外一个问题,那就是开发困难,程序的开发和html写作是两个完全不同的过程,需要专门的程序员开发。而较简单的开发技术如javascript和idc(internetdatabaseconnector)等功能有限,不敷使用。

asp使用的activex技术基于开放设计环境,用户可以自己定义和制作组件加入其中,使自己的动态网页几乎具有无限的扩充能力,这是传统的cgi等程序所远远不及的地方。asp与常见的在client端实现动态主页的技术如javaapplet、activexcontrol、vbscript、javascript等不同,asp中的命令和script语句都是由服务器来解释执行的,执行结果产生动态生成的web页面并送到浏览器;而client端技术的script命令则是由浏览器来解释执行。由于asp是在服务器端解释执行,开发者可以不必考虑浏览器是否支持asp;同时由于它在服务器端执行,开发者也不必担心别人下载程序从而窃取编程逻辑。

asp通过后缀名为.asp的asp文件来实现,一个.asp文件相当于一个可执行文件,因此必须放在web服务器上有可执行权限的目录下。当用户从浏览器输入了.asp文件的地址后,浏览器就将这个url请求发给webserver,如果webserver上装了asp,就调用asp。asp读出相应.asp文件,解释并执行命令,动态生成一个html页面回传webserver,然后webserver再把结果发送给浏览器。asp文件的制作和html类似,且和html开发集成,可以在同一个过程完成,利用asp将可以执行的脚本嵌入到html文件中(将html文件的后缀名改为.asp),这使得html文件的编写与脚本的开发融合在一起。通过asp内置的对象、服务器组件(servercomponent)可以完成非常复杂的任务,而且用户还可以自己开发或利用别人开发的服务器组件完成专门的任务。asp比较网关及服务器扩展模式有着以下优点:

(1)完全与html文件融合在一起;

(2)容易创建,不需要其它编译、链接程序;

(3)面向对象的并通过activexserver对象可扩展。

二、电子商务数据访问方式

电子商务是指通过电子方式,并在网络基础上实现物资、人员过程的协调,以便商业交换的活动。在电子商务系统中,web提供了与客户进行通信联络的有效手段,利用web技术,实现web服务器与数据库系统的连接,完成对数据的处理与查询,用户可以通过操作简单易学的浏览器来查询处理所需要的各种数据。实现web服务器与数据库的连接一般有两种方法:一种是利用中间件技术在两者之间建立连接和通信,如cgi(通用网关接口)和api(应用程序编程接口)。

web服务器通过调用cgi程序实现与web浏览器的交互,即cgi程序接受浏览器发给web服务器的信息,进行处理后,将相应结果再送回给web服务器,通过web服务器将信息传送给浏览器。但cgi程序在响应速度和资源利用等方面有较大局限性,客户端每请求一个cgi程序,服务器端便打开一个进程,当请求的数量较大时容易引起瓶颈现象,开发人员常利用api编程来扩展服务器功能,api程序占系统资源少,运行效率较高,但它的编程较cgi程序更为复杂;另一种是由浏览器中的java小应用程序(javaapplet)通过浏览器访问web服务器上的数据库,利用了jdbc(javadatabaseconnectivity)技术,它通过jdbc提供的api实现对webserver的访问。由于javaapplet本身的局限性,目前大多数的应用是基于中间件技术的。

asp也是属于中间件的一种模式,但在windows平台上它比较网关及服务器扩展模式有着较大的优点。网关的最大特点是它的平台无关性,但网关程序通常较难编写和改变。网关程序通常是一个独立的程序,并不和html文件融合在一起,它需要用如c、c++、vb、perl等语言来编写独立的应用程序,而asp应用改变了这一点。使用asp不仅可以读取access和sqlserver的数据库,而且还可以读取其他odbc(opendatabaseconnect开放式数据库互联)兼容的数据库。

在asp中访问数据库是通过ado(activexdatabaseobject活动数据对象)及事务处理语句来实现的。ado是一种操作microsoft所支持的数据库的方法,是一项容易使用并且可扩展的将数据库访问添加到web页的技术。ado对象的使用与dao(数据访问对象)、rdo(远程数据对象)的方式相似。在asp中,ado可以看作是一个服务器组件,更简单点说,是一系列的对象,应用这些功能强大的对象,即可轻松完成对数据库复杂的操作。

三、asp在电子商务中的应用

在电子商务中,对用户而言,进行网上信息查询的目的是寻找自己需要的产品或服务,而对于商品或服务提供者来说,其目的则是向用户推销自己的产品或服务。因此,让用户通过浏览器查询服务器的后端数据库是许多web服务提供者必需有的服务,asp通过内置的adodb组件来实现这一功能。可以使用ado去编写紧凑简明的脚本以便连接到odbc兼容的数据库和oledb兼容的数据源。具体的操作步骤可以归纳为以下几步:

①创建数据库源名(dsn)adodb通过odbc工作,因此要在odbc中设置dsn(数据源名)。打开windows的"控制面板",双击"odbc"的图标,然后选择"文件dsn"的属性页,单击<添加>,选择数据库驱动程序,然后单击"下一步",按照屏幕的指示键入数据源文件的名称,然后单击"下一步",再单击"完成"创建数据源。

②创建数据库链接链接用以保持一些关于正在访问的数据的动态信息,以及链接者信息。利用adodb的成员函数open和先前设定的dsn与数据库连接,其语法如下:setconnect=server.createobject("adodb.connection")''''创建了链接对象connect。connect.open("dsn=dsnname;uid=userid;pwd=password")''''打开链接。dsnname为数据源名;userid为用户名;password为用户口令。

③创建数据对象ado中的数据对象通常保存的是查询结果。recordset是ado中最复杂的对象,有许多属性和方法,灵活运用,可以达到许多好的效果。其创建方法如下:setrecordset=connect.execute(sqtstr)''''创建并打开了对象recordset,sqtstr是一个串,代表一条标准的sql语句。例如:sqlstr="select*fromb1"setrecordset=connect.execute(sqlstr)这条语句执行后,对象recordset中就保存了b1中的所有记录。

④操作数据库可利用execute方便地执行数据的插入、修改、删除等操作。如执行插入操作:sqlstr="insertintob1values(1,2)"connect.execute(sqlstr)

⑤关闭数据对象和链接在使用了ado对象之后,一定要关闭数据对象和链接。在asp中通过调用方法close实现关闭。关闭创建的数据对象:recordset.closesetrecordset=nothing关闭创建的链接对象:connect.closesetconnect=nothing完整的程序片段:

//产生组件实例

<%setconnect=server.createobject("adodb.connection")

//连接数据库

connect.open("dsn=dsnname;uid=userid;pwd=password")

//执行查询

sql=select*fromtablenamesetrs=connect.execute(sql)%>

//显示结果

<%dowhilenotrs.eof%>

<%=rs(fieldname)%><%rs.movenextloop%>

上述是用asp访问数据库的全过程,由于应用面向对象思想,所有操作都比较简单,用户需要注意的仅是对数据结构的了解、当前所操作的对象及对象的属性等等,只要对这些有了清晰的认识,再加上asp强大功能,在网络上使用数据库,实现用户与页面间交换信息,就再也不是什么难事了。

[nextpage]

四、主要功能程序段

4、1打开数据库

optionexplicit

dimconn,connstr,db,rs

db="database/#myshop.mdb"//数据库路径

setconn=server.createobject("adodb.connection")

connstr="provider=microsoft.jet.oledb.4.0;datasource="&server.mappath(""&db&"")

conn.openconnstr

4.2数据库查询操作

//大类查讯

setrs=server.createobject("adodb.recordset")

//只读方式打开

rs.open"selectanclass,anclassidfromanclass",conn,1,1

dowhilenotrs.eof

response.write"<ahref=javascript:turnx(''''r"&rs("anclassid")&"'''')>"

&trim(rs("anclass"))&"</a>"

rs.movenext

loop

rs.close

//小类查询

dimrs2

setrs2=server.createobject("adodb.recordset")

rs2.open"selectnclass,nclassidfromnclasswhereanclassid="&rs("anclassid")&"orderbynclassidorder",conn,1,1

dowhilenotrs2.eof

response.write"<ahref=class.asp?aid="

&rs("anclassid")&"&nid="&rs2("nclassid")&">"

&trim(rs2("nclass"))&"</a>"

rs2.movenext

loop

4.3添加记录操作

setrs=server.createobject("adodb.recordset")

//可写方式

rs.open"selectbookid,username,zhuangtai,zongerfromactions",conn,1,3

rs.addnew//添加一条新记录

rs("bookid")=bookid//添加相应的记录

rs("username")=username

…………

rs("zhuangtai")=6

rs("zonger")=0

rs.update//更新数据库

4.4删除记录操作

//从表actions中删除actionid匹配的记录;conn.execute"deletefromactionswhereactionid="

&request.querystring("actionid")

4.5记录的修改和查看

setrs=server.createobject("adodb.recordset")

rs.open"select*frombookswherebookid="&bookid,conn,1,3

rs("anclassid")=int(request("anclassid"))//修改各项记录

………………

rs.update

rs.close

ASP范文篇2

时间:2003-11-9作者:秩名

一.访问WEB数据库的多种方案

目前在WINDOWS环境下有多种访问WEB数据库的技术,主要有:

1.公共网关接口CGI(CommonGatewayInterface)

CGI是较早实现的技术。适用于多种服务器平台,如UNIX、WINDOWS等,但CGI的开发成本高、维护困难、功能有限、不具备事务处理功能、占用服务器资源较多。

2.INTERNET数据库连接器IDC(InternetDatabaseConnector)

IDC集成在ISAPI(InternetServerAPI)中,充分利用了DLL技术,易扩充,但编程较CGI更为复杂,只适用于小型数据库系统。

3.先进数据库连接器ADC(AdvanceDatabaseConnector)

ADC提供了ActiveXControl来访问数据库,它的主要特点是数据查询由用户端浏览器执行,因而需将服务器端数据库中的部分记录下载到用户端,系统开销较大、响应慢,只适用于特别频繁的数据库查询操作。

4.JAVA/JDBC语言编程

JAVA语言是一种面向对象、易移植、多线程控制的语言,可通过JDBC去连接数据库。用JAVA/JDBC编写的软件可移植性强,适用于多种操作系统,但其执行效率和执行速度还不理想,目前无法建立高效、高速的应用。

5.动态服务器页面ASP(ActiveServerPage)

ASP是微软公司最新推出的WEB应用开发技术,着重于处理动态网页和WEB数据库的开发,编程灵活、简洁,具有较高的性能,是目前访问WEB数据库的最佳选择。

二.ASP简介

1.ASP访问数据库的原理

ASP是服务器端的脚本执行环境,可用来产生和执行动态的高性能的WEB服务器程序。

当用户使用浏览器请求ASP主页时,WEB服务器响应,调用ASP引擎来执行ASP文件,并解释其中的脚本语言(JScript或VBScript),通过ODBC连接数据库,由数据库访问组件ADO(ActiveXDataObjects)完成数据库操作,最后ASP生成包含有数据查询结果的HTML主页返回用户端显示。

由于ASP在服务器端运行,运行结果以HTML主页形式返回用户浏览器,因而ASP源程序不会泄密,增加了系统的安全保密性。此外,ASP是面向对象的脚本环境,用户可自行增加ActiveX组件来扩充其功能,拓展应用范围。

2.ASP页面的结构:

ASP的程序代码简单、通用,文件名由.asp结尾,ASP文件通常由四部分构成:

1)标准的HTML标记:所有的HTML标记均可使用。

2)ASP语法命令:位于<%%>标签内的ASP代码。

3)服务器端的include语句:可用#include语句调入其它ASP代码,增强了编程的灵活性。

4)脚本语言:ASP自带JScript和VBScript两种脚本语言,增加了ASP的编程功能,用户也可安装其它脚本语言,如Perl、Rexx等。

3.ASP的运行环境

目前ASP可运行在三种环境下。

1)WINDOWSNTserver4.0运行IIS3.0(InternetInformationServer)以上。

2)WINDOWSNTworkstation4.0运行PeerWebServer3.0以上。

3)WINDOWS95/98运行PWS(PersonalWebServer)。

其中以NTserver上的IIS功能最强,提供了对ASP的全面支持,是创建高速、稳定的ASP主页的最佳选择。

4.ASP的内建对象

ASP提供了六个内建对象,供用户直接调用:

1)Application对象:负责管理所有会话信息,可用来在指定的应用程序的所有用户之间共享信息。

2)Session对象:存贮特定用户的会话信息,只被该用户访问,当用户在不同WEB页面跳转时,Session中的变量在用户整个会话过程中一直保存。Session对象需cookie支持。

3)Request对象:从用户端取得信息传递给服务器,是ASP读取用户输入的主要方法。

4)Response对象:服务器将输出内容发送到用户端。

5)Server对象:提供对服务器有关方法和属性的访问。

6)ObjectContext对象:IIS4.0新增的对象,用来进行事务处理。此项功能需得到MTS(MicrosoftTranscationServer)管理的支持。

5.ASP的主要内置组件:

1)AdRotator组件:用来按指定计划在同一页上自动轮换显示广告,用于WWW上日益重要的广告服务。

2)BrowserCapabilities组件:确定访问WEB站点的用户浏览器的功能数据,包括类型、性能、版本等。

3)DatabaseAccess组件:提供ADO(ActiveXDataObjects)来访问支持ODBC的数据库。

4)FileAccess组件:提供对服务器端文件的读写功能。

5)ContentLinking组件:生成WEB页内容列表,并将各页顺序连接,用于制作导航条。

此外,还可安装Myinfo、Counters、ContentRotator、PageCount等组件,用户也可自行编制Actiive组件,以提高系统的实用性。

6.DatabaseAccess组件ADO

WWW上很重要的应用是访问WEB数据库,用ASP访问WEB数据库时,必须使用ADO组件,ADO是ASP内置的ActiveX服务器组件(ActiveXServerComponent),通过在WEB服务器上设置ODBC和OLEDB可连接多种数据库:如SYBASE、ORACLE、INFORMIX、SQLSERVER、ACCESS、VFP等,是对目前微软所支持的数据库进行操作的最有效和最简单直接的方法。

ADO组件主要提供了以下七个对象和四个集合来访问数据库。

1)Connection对象:建立与后台数据库的连接。

2)Command对象:执行SQL指令,访问数据库。

3)Parameters对象和Parameters集合:为Command对象提供数据和参数。

4)RecordSet对象:存放访问数据库后的数据信息,是最经常使用的对象。

5)Field对象和Field集合:提供对RecordSet中当前记录的各个字段进行访问的功能。

6)Property对象和Properties集合:提供有关信息,供Connection、Command、RecordSet、Field对象使用。

7)Error对象和Errors集合:提供访问数据库时的错误信息。

三.ASP访问数据库步骤

在ASP中,使用ADO组件访问后台数据库,可通过以下步骤进行:

1.定义数据源公务员之家版权所有

在WEB服务器上打开“控制面板”,选中“ODBC”,在“系统DSN”下选“添加”,选定你希望的数据库种类、名称、位置等。本文定义“SQLSERVER”,数据源为“HT”,数据库名称为“HTDATA”,脚本语言采用Jscript。

2,使用ADO组件查询WEB数据库

1)调用Server.CreateObject方法取得“ADODB.Connection”的实例,再使用Open方法打开数据库:

conn=Server.CreateObject(“ADODB.Connection”)

conn.Open(“HT”)

2)指定要执行的SQL命令

连接数据库后,可对数据库操作,如查询,修改,删除等,这些都是通过SQL指令来完成的,如要在数据表signaltab中查询代码中含有“X”的记录

sqlStr=“select*fromsignaltabwherecodelike‘%X%’”

rs=conn.Execute(sqlStr)

3)使用RecordSet属性和方法,并显示结果

为了更精确地跟踪数据,要用RecordSet组件创建包含数据的游标,游标就是储存在内存中的数据。

rs=Server.CreateObject(“ADODB.RecordSet”)

rs.Open(sqlStr,conn,1,A)

注:A=1读取

A=3新增、修改、删除

在RecordSet组件中,常用的属性和方法有:

rs.Fields.Count:RecordSet对象的字段数。

rs(i).Name:第i个字段的名称,i为0至rs.Fields.Count-1

rs(i):第i个字段的数据,i为0至rs.Fields.Count-1

rs("字段名"):指定字段的数据。

rs.Record.Count:游标中的数据记录总数。

rs.EOF:是否最后一条记录。

rs.MoveFirst:指向第一条记录。

rs.MoveLast:指向最后一条记录。

rs.MovePrev:指向上一条记录。

rs.MoveNext:指向下一条记录。

rs.GetRows:将数据放入数组中。

rs.Properties.Count:ADO的ResultSet或Connection的属性个数。

rs.Properties(item).Name:ADO的ResultSet或Connection的名称。

rs.Properties:ADO的ResultSet或Connection的值。

rs.close():关闭连接。

4)关闭数据库

conn.close()

四.查询WEB数据库举例

下面这段示例程序是访问SQLSERVER数据库的signaltab表,表中有三个字段:code(代码字段,字符型,3位),class(分类字段,字符型,10位),memo(备注字段,字符型,20位)。程序中数据源DSN:HT、用户名:client、口令:passwd。

屏幕输入页面input.asp

<%@language=javascript%>

<html>

<head>

<title>请输入查询条件PLEASEINPUTCONDITION</title>

</head>

<formaction=shotquery.aspMETHOD="post"target="_self">

<inputTYPE="text"size=6maxlength=3NAME=signalCodeVALUE="代码"></font></p>

</center></div><p></p>

<inputLANGUAGE="javascript"TYPE="submit"VALUE=“确认”NAME="B1"

<inputTYPE="reset"VALUE=“清除”NAME="B2">

<inputLANGUAGE="javascript"TYPE="button"NAME="B3"VALUE=“返回”

ONCLICK="window.history.back()">

</font></p>

</center></div>

</form>

</body>

</html>

数据库处理程序shotquery.asp

<!--#includevirtual="/master/lib.inc"-->

<scriptlanguage=javascriptrunat=server>

varsignalCode=Request.Form("signalCode");

dbConn=Server.CreateObject("ADODB.Connection");

dbConn.open("DSN=HT;UID=client;PWD=passwd");

rs=Server.CreateObject("ADODB.RecordSet");

varsqlStr="select*fromsignaltaborderbycode";

rs.open(sqlStr,dbConn,1);

if(rs.RecordCount<1){

Response.write("<p>无符合条件记录</p>");

Response.write("<p><form><inputtype=''''button''''value=''''返回''''onclick=''''window.history.back()''''name=''''b1''''></form></p>");

}

else{

Response.write("<P><center><B>数据查询结果</B></center></P>");

Response.write("<tr><td><b>代码</b></td><td><b>分类</b></td><td><b>备注</b></td>");

for(vari=1;i<=rs.Pagesize;i++){

if(!rs.Eof){

Response.write("<td><spanstyle=''''font-size:9t''''>"+rs("code")+"</span></td>");

Response.write("<td><spanstyle=''''font-size:9t''''>"+rs("class")+"</span></td>");

Response.write("<td><spanstyle=''''font-size:9t''''>"+rs("memo")+"</span></td>");

Response.write("</tr>");

rs.MoveNext();

}

elsebreak;

}

Response.write("</table></form>");

rs.close();

dbConn.close();

ASP范文篇3

ASP(ActiveServerPages)是Microsoft于1996年11月推出的Web应用程序开发技术。微软声称设计出了一个完美的Active平台,在微软的文件中把ASP描述为:"一个服务器的脚本环境,在这里可以生成和运行动态的、交互的、高性能的Web服务器应用程序"。从这段描述我们可以看出,ASP既不是一种语言,也不是一种开发工具,而是一种技术框架,其主要功能是为生成动态的交互式的Web服务器应用程序提供一种功能强大的方法或技术。ASP的主要特性是能够把HTML、脚本、组件等有机地组合在一起,形成一个能够在服务器上运行的应用程序,并把按用户要求专门制作的标准HTML页面送给客户端浏览器。ASP属于ActiveX技术中的服务器端技术。与我们通常在客户端实现动态主页的技术如Javaapplet、ActiveXControl、VBScript、javascript等所不同的是,ASP中的命令脚本语句都是在服务器中解释执行,执行后的结果产生HTML页面并送到浏览器。由于ASP是在服务器端解释执行,开发者可以不必考虑浏览器是否支持ASP。同时,由于只是标准的HTML页面送到浏览器,在浏览器上看不到ASP程序,因此可以防止程序被窃取,保护了开发者的利益。

二、为什么用ASP

随着Internet的发展,静态Web站点的开发与维护变得越来越困难,一方面信息的不断增加和变化,使站点维护人员不得不经常修改他们的网页,特别是基于数据库驱动的Web站点更是如此;另一方面静态网页由于不能与浏览者进行有效交互,使人们感到越来越乏味,而不愿意再一次地进入同一站点。所以开发动态网页或动态内容成了越来越多的站点所追求目标。所谓动态内容是由每一个用户按照自己的需求发出请求而特殊制作的Web网页,例如访问某一网站的新用户得到的欢迎词与重新返回到该站点的用户得到的欢迎词是不同的。

三、ASP的特点

ASP具有学习快、设计快的特点,不需花许多时间即可学会和快速设计出WEB应用程序。

ASP的源程序码在服务器端执行,代码保密性好。

集成与HTML中,无需编译链接可直接执行;使用文本编辑器如记事本,即可设计。

与浏览器无关,用户端只要使用常规可执行HTML代码的浏览器。

ASP是面向对象的(Object_Oriented)

四、ASP与其它相关技术的比较

随着Internet的发展,静态Web站点的开发与维护变得越来越困难,一方面信息的不断增加和变化使站点维护人员不得不经常修改他们的网页,特别是基于数据库驱动的Web站点更是如此;另一方面静态网页由于不能与浏览者进行有效交互,使人们感到越来越乏味,而不愿意再一次地站点。所以开发动态网页或动态内容成了越来越多的站点所追求目标。

所谓动态内容是由每一个用户按照自己的需求发出请求而特殊制作的Web网页,例如访问某一网站的新用户得到的欢迎词与重新返回到该站点的用户得到的欢迎词是不同的。有许多技术可以实现动态内容,目前常用的主要有两种:CGI(公共网关接口)和ISAPI。

CGI是开发较早的技术,它可以很好地实现动态内容,但它有两个主要缺点。一是对每一个请求(请求一个页面)CGI都要产生一个新的进程,同一时刻发出的请求越多,服务器产生的进程也就越多。我们知道,产生一个进程是非常耗时的,而且需要用到大量的服务器RAM,所以其响应时间相对较长,特别是当进程多到某一数量后,服务器性能将显著下降。另一方面,CGI的主要编程语言是C语言,对大多数网页开发人员来说,要掌握和精通这些编程语言需要花很长的时间。

ISAPI针对CGI第一个缺点进行了改进,利用DLL(动态链接库)技术,以线程代替进程,提高了性能和速度,但要考虑线程的同步问题,而且开发步骤烦琐。

ASP除了提供CGI的所有功能外,还具有许多显著的优点。ASP运行在Web服务器的同一个进程中,可以更快、更有效地处理客户请求;ASP提供更方便、更简单的访问数据库的方法,使开

发基于数据库驱动的Web应用程序更加容易;ASP支持几乎所有的脚本语言,如VBScript、Jscript和Perl,其主要脚本语言VBScript是基于众多编程人员非常熟悉VisualBasic语言,所以ASP更容易被人们所接受。

五、ASP的工作过程

ASP技术直接建立于微软的Web服务器之中,所有微软的Web服务器都支持ASP,如WindowsNTInternetInformationServer(IIS),WindowsNTWorkstation以及Windows95PersonalWebServer。你不要担心浏览器是否能执行你的ASP程序,你的WEB服务器会自动把ASP程序码,解释为HTML格式的主页内容,再送到用户端的浏览器显示出来。如图1所。

六、用ASP实现用户登陆WEB数据库

在ASP中访问数据库,可采用ASP内置ActiveX服务器组件棗数据库访问组件,使用ActiveXDataObject(ActiveX数据对象,简称ADO)的技术。ADO通过在WEB服务器上设定ODBC,来建立与多种数据库的连接,其中包括SQLServer、Oracle、Foxpro等各种大、中、小型数据库。下面我们举例说明用ASP实现用户登陆WEB数据库的过程。

1.用户在客户机浏览器上输入一个URL地址并回车,请求一个页面。

例如yin/User_Login/default.htm。

2.服务器接受用户请求,调出相应页面(假设该页面含有一个表单)。

例如default.htm,其代码如下:

<html>

<head>

<metaname="GENERATOR"content="MicrosoftFrontPage3.0">

<title>系统登录</title>

</head>

<h2align="center">系统登录</h2><hr>

<formmethod="post"action=”user_login.asp”name=”form”>

<center>

请输入用户名:<inputname="username"type="text">

请输入口令:<inputtype="password"name="password"size="14">

<br>

<inputtype="submit"value="登录"name="submit">

<inputtype="reset"value="复位"name="reset">

</center></form></body>

</html>

当浏览器端填入要查询的用户名和口令并按下submit按钮时,它将用户名以username,口令以password的变量形式送到user_login.asp中。

ASP范文篇4

当讨论Request对象内容时,要研究的集合之一就是ServerVariables集合。这个集合包含了两种值的结合体,一种是随同页面请求从客户端发送到服务器的HTTP报头中的值,另外一种是由服务器在接收到请求时本身所提供的值论文。为显示ServerVariables集合中值的使用方式,在RequestObject页面(Show_request.asp)中,点击“ServerVariablesExamples”链接,打开另外一个页面,如下图所示:

下图所示窗口显示的是ServerVariables集合中一些非常有用的值的一个子集。

“自引用”页面

在ServerVariables集合中返回的值包含Web服务器的详细信息和当前页面的路径信息。在任何地方创建一个页面都可使用这些信息。例如创建一个“自引用”页面,此页面能够再次调用自身完成另一项任务,我们可以用以下代码:

”METHOD=”POST”>

同样的效果可以用HTTP的“SCRIPT_NAME”值获得:

”METHOD=”POST”>

使用元素打开一个不同页,可以使用:

...

...

”>NextPage

...

即使原始页面的名称或位置发生变化,这些实例都能正常工作,因为使用了当前页面的路径信息(当然,第二个例子在分离的目标页的名称发生变化时运行会失败)。

换句话说,如果为搜索引擎的子会话自动建立URL,可以收集ServerVariable的一些值:

strFullURL=&Request.ServerVariables(“LOCAL_ADDR”)_

&“:”&Request.ServerVariables(“SERVER_PORT”)_

&Request.ServerVariables(“PATH_INFO”)

这将创建一个完整的URL包括端口号(这种情况下,不是标准值80)。例如,结果可能是:

194.74.60.254:1768/thispath/thispage.asp

检测浏览器的版本

ServerVariables集合中,另外一个有用的值是用户浏览器的用户字符串。在“DetectingtheBrowserType”页面(browsertype.asp),使用ServerVariables集合中的“HTTP_USER_AGENT”值来获得用户字符串,一些脚本用来解析该信息并寻找生产厂家名称和浏览器版本。

对IE5.0和Navigator4.61的搜索结果分别不同,对于其他厂家的浏览器,可以得到一个链接在AltaVistaWeb站点自动开始搜索厂家的名称。

注意,Netscape在用户字符串中不提供厂家的名称,因而无法绝对保证一个浏览器一定是Navigator。

检测浏览器的语言

ServerVariables集合中另外一个有用的值是“HTTP_ACCEPT_LANGUAGE”,它包含了一个当浏览器安装时指定的,或硬编码进用户的地区版本的语言代码。语言代码的例子有en-us(英国、美国)、de-at(德国、澳大利亚)和es-pe(西班牙、秘鲁)。

语言代码可以是一般的且省略方言标识:例如,在我们的站点Wrox者,大批浏览者都是将en(英语)作为语言代码。

因此,可以检测语言代码并自动装载一个合适的特定地区或指定语言版本的页面。

StrLocale=Lcase(Left(Request.ServerVariables(“HTTP_ACCEPT_LANGUAGE”),2))

SelectCasestrLocale

Case“en”:Response.Redirect“uk_site.co.uk/”

Case“de”:Response.Redirect“de_site.co.de/”

Case“fr”:Response.Redirect“fr_site.co.fr/”

‘...etc

CaseElse:Response.Redirect“/”

EndSelect

或者根据特定的方言,重定向页面:

strLocale=Lcase(Request.ServerVariables(“HTTP_ACCEPT_LANGUAGE”))

SelectCasestrLocale

Case“en-gb”:Response.Redirect“uk_site.co.uk/”

Case“en-us”:Response.Redirect“/”

Case“es-pe”:Response.Redirect“es_site2.co.pe/”

‘...

CaseElse:Response.Redirect“/”

EndSelect

其他有用的ServerVariables集合的值

可以访问和使用ServerVariables集合中的任何一成员,控制ASP页面响应一个请求的方式。可以检查一个浏览者访问站点时使用的是否是缺省端口80或还是另一个。在这个例子里,寻找通过端口443的访问——这个端口提供的是安全套接字层(SecureSocketLayer,SSI)访问(和其他的协议),且将它们重定向到一个相应的页面。

IfRequest.ServerVariables(“SERVER_PORT”)=“443”)Then

Response.Redirect“/securesite/default.asp”‘Secureuser

Else

Response.Redirect“/normalsite/default.asp”‘Non-secureuser

EndIf

假如要求浏览者注册且由服务器验证(而不是允许他们在Web服务器的IUSER帐号下匿名访问,这个问题将在后面章节中详细讨论),可以查询用户名称,来判定正在与我们打交道的用户是谁,是否装载页面给该用户。例如,下面的这个代码将只向名为Administrator的用户显示管理链接。

...

ChangeDisplayConfiguration

ChangeDisplayColors

ChangeKeyboardConfiguration

AdministerAllUsers

AdministerLogonInformation

...

注意ASP不填写ServerVariables集合直到你访问其中的一个成员。首次访问该集合的一个成员将使IIS得到它的全部,应只在需要时才使用ServerVariables集合。

其他Request和Response技巧

现在,来看一下几个使用Request和Response对象的有用技巧,包括:

·连接、缓冲和页面重定向的管理。

·HTTP报头、缓存与“到期”页面的操作。

·利用客户证书。

·创建定制的日志文件消息。

1.连接、缓冲和页面重定向的管理

ASP的一个很有用的特点就是使用户能够从一个ASP网页转向到另一个网页(ASP或HTML),或另一个源文件(例如一个ZIP文件或文本文件)。这对用户来说是透明的,实际上是浏览器做这个工作。当使用Response.Redirect方法来载入一个新的网页时,实际上是发送回一个特殊的HTTP报头到客户。此报头为:

HTTP/1.1302ObjectMoved

Location/newpath/newpage.asp

浏览器读到此报头信息,并按Location值的指示载入页面。这在功能上与在Web页中使用客户端HTML标记相同,例如:

这带来的一个问题是,服务器与用户之间的服务器可能会提供它自己的包含与新页面的链接的消息,而不是直接载入新页面。而且浏览器根据厂商和版本可能做同样的工作。这就去除了假定的透明,而且对用户来说一直收到的是错误信息,则对你的站点的访问变得比较麻烦。

在发送诸如文本或HTML等任何页面内容后,我们就不能再使用Redirect方法。然而,一个看起来能够限制“服务器影响”的方法是,先确定没有输出(包括HTTP报头)被发送到客户。在ASP2.0中,必须打开缓冲,然后使用Clear方法来清空缓冲区:

Response.Buffer=True

‘Someconditiontoselecttheappropriatepage:

IfRequest.ServerVariables(“SERVER_PORT”)=1856Then

StrNewPage=“/newpath/this_page.asp”

Else

StrNewPage=“/newpath/the_other_page.asp”

EndIf

Response.Clear

Response.RedirectstrNewPage

在ASP3.0中,缓冲缺省为打开,所以第一行可被忽略,但它是无害的,而且能确保我们的网页即使在ASP2.0环境中也仍然能工作。

与其使用这种类型的HTTP报头重定向,不如使用ASP3.0的一个新特性,它允许我们通过Server对象的Transfer方法转换为执行另一个网页,我们将在第4章进一步研究这个问题。

1)ASP页面缓冲区

正如已看到过的,IIS5.0中ASP3.0页面缓冲是缺省打开的,在早期的版本中是缺省关闭的。微软告诉我们缓冲在IIS5.0中提供了更有效的网页传送,这就是缓冲缺省状态被改变的原因。在大部分情况下,这对我们没有影响。但是,假如有一个非常大的网页,或一个用ASP或别的服务器端代码和组件花费一定时间创建的网页,当其各部分完成时,我们能够分批刷新它们到客户:

...

...Codetocreatefirstpartofthepage

...

Response.Flush

...

...Codetocreatenextpartofpage

...

Response.Flush

...

有时可能希望在页面结束之前的某些点上停止代码的执行,可以通过调用End方法去刷新所有的当前内容到客户并中止任何进一步的处理过程。

...

...Codetocreatefirstpartofthepage

IfstrUserName=“”ThenResponse.Clear

...

...Codetocreateanewversionofthispartofthepage

...

这里有两上演示缓冲和重定向的实例网页,可以从“ResponseObject”主页面(sow_response.asp)下载它们。第一个Response.Redirect例子网页命名为redirect.asp,它在缓冲的页面中定入一些内容,清除缓冲区,并重定向到另一个网页:

ForintLoop=1To1000000

Response.Write“.”

Next

Response.Clear

Response.Redirect“show_redirect.asp”

Response.End

目标页show_response.asp,做同样的工作,但重定向则是回到“ResponseObject”主页。因为这些网页都在缓冲区内,而且所有的输出在重定向之前必须清除,故在浏览器中没有可见的输出。然而,可以通过观察浏览器的状态看到发生的每一次重定向。如下图所示:

在“ResponseObject”主页中,点击“Response.Flush”链接将打开第二个示例网页usebuffer.asp,它简单地遍历一个字符串的每一个字符,以一定的延迟将它们刷新到客户,这虽是Web服务器和ASP极低效率的使用方式,但它演示了缓冲的工作方式。

下面是所要求的最小化的ASP代码,注意我们分别把每个字符刷新到浏览器,因为不这样的话它将被存放在缓冲区中,直至网页完成:

strText=“Thistexthasbeenflushedtothebrowserusing“&_

“Response.Flush

ForintChar=1ToLen(strText)

ForintWrite=1To100000

Next

Response.WriteMid(strText,intChar,1)

Response.Flush

Next

2)Response.IsClientConnected属性

IsClientConnected属性在ASP2.0中已经存在了,但却有些不可靠。在其返回一个准确的结果之前必须发送一些输出到客户。这一问题在ASP3.0中已被解决。现在这一属性可被自由使用。

IsClientConnected是观察用户是否仍连到服务器和正在载入ASP创建的网页的有用方式。如果用户断开连接或停止下载,我们就不用再浪费服务器的资源创建网页,因为缓冲区内容将被IIS丢弃。所以,对那些需要大量时间计算或资源使用较多的网页来说,值得在每一阶段都检查浏览器是否已离线:

...

...Codetocreatefirstpartofthepage

...

IfResponse.IsClientConnectedThen

Response.Flush

Else

Response.End

EndIf

...

...Codetocreatenextpartofpage...

1.操作HTTP报头

我们已经在几处见到ASP如何创建或修改在响应页面请示时被发送到客户的HTTP报头。在Response对象中有几个属性和方法可帮助我们做到一点。下面是一些报头方法:

·控制缓存和有效期。

·创建状态和定制的HTTP报头。

·指定MIME类型或内容类型。

·添加PICS标签。

接下来将简要地研究每一个方面。可在“ResponseObject”主页(show_response.asp)上,单击相关属性名或方法名,来检查我们所说的属性和方法,如下图所示:

1.缓存和“到期”ASP网页

用户的浏览器以及他们和服务器这间的任一服务器,都可以缓存HTML和用ASP创建的网页。当用户随后请求页面时,浏览器就发送一个“最新修改”的请求到服务器(使用一个包含缓存版本的日期的HTTP_IF_MODIFIED_SINCE报头),询问网页是否已被修改。

若没有被修改,服务器应用状态码和消息“304NotModified”来响应,浏览器将使用缓存的内容而不会通过网络下载一个副本。若已经存在已修改的版本,它就会与“200OK”状态码和消息一道被发送出去。

1)Response.CacheContol属性

其他的一些因素也会影响这一处理过程。然而,任一被网页使用的网络路由内的服务器(一般位于客户机端),能被通过设置Response.CacheControl属性为Private来放弃缓存网页。在ASP3.0中对ASP网页这是缺省的,不用设置。但在网页为个别访问者特别定制时尤其有用。这可以阻止别的在同一网络上的用户进入同一网页。当CacheControl的属性值被设定为Public时,允许服务器缓存网页。注意,一些服务器可能表现得不尽相同,或忽视或越过这个报头。

在IE4中,在服务器缓存可用时,有可能得到一个虚假的“Thispagehasexpired”消息。我们已提供了一个网页(expiretest_form.asp),可以通过自己的服务器在网络上做试验,来检查这一属性的影响。可以通过在“ResponseObject”主页中单击“Response.CacheControl”链接来显示这个网页。如下图所示:

这一页面提交到expiretest_result.asp网页时,能够设置Response.CacheControl属性,然后在网页中插入值和脚本被执行的时间:

<%

IfRequest.Form(“public”)=“on”Then‘Cache-Controlcheckboxwasticked

Response.CacheControl=“Public”

Else

Response.CacheControl=“Private”

EndIf

%>

...

Cache-Controlis:<%=Response.CacheControl%>

Valueintextboxis:<%Response.WriteRequest.Form(“textbox”)%>

<%

Response.WriteRight(“0”&Hour(Now),2)&“:”&Right(“0”&Minute(Now),_

&2)&“:”&Right(“0”&Second(Now),2)

%>

通过单击浏览器上的“Back”和“Forward”,能看到代码是自动执行还是使用缓存的副本,如下图所示。结果随浏览器的不同而变化。

2)Response.Expires和Response.ExpiresAbsolute属性

控制缓存的网页存放时间的两个属性为Response对象的Expires和ExpriesAbsolute属性。Response.Expires定义了风页在从缓存区被丢弃前应保持有效的时间长度,以创建以来的分钟数形式表示。ExpiresAbsolute属性为到期时间设置了一个绝对的日期和时间。

我们提供一个命名为addheaders_form.asp的例子网页,用于演示如何使用这些属性。在“ResponseObject”主页中单击对这两种属性的链接,如下图所示:

在这一页面中,可加入自己定制的HTTP报头,并可设置一些影响响应的HTTP报头的多种属性。在“提交查询内容”按钮上单击时,页面show_headers.asp在返回的数据流中添加所选的报头,然后显示用来完成此操作的代码,显示相应的执行时间,可用来检查页面是被缓存还是被再次执行,如下图所示:

show_headers.asp网页中的代码创建和添加HTTP报头,程序如下:

<%

‘WriteHTTPheadersbeforeanyotheroutput

IfRequest.Form(“expires”)=“on”Then_

Response.Expires=Request.Form(“expires_value”)

IfRequest.Form(“expiresabs”)=“on”Then_

Response.ExpiresAbsolute=Request.Form(“expiresabs_value”)

IfRequest.Form(“lastmod”)=“on”Then_

Response.AddHeader“LAST-MODIFIED”,Cstr(Request.Form(“lastmod_value”))

IfRequest.Form(“pragma”)=“on”Then_

Response.AddHeader“PRAGMA”,CStr(Request.Form(“pragma_value”))

IfRequest.Form(“refresh”)=“on”Then_

Response.AddHeader“REFRESH”,CStr(Request.Form(“refresh_value”))

IfRequest.Form(“addheader”)=“on”AndLen(Request.Form(“addheader_name”))Then_

Response.AddHeaderCStr(Request.Form(“addheader_name”)),_

CStr(Request.Form(“addheader_value”))

IfRequest.Form(“status”)=“on”Then_

Response.Status=Request.Form(“status_value”)

%>

...

...Showcodeandexecutiontime

...

其余部分仅仅是显示已被执行的代码和执行时间。读者会注意到包含在网页中的定制的报头“PRAGMA”(至今我们还没讨论过)。一些(先前的)服务器使用它作为网磁是否应被缓存的指示。缺省是网页被缓冲,除非接受到HTTP报头“PRAGMA=NO-CACHE“。

2.创建状态码和定制的HTTP报头

可使用先前在实例网页中所看到的Response对象的AddHeader方法来创建自己的状态码或自己喜欢的定制的报头。这一方法需要两个参数:HTTP报头名称或一个包含其值或分配给它的值的字符串。作为一个例子,下面的代码在页面中添加REFRESH报头:

Response.AddHeader“REFRESH”,”60;URL=newpath/newpage.asp”

这等同于客户机端元素:

换句话说,也可配合Status属性使用AddHeader方法使浏览器载入一个新的页面:

Response.Status=“302ObjectMoved”

Response.Addheader“Location”,“newpath/newpage.asp”

这等同于使用Response.Redirect方法:

Response.Redirect“newpath/newpage.asp”

Response.Status属性可被用来发送一些所需要的状态消息,例如添加如下几行:

Response.Status=“401Unauthorized”

Response.Addheader“WWW-Authenticate”,“BASIC”

强制浏览器显示一个用户名/口令对话框,然后使用BASIC验证把它们发送回服务器(将在本书后续部分看到验证方法)。

3.MIME类型和内容类型

当我们想向浏览器发送一个动态创建的字符串,而且它们自己提供给浏览器时没有直接指明内容类型,而是提供表示是否是磁盘文件的扩展名时,Response.ContentType是非常有用的。除非特别指定,所有ASP创建的网页缺省都为“text/type”。内容类型的标识符是MIME类型(MIME代表Multi-purposeInternetMultimediaExtension或Multi-puposeInternetMailExtension,通常依据上下文来定)。

例如,若发送到客户的数据注解是通过从数据库读二进制值创建的图片,就需要在发送任何内容之前添加合适的CONTENT-TYPE报头:

Response.ContentType=“image/jpeg”

假如从一个数据库创建一个XML文件,使用MIEM类型“text/xml”;并且如果正在创建一个文本文件可以在文件编辑器中显示或作为一个磁盘文件在客户上被存储起来,使用“text/text”。

4.添加PICS卷标

Respnse.Pics属性仅仅是添加一个PICS(PlatformforInternetContentsystem)卷标到页面上,方式与通常用标记所用的方式相同:

QUOT=Chr(34)

StrPicsLabel=“(PICS-1.0”&QUOT&“/ratingsv01.html”_

&QUOT&“1gentruecomment“&QUOT_

&“RSACiNorthAmericaServer”&QUOT&“for“&QUOT_

&“”&QUOT&“on“&QUOT_

&“1999.08.01T03:04-0500”&QUOT&“r(n0s0v2l3))”

Response.Pics(strPicsLabel)

这段代码添加了如下的PICS卷标:

(PICS-1.0“/ratingsv01.html”1gentruecomment“RSACi

NorthAmericaServer”for“”on“1999.08.01T03:04-0500”

r(n0s0v2l3))

要得到关于PICS的更多的信息,或了解更多的定义页面内容的方式,请检索/站点。

在InternetServiceManager中定义报头

在第1章,已经说明了如何在InternetServiceManage(MMC插件)应用程序中设置每个Web网站和IIS5.0目录的属性,这就定义了使用此站点或目录资源发送到客户机的所有请求的HTTP报头,也就提供了使用每个网页中的ASP脚本代码设置这些属性的替代方法。

在Web站点或目录上右击鼠标并选择“Properties”,在其对话框的“HTTPHeaders”选项卡中,可设置页面内容有效期的相对时间或绝对日期,定义定制的报头,创建PICS内容等级标签,也可以通过MIME类型映射来定义内容类型,如下图所示:

在上图中,可以看到已创建了自定义的REFRESHHTTP报头,应用于从此目录载入的所有网页。即每一分钟自动地重载(刷新)一次(对于显示棒球比赛的最近比分是非常理想的,但对服务器而言负担太重了)。CustomHTTPHeaders栏的Edit对话框如下图所示:

要在“MIMEMap”框中添加自定义的内容类型映射,只需在“Properties”主对话框中单击“FileTypes”按扭把它们添加到清单中即可,如下图所示:

当使用HTTP报头开始试验时,你很快会发现不是所有的浏览器表现都相同,许多浏览器以不同的方式响应不同的HTTP报头,使得可靠地建立一个普遍适用的原则有时极为困难。

2.使用客户证书

假如设立了一个安全的Web网站或部分内容具有安全机制的网站,可安装一个数字服务器证书,通过允许访问者使用证书中的加密的细节,来验证服务器。每一次对该站点或目录的页面请求,服务器都将发送证书的一个副本,浏览器可检查这个副本以确定正在和谁交谈。

同样,也可设置服务器,要求用户在进入网站时提供一个有效的数字证书。他们可从很多来源获得此证书,例如Verisign()或ThawteConsulting()。读者将在第25章看到这一处理过程的细节。

这些情况都使用了Request对象的ClientCertificate集合的值,本章的实例代码中,已包含了一个显示用户如何使用些集合值的一些方法的页面。

这一网页被命名为showcert.asp,而且其所做的一切就是遍历ClientCertificate集合显示其包含的所有值。可使用以前经常使用的简单代码来完成它,唯一的不同之处就是建立一个HTML表以容纳结果,并将其截为每60个字符一组。

<%

ForEachkeyItemInRequest.ClientCertificate()

StrItemValue=Request.ClientCertificate(keyItem)

IfLen(strItemValue)>90ThenstrItemValue=Left(strItemValue,60)&“..etc.”

Response.Write“”&keyItem&“=“&strItemValue&“”

Next

%>

运行结果如下图所示:(由于豆豆没有申请服务器证书,该图略)

使用客户证书重定向

一旦要求所有访问网站或部分网站的浏览者给出的其客户证书,就可以使用其包含的信息来制作我们为此用户创建的网页。例如,可使用他们的证书的Organization条目来自动使他们重定向到该网站的指定部分,使别的访问者重定向到别的地方:

IfRequest.ClientCertificate(“SubjectO”)=“WroxPressInc”Then

Response.Redirect“/wrox_staff/default.asp”‘Wroxstaffsite

Else

Response.Redirect“/public/Default.asp”‘Normalpublicsite

EndIf

相应地,可使用Country条目来使访问者重定向到一个相应的网站:

SelectCaseRequest.ClientCertificate(“SubjectC”)

Case“UK”:Response.Redirect“uk_site.co.uk/”

Case“DE”:Response.Redirect“de_site.co.de/”

Case“FR”:Response.Redirect“fr_site.co.fr/”

‘...ect.

CaseElse:Response.Redirect“/”

EndSelect

3.读写二进制数据

有两个方法提供了对从浏览器发送到服务器的HTTP数据流和从服务器返回到浏览器的数据流的二进制数据访问。Request.BinaryRead方法可得到指定要读取的字节数的参数,并返回变体类型的数组,其中包含从请求的POST段中得到的字节(例如在ASP的Form集合中数据)。下面的程序读数据的头64个字节:

varContent=Request.BinaryRead(64)

假如使用了BinaryRead方法,以后就不能访问ASP的Request.Form集合。同样,一旦我们采用任何方式引用了Request.Form集合,就不能使用BinaryRead方法。

把二进制数据写进ASP创建的响应流中也是可能的,可采用BinaryWrite方法。需要给其提供想写到客户的字节的变体类型数组:

Response.BinaryWrite(varContent)

这些方法都很少使用,除非从一个数据库创建非HTML源才用到这些方法。使用的一个实例就是从数据库读取组成图像的字节,并使用BinaryWrite方法把它发送到客户。

4.创建定制的日志消息

假如设置了服务器,以W3CExtendedLogFileFormat格式将请求记录到一个文本文件,可使用Response.AppendToLog方法在日志文件条目的结尾处添加一条消息字符串。若想为特定的网页存储一些值或消息,或在脚本中出现了特定的情况时,这种方式是非常有用的。

例如,通过的Intranet的“stationaryorder”应用程序,可以记录超过特定的条目数目的雇员的部门号码:

...

IfintItemCount>25Then

Response.AppendToLog“Largeorderfrom‘”&strDept&department.”

EndIf

...

设置扩展的日志

要使用AppendToLog方法,必须激活W3CExtendedLogFileFormat日志设置。该设置方法是,进入Properties对话框中的WebSite选项卡,选中EnableLogging复选框,选择W3CExtendedLogFileFormat并单击Properties按钮,如下图所示:

在出现的ExtendedLoggingProperties对话框中,可选择想包括进日志文件的条目。确保选中URIStem,否则AppendToLog方法将失败,如下图所示:

我们提供了一个试图在日志文件中写入一个条目的简单实例页面,可从RequestObject主页(show_request.asp)中的AppendToLog方法链接处打开它。这一页面所做的全部工作就是创建一个包含当前日期和时间的简单字符串,然后执行AppendToLog方法:

strToAppend=“Pageexecutedon”&Now

Response.AppendToLogstrToAppend

结果如下图所示:

小结

本章已经开始了对ASP3.0的研究,而且我们也看到了ASP3.0如何与InternetInformateionServer5.0共同工作,以提供一个易用的、高效的创建动态Web网页和Web应用程序的方法。当然,仍有一些地方需要去研究,本章仅仅是学习了ASP内置的两个最基本的对象。

ASP范文篇5

1.开题报告作为毕业设计(论文)答辩委员会对学生答辩资格审查的依据材料之一。此报告应在指导教师指导下,由学生在毕业设计(论文)工作前期内完成,经指导教师签署意见及教研室审查后生效;

2.开题报告内容必须用黑墨水笔工整书写或按教务处统一设计的电子文档标准格式(可从教务处网址上下载)打印,禁止打印在其它纸上后剪贴,完成后应及时交给指导教师签署意见;

3.学生查阅资料的参考文献应不少于6篇(不包括辞典、手册);

4.有关年月日等日期的填写,应当按照国标GB/T7408—94《数据元和交换格式、信息交换、日期和时间表示法》规定的要求,一律用阿拉伯数字书写。如“2004年4月26日”或“2004-04-26”。

毕业论文开题报告

1.本课题的研究意义

在Internet飞速发展的今天,互联网成为人们快速获取、和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用.因此网站建设在Internet应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。

这次我们所设计的课题正是互联网与社会生活之间的紧密关系的体现,现今的社会,人们已经离不开了网络,网络已经成为人与人之间交流的一种形式,他能够把事情的复杂化转为简单化。老干部局网网站的建设不仅能够使该事业单位的工作方式有所改变,也大大地提高了该单位工作人员的办事效率,也增加了该单位的知明度,更重要的是为我们局的老干部们提供了一个网络生活空间,促进了他们对网络知识的进一步地了解。

通过该网站展示了机构设置、政策法规、办事指南、电子刊物、新闻、学习园地、问题集锦、养生保健、生活小常识、旅游简介等系列内容的介绍。同时您也可以利用电子信箱经济而又快捷地与外界进行各种信息沟通。

ASP简介

1什么是ASPMicrosoftActiveServerPages(ASP)实际上是将标准的HTML文件拓展了一些附加特征,ASP像标准的HTML文件一样包含HTML语句并且在一个浏览器上解释并显示。但它为HTML编写人员提供了在服务器端运行脚本的环境,使HTML编写人员可以利用VBScript和JScript或其他

第三方脚本语言来创建ASP,实现过去需要编写复杂的CGI程序才能实现的有动态内容的网页,如计数器等。一个ASP文件的后缀为.asp,其中包含实现动态功能的VBScript或JScript语句,如果去掉那些VBScript或JScript语句,它和标准的HTML文件没有任何区别。ASP提供了一些内建对象(参见后面关于内建对象的章节)。利用这些内建对象,你可以使你的脚本更加强大;这些

对象会允许您从浏览器中接收和发送信息。例如,利用request对象,你可以接收用户的HTML表单中的信息并加以处理。ASP包含标准的ActiveX组件(参见后面关于组件的章节),这些组件可以实现一些复杂的功能,如使用数据库等。不过,你并不会被此局限,你可以轻松创建属于你自己的附加ActiveX组件。这意味着你可以不加限制地拓展你的ActiveX组件(参见后面关于自制组件的章节)。ASP可以和诸如SQLServer这样的数据库行挂接,在本书后面的章节中,我

们将详细地学习这方面的内容。重要的是,这是ASP一个非常强大的功能所在,在线商务以及在线论坛等各种非常高级的、动态更新的站点都需要数据库的支持,而且需要随数据库内容的更新而自动更新,这样,你就可以利用ASP自己建立很多类似的高级站点。通过上面的描述,我们可以了解到,ASP就是由服务器端脚本、对象以及组件拓展过的标准网页并为其提供了运行的环境。而它的网页并不是在建立初期存在的,而是当某个浏览器向它提出请求时,它才根据需要产生所需要的标准网页,这克服了过去HTML编写的网页的静态缺点,从而使网页上可以有许多动态的信息存在。如:当前的计算机时间、计数器的计数值等。

2ASP的功能

ASP是一套服务器端的脚本运行环境,当用户从浏览器向Web服务器请求.asp文件时,ASP脚本开始运行,然后Web服务器调用ASP,ASP全面读取请求的文件,执行所有的脚本命令,并将标准的Web页传送给浏览器,而并不包含你所写的脚本命令。

2使用ASP与SQLServer网站架设

而ASP的每一个命令都首先被用来生成HTML文件,因此ASP允许生成动态内容。

下载对于Web服务器来说,ASP与HTML有着本质的区别,HTML不经任何处理送回给浏览器另一方面,对于浏览器来说,ASP和HTML几乎是没有区别的,仅仅是后缀为.asp和.htm的区别,当我们在客户端提出对ASP的申请后,我们的浏览器接受的是HTML格式的文件。因此它根据以上特性,我们用ASP可以方便地实现诸如表格信息收集、计数器、留言簿、公告板、ASP还可以轻松地实现对页面内容的动态控制,为不同的浏览者定制不同的页面内容,实现

适用于任何浏览器。

聊天室甚至电子商务等过去必须由CGI才能实现的功能。

个性化的网站。

3使用范围

用ASP实现各功能时几乎没有什么限制,只要网站存在并正常运行,以下是的应用示例列表:

.在你的网站主页顶部添加一个滚动显示的广告栏。

.从HTML的表单中接受信息并且存到数据库中。

.根据不同访问者显示不同内容,创建个性化主页。

.在你的主页中添加点击计数器。

.根据用户浏览器的版本、类型和能力显示不同档次的内容。

.连接多个主页使之容易网际导航。

.跟踪用户网站上的活动信息并且存入日志文件。

.使用基于WindowsNT的Intranet建立你的MIS应用。

用ASP编写出的系统,完全可以达到原来使用Client/Server的网络数据库系统的水平。使用ASP最大的好处是,在你对程序进行升级时,你只需要修改服务器上的ASP文件,而不需要修改客户端程序。

以上只是简单介绍,看完下面章节,你会对利用ASP做的事情有更加全面深入的了解。你会真正学会如何使用ASP建立各种应用。

2.本课题的基本内容

为了树立中国各级政府各部门在网络上的崭新形象,有利于使各级政府由管理型向管理服务型的角色转换,降低办公费用,提高办公效率,促进勤政、廉政建设,提高政府公务员的信息化水平,市委老干部局网站的建立将为办公网络化,自动化、电子化,全面

信息的共享所提供了优越的条件

本课题介绍了市老干部局网站建设的做法和具体步骤,给出了老干部局网站建设的方案选择、设备配置。还介绍了老干部局网站建设的运用目的和发展方向以充分实现以上目的。还全面介绍了在Internet上建设和管理网站的技术。内容涉及网站的基础建设,对原始数据进行调查,重点放在新闻更新、办事指南等的事务处理以及站点管理,使用ASP,HTML开发前台程序,完成网站的链接,从相关系统中导入数据,编写相应的存储过程,以便联系老干部局的需要开发出功能强大的网站。

老干部局网站为干部的工作、管理、生活、信息交流个通讯等提供综合的网络环境。网站的使用,使干部的办公、学术研究和管理条件跨上一个新台阶,同时也给老干部局的宣传,发展,提供了一个平台。我们可以充分利用现用计算机资源,实现信息交流和软硬件资源的共享,实现老干部局办公、管理、服务于社会的现代化新形式。

关于建设老干部局网站的一些内容,包括网站的结构,特点以及网站建设的理论知识要点。其最大的特点就是在于对ASP中的每个知识点都精心运用到了实际需要中,通过对理论的研究来联系实际操作,并全面地掌握ASP开发WEB动态网站的思路、技巧和体系。另外,ASP还提供可更简单、更方面的数据库访问方法,使开发基于数据库驱动的WEB应用程序更容易,ASP支持VBScript和Jscript,并能以插件形式支持其他脚本语言,如HTML。

毕业论文开题报告

3.本课题的重点和难点

本课题的重点主要是网站素材的选择与框架的搭建,一个好的网站要有许多的主页相互之间链接起来,以及其中添加一些动态、图片、声效等链接。综合地完成网站的建设才能体现主题,才能把浏览者的目光吸引到每一个主页上,内容的及时更新也是网站建设的一个主要实际问题,只有不断得到更新的主页内容才能使浏览者再次访问该网站,没有新鲜的内容素材,没有时代性的哲学理念,远远不能称得为好网站。

新颖的框架结构也能使浏览者的目光更长久地被吸引,再拥有好的素材基础上,框架的搭建也是网站建设所必须考虑到的问题,只有把这两者相结合进行周密地布置,相信建设出来的网站必然是点击率最高的网站。

该网站的建设也牵涉到了动态网页的制作,因此,这必然成了制作过程中的难点,就我个人而言,对动态网页的制作方面还缺少很多的理论与实际操作知识,曾经只是做一些简单的个人主页,仅此而已,而现今,却得必须运用ASP程序进行动态网站的编辑,运用ASP把脚本、HTML、组件和强大的WEB数据库访问功能结合在一起,形成一个能在服务器上运行的应用程序,并把按用户的要求专门制作的HTML页面送给客户端浏览器。此技术的运用使我的工作量大大地提高了几倍,当然这正是我以前没好好学的不好表现,但通过这次设计使我认识提高了,在学好静态网页制作的基础上则不能忽视对动态网页制作的重要性。此后,我将借鉴这次的领悟,认真学习并全面地掌握ASP中的每个知识点,以便今后熟练地运用到实际问题中,充分展现自我价值。为自己以后的生活道路铺上一层更牢固的奠基石!

用ASP实现搜索引擎的功能是一件很方便的事,可是,如何实现类似3721的智能搜索呢?比如,当在搜索条件框内输入“中国人民”时,自动从中提取“中国”、“人民”等关键字并在数据库内进行搜索。看完本文后,你就可以发现,这个功能实现起来竟然是如此的简单。OK,FollowMe!

第一步,我们要建立一个名为db_sample.mdb的数据库(本文以Access2000数据库为例),并在其中建立表T_Sample。表T_Sample包括如下字段:

ID自动编号

U_Name文本

U_Info备注

第二步,我们开始设计搜索页面Search.asp。该页面包括一个表单(Frm_Search),表单内包括一个文本框和一个提交按钮。并将表单的method属性设为“get”,action属性设为“Search.asp",即提交给网页自身。代码如下:

<!--Search.asp-->

<formname="frm_Search"method="get"action="Search.asp">

请输入关键字:

<inputtype="text"name="key"size="10">

<inputtype="submit"value="搜索">

</form>

下面,就进入了实现智能搜索的关键部分。

首先,建立数据库连接。在Search.asp的开始处加入如下代码:

<%

4.论文提纲

1.绪论

2.课题任务书

1)设计依据

2)课题总体体会要求

3)设计要求

3.系统规划

1)系统分析

2)系统具体分析

3)功能图

4.主体

1)程序代码

2)结论

5.参考文献

6.个人体会

7.附录

毕业论文开题报告

指导教师意见:

(对本课题的深度、广度及工作量的意见)

指导教师:(亲笔签名)

年月日

教研室审查意见:

ASP范文篇6

当讨论Request对象内容时,要研究的集合之一就是ServerVariables集合。这个集合包含了两种值的结合体,一种是随同页面请求从客户端发送到服务器的HTTP报头中的值,另外一种是由服务器在接收到请求时本身所提供的值。为显示ServerVariables集合中值的使用方式,在RequestObject页面(Show_request.asp)中,点击“ServerVariablesExamples”链接,打开另外一个页面,如下图所示:

下图所示窗口显示的是ServerVariables集合中一些非常有用的值的一个子集。

“自引用”页面

在ServerVariables集合中返回的值包含Web服务器的详细信息和当前页面的路径信息。在任何地方创建一个页面都可使用这些信息。例如创建一个“自引用”页面,此页面能够再次调用自身完成另一项任务,我们可以用以下代码:

”METHOD=”POST”>

同样的效果可以用HTTP的“SCRIPT_NAME”值获得:

”METHOD=”POST”>

使用元素打开一个不同页,可以使用:

...

...

”>NextPage

...

即使原始页面的名称或位置发生变化,这些实例都能正常工作,因为使用了当前页面的路径信息(当然,第二个例子在分离的目标页的名称发生变化时运行会失败)。

换句话说,如果为搜索引擎的子会话自动建立URL,可以收集ServerVariable的一些值:

strFullURL=&Request.ServerVariables(“LOCAL_ADDR”)_

&“:”&Request.ServerVariables(“SERVER_PORT”)_

&Request.ServerVariables(“PATH_INFO”)

这将创建一个完整的URL包括端口号(这种情况下,不是标准值80)。例如,结果可能是:

194.74.60.254:1768/thispath/thispage.asp

检测浏览器的版本

ServerVariables集合中,另外一个有用的值是用户浏览器的用户字符串。在“DetectingtheBrowserType”页面(browsertype.asp),使用ServerVariables集合中的“HTTP_USER_AGENT”值来获得用户字符串,一些脚本用来解析该信息并寻找生产厂家名称和浏览器版本。

对IE5.0和Navigator4.61的搜索结果分别不同,对于其他厂家的浏览器,可以得到一个链接在AltaVistaWeb站点自动开始搜索厂家的名称。

注意,Netscape在用户字符串中不提供厂家的名称,因而无法绝对保证一个浏览器一定是Navigator。

检测浏览器的语言

ServerVariables集合中另外一个有用的值是“HTTP_ACCEPT_LANGUAGE”,它包含了一个当浏览器安装时指定的,或硬编码进用户的地区版本的语言代码。语言代码的例子有en-us(英国、美国)、de-at(德国、澳大利亚)和es-pe(西班牙、秘鲁)。

语言代码可以是一般的且省略方言标识:例如,在我们的站点Wrox者,大批浏览者都是将en(英语)作为语言代码。

因此,可以检测语言代码并自动装载一个合适的特定地区或指定语言版本的页面。

StrLocale=Lcase(Left(Request.ServerVariables(“HTTP_ACCEPT_LANGUAGE”),2))

SelectCasestrLocale

Case“en”:Response.Redirect“uk_site.co.uk/”

Case“de”:Response.Redirect“de_site.co.de/”

Case“fr”:Response.Redirect“fr_site.co.fr/”

‘...etc

CaseElse:Response.Redirect“/”

EndSelect

或者根据特定的方言,重定向页面:

strLocale=Lcase(Request.ServerVariables(“HTTP_ACCEPT_LANGUAGE”))

SelectCasestrLocale

Case“en-gb”:Response.Redirect“uk_site.co.uk/”

Case“en-us”:Response.Redirect“/”

Case“es-pe”:Response.Redirect“es_site2.co.pe/”

‘...

CaseElse:Response.Redirect“/”

EndSelect

其他有用的ServerVariables集合的值

可以访问和使用ServerVariables集合中的任何一成员,控制ASP页面响应一个请求的方式。可以检查一个浏览者访问站点时使用的是否是缺省端口80或还是另一个。在这个例子里,寻找通过端口443的访问——这个端口提供的是安全套接字层(SecureSocketLayer,SSI)访问(和其他的协议),且将它们重定向到一个相应的页面。

IfRequest.ServerVariables(“SERVER_PORT”)=“443”)Then

Response.Redirect“/securesite/default.asp”‘Secureuser

Else

Response.Redirect“/normalsite/default.asp”‘Non-secureuser

EndIf

假如要求浏览者注册且由服务器验证(而不是允许他们在Web服务器的IUSER帐号下匿名访问,这个问题将在后面章节中详细讨论),可以查询用户名称,来判定正在与我们打交道的用户是谁,是否装载页面给该用户。例如,下面的这个代码将只向名为Administrator的用户显示管理链接。

...

ChangeDisplayConfiguration

ChangeDisplayColors

ChangeKeyboardConfiguration

AdministerAllUsers

AdministerLogonInformation

...

注意ASP不填写ServerVariables集合直到你访问其中的一个成员。首次访问该集合的一个成员将使IIS得到它的全部,应只在需要时才使用ServerVariables集合。

其他Request和Response技巧

现在,来看一下几个使用Request和Response对象的有用技巧,包括:

·连接、缓冲和页面重定向的管理。

·HTTP报头、缓存与“到期”页面的操作。

·利用客户证书。

·创建定制的日志文件消息。

1.连接、缓冲和页面重定向的管理

ASP的一个很有用的特点就是使用户能够从一个ASP网页转向到另一个网页(ASP或HTML),或另一个源文件(例如一个ZIP文件或文本文件)。这对用户来说是透明的,实际上是浏览器做这个工作。当使用Response.Redirect方法来载入一个新的网页时,实际上是发送回一个特殊的HTTP报头到客户。此报头为:

HTTP/1.1302ObjectMoved

Location/newpath/newpage.asp

浏览器读到此报头信息,并按Location值的指示载入页面。这在功能上与在Web页中使用客户端HTML标记相同,例如:

这带来的一个问题是,服务器与用户之间的服务器可能会提供它自己的包含与新页面的链接的消息,而不是直接载入新页面。而且浏览器根据厂商和版本可能做同样的工作。这就去除了假定的透明,而且对用户来说一直收到的是错误信息,则对你的站点的访问变得比较麻烦。

在发送诸如文本或HTML等任何页面内容后,我们就不能再使用Redirect方法。然而,一个看起来能够限制“服务器影响”的方法是,先确定没有输出(包括HTTP报头)被发送到客户。在ASP2.0中,必须打开缓冲,然后使用Clear方法来清空缓冲区:

Response.Buffer=True

‘Someconditiontoselecttheappropriatepage:

IfRequest.ServerVariables(“SERVER_PORT”)=1856Then

StrNewPage=“/newpath/this_page.asp”

Else

StrNewPage=“/newpath/the_other_page.asp”

EndIf

Response.Clear

Response.RedirectstrNewPage

在ASP3.0中,缓冲缺省为打开,所以第一行可被忽略,但它是无害的,而且能确保我们的网页即使在ASP2.0环境中也仍然能工作。

与其使用这种类型的HTTP报头重定向,不如使用ASP3.0的一个新特性,它允许我们通过Server对象的Transfer方法转换为执行另一个网页,我们将在第4章进一步研究这个问题。

1)ASP页面缓冲区

正如已看到过的,IIS5.0中ASP3.0页面缓冲是缺省打开的,在早期的版本中是缺省关闭的。微软告诉我们缓冲在IIS5.0中提供了更有效的网页传送,这就是缓冲缺省状态被改变的原因。在大部分情况下,这对我们没有影响。但是,假如有一个非常大的网页,或一个用ASP或别的服务器端代码和组件花费一定时间创建的网页,当其各部分完成时,我们能够分批刷新它们到客户:

...

...Codetocreatefirstpartofthepage

...

Response.Flush

...

...Codetocreatenextpartofpage

...

Response.Flush

...

有时可能希望在页面结束之前的某些点上停止代码的执行,可以通过调用End方法去刷新所有的当前内容到客户并中止任何进一步的处理过程。

...

...Codetocreatefirstpartofthepage

IfstrUserName=“”ThenResponse.Clear

...

...Codetocreateanewversionofthispartofthepage

...

这里有两上演示缓冲和重定向的实例网页,可以从“ResponseObject”主页面(sow_response.asp)下载它们。第一个Response.Redirect例子网页命名为redirect.asp,它在缓冲的页面中定入一些内容,清除缓冲区,并重定向到另一个网页:

ForintLoop=1To1000000

Response.Write“.”

Next

Response.Clear

Response.Redirect“show_redirect.asp”

Response.End

目标页show_response.asp,做同样的工作,但重定向则是回到“ResponseObject”主页。因为这些网页都在缓冲区内,而且所有的输出在重定向之前必须清除,故在浏览器中没有可见的输出。然而,可以通过观察浏览器的状态看到发生的每一次重定向。如下图所示:

在“ResponseObject”主页中,点击“Response.Flush”链接将打开第二个示例网页usebuffer.asp,它简单地遍历一个字符串的每一个字符,以一定的延迟将它们刷新到客户,这虽是Web服务器和ASP极低效率的使用方式,但它演示了缓冲的工作方式。

下面是所要求的最小化的ASP代码,注意我们分别把每个字符刷新到浏览器,因为不这样的话它将被存放在缓冲区中,直至网页完成:

strText=“Thistexthasbeenflushedtothebrowserusing“&_

“Response.Flush

ForintChar=1ToLen(strText)

ForintWrite=1To100000

Next

Response.WriteMid(strText,intChar,1)

Response.Flush

Next

2)Response.IsClientConnected属性

IsClientConnected属性在ASP2.0中已经存在了,但却有些不可靠。在其返回一个准确的结果之前必须发送一些输出到客户。这一问题在ASP3.0中已被解决。现在这一属性可被自由使用。

IsClientConnected是观察用户是否仍连到服务器和正在载入ASP创建的网页的有用方式。如果用户断开连接或停止下载,我们就不用再浪费服务器的资源创建网页,因为缓冲区内容将被IIS丢弃。所以,对那些需要大量时间计算或资源使用较多的网页来说,值得在每一阶段都检查浏览器是否已离线:

...

...Codetocreatefirstpartofthepage

...

IfResponse.IsClientConnectedThen

Response.Flush

Else

Response.End

EndIf

...

...Codetocreatenextpartofpage...

1.操作HTTP报头

我们已经在几处见到ASP如何创建或修改在响应页面请示时被发送到客户的HTTP报头。在Response对象中有几个属性和方法可帮助我们做到一点。下面是一些报头方法:

·控制缓存和有效期。

·创建状态和定制的HTTP报头。

·指定MIME类型或内容类型。

·添加PICS标签。

接下来将简要地研究每一个方面。可在“ResponseObject”主页(show_response.asp)上,单击相关属性名或方法名,来检查我们所说的属性和方法,如下图所示:

1.缓存和“到期”ASP网页

用户的浏览器以及他们和服务器这间的任一服务器,都可以缓存HTML和用ASP创建的网页。当用户随后请求页面时,浏览器就发送一个“最新修改”的请求到服务器(使用一个包含缓存版本的日期的HTTP_IF_MODIFIED_SINCE报头),询问网页是否已被修改。

若没有被修改,服务器应用状态码和消息“304NotModified”来响应,浏览器将使用缓存的内容而不会通过网络下载一个副本。若已经存在已修改的版本,它就会与“200OK”状态码和消息一道被发送出去。

1)Response.CacheContol属性

其他的一些因素也会影响这一处理过程。然而,任一被网页使用的网络路由内的服务器(一般位于客户机端),能被通过设置Response.CacheControl属性为Private来放弃缓存网页。在ASP3.0中对ASP网页这是缺省的,不用设置。但在网页为个别访问者特别定制时尤其有用。这可以阻止别的在同一网络上的用户进入同一网页。当CacheControl的属性值被设定为Public时,允许服务器缓存网页。注意,一些服务器可能表现得不尽相同,或忽视或越过这个报头。

在IE4中,在服务器缓存可用时,有可能得到一个虚假的“Thispagehasexpired”消息。我们已提供了一个网页(expiretest_form.asp),可以通过自己的服务器在网络上做试验,来检查这一属性的影响。可以通过在“ResponseObject”主页中单击“Response.CacheControl”链接来显示这个网页。如下图所示:

这一页面提交到expiretest_result.asp网页时,能够设置Response.CacheControl属性,然后在网页中插入值和脚本被执行的时间:

<%

IfRequest.Form(“public”)=“on”Then‘Cache-Controlcheckboxwasticked

Response.CacheControl=“Public”

Else

Response.CacheControl=“Private”

EndIf

%>

...

Cache-Controlis:<%=Response.CacheControl%>

Valueintextboxis:<%Response.WriteRequest.Form(“textbox”)%>

<%

Response.WriteRight(“0”&Hour(Now),2)&“:”&Right(“0”&Minute(Now),_

&2)&“:”&Right(“0”&Second(Now),2)

%>

通过单击浏览器上的“Back”和“Forward”,能看到代码是自动执行还是使用缓存的副本,如下图所示。结果随浏览器的不同而变化。

2)Response.Expires和Response.ExpiresAbsolute属性

控制缓存的网页存放时间的两个属性为Response对象的Expires和ExpriesAbsolute属性。Response.Expires定义了风页在从缓存区被丢弃前应保持有效的时间长度,以创建以来的分钟数形式表示。ExpiresAbsolute属性为到期时间设置了一个绝对的日期和时间。

我们提供一个命名为addheaders_form.asp的例子网页,用于演示如何使用这些属性。在“ResponseObject”主页中单击对这两种属性的链接,如下图所示:

在这一页面中,可加入自己定制的HTTP报头,并可设置一些影响响应的HTTP报头的多种属性。在“提交查询内容”按钮上单击时,页面show_headers.asp在返回的数据流中添加所选的报头,然后显示用来完成此操作的代码,显示相应的执行时间,可用来检查页面是被缓存还是被再次执行,如下图所示:

show_headers.asp网页中的代码创建和添加HTTP报头,程序如下:

<%

‘WriteHTTPheadersbeforeanyotheroutput

IfRequest.Form(“expires”)=“on”Then_

Response.Expires=Request.Form(“expires_value”)

IfRequest.Form(“expiresabs”)=“on”Then_

Response.ExpiresAbsolute=Request.Form(“expiresabs_value”)

IfRequest.Form(“lastmod”)=“on”Then_

Response.AddHeader“LAST-MODIFIED”,Cstr(Request.Form(“lastmod_value”))

IfRequest.Form(“pragma”)=“on”Then_

Response.AddHeader“PRAGMA”,CStr(Request.Form(“pragma_value”))

IfRequest.Form(“refresh”)=“on”Then_

Response.AddHeader“REFRESH”,CStr(Request.Form(“refresh_value”))

IfRequest.Form(“addheader”)=“on”AndLen(Request.Form(“addheader_name”))Then_

Response.AddHeaderCStr(Request.Form(“addheader_name”)),_

CStr(Request.Form(“addheader_value”))

IfRequest.Form(“status”)=“on”Then_

Response.Status=Request.Form(“status_value”)

%>

...

...Showcodeandexecutiontime

...

其余部分仅仅是显示已被执行的代码和执行时间。读者会注意到包含在网页中的定制的报头“PRAGMA”(至今我们还没讨论过)。一些(先前的)服务器使用它作为网磁是否应被缓存的指示。缺省是网页被缓冲,除非接受到HTTP报头“PRAGMA=NO-CACHE“。

2.创建状态码和定制的HTTP报头

可使用先前在实例网页中所看到的Response对象的AddHeader方法来创建自己的状态码或自己喜欢的定制的报头。这一方法需要两个参数:HTTP报头名称或一个包含其值或分配给它的值的字符串。作为一个例子,下面的代码在页面中添加REFRESH报头:

Response.AddHeader“REFRESH”,”60;URL=newpath/newpage.asp”

这等同于客户机端元素:

换句话说,也可配合Status属性使用AddHeader方法使浏览器载入一个新的页面:

Response.Status=“302ObjectMoved”

Response.Addheader“Location”,“newpath/newpage.asp”

这等同于使用Response.Redirect方法:

Response.Redirect“newpath/newpage.asp”

Response.Status属性可被用来发送一些所需要的状态消息,例如添加如下几行:

Response.Status=“401Unauthorized”

Response.Addheader“WWW-Authenticate”,“BASIC”

强制浏览器显示一个用户名/口令对话框,然后使用BASIC验证把它们发送回服务器(将在本书后续部分看到验证方法)。

3.MIME类型和内容类型

当我们想向浏览器发送一个动态创建的字符串,而且它们自己提供给浏览器时没有直接指明内容类型,而是提供表示是否是磁盘文件的扩展名时,Response.ContentType是非常有用的。除非特别指定,所有ASP创建的网页缺省都为“text/type”。内容类型的标识符是MIME类型(MIME代表Multi-purposeInternetMultimediaExtension或Multi-puposeInternetMailExtension,通常依据上下文来定)。

例如,若发送到客户的数据注解是通过从数据库读二进制值创建的图片,就需要在发送任何内容之前添加合适的CONTENT-TYPE报头:

Response.ContentType=“image/jpeg”

假如从一个数据库创建一个XML文件,使用MIEM类型“text/xml”;并且如果正在创建一个文本文件可以在文件编辑器中显示或作为一个磁盘文件在客户上被存储起来,使用“text/text”。

4.添加PICS卷标

Respnse.Pics属性仅仅是添加一个PICS(PlatformforInternetContentsystem)卷标到页面上,方式与通常用标记所用的方式相同:

QUOT=Chr(34)

StrPicsLabel=“(PICS-1.0”&QUOT&“/ratingsv01.html”_

&QUOT&“1gentruecomment“&QUOT_

&“RSACiNorthAmericaServer”&QUOT&“for“&QUOT_

&“”&QUOT&“on“&QUOT_

&“1999.08.01T03:04-0500”&QUOT&“r(n0s0v2l3))”

Response.Pics(strPicsLabel)

这段代码添加了如下的PICS卷标:

(PICS-1.0“/ratingsv01.html”1gentruecomment“RSACi

NorthAmericaServer”for“”on“1999.08.01T03:04-0500”

r(n0s0v2l3))

要得到关于PICS的更多的信息,或了解更多的定义页面内容的方式,请检索/站点。

在InternetServiceManager中定义报头

在第1章,已经说明了如何在InternetServiceManage(MMC插件)应用程序中设置每个Web网站和IIS5.0目录的属性,这就定义了使用此站点或目录资源发送到客户机的所有请求的HTTP报头,也就提供了使用每个网页中的ASP脚本代码设置这些属性的替代方法。

在Web站点或目录上右击鼠标并选择“Properties”,在其对话框的“HTTPHeaders”选项卡中,可设置页面内容有效期的相对时间或绝对日期,定义定制的报头,创建PICS内容等级标签,也可以通过MIME类型映射来定义内容类型,如下图所示:

在上图中,可以看到已创建了自定义的REFRESHHTTP报头,应用于从此目录载入的所有网页。即每一分钟自动地重载(刷新)一次(对于显示棒球比赛的最近比分是非常理想的,但对服务器而言负担太重了)。CustomHTTPHeaders栏的Edit对话框如下图所示:

要在“MIMEMap”框中添加自定义的内容类型映射,只需在“Properties”主对话框中单击“FileTypes”按扭把它们添加到清单中即可,如下图所示:

当使用HTTP报头开始试验时,你很快会发现不是所有的浏览器表现都相同,许多浏览器以不同的方式响应不同的HTTP报头,使得可靠地建立一个普遍适用的原则有时极为困难。

2.使用客户证书

假如设立了一个安全的Web网站或部分内容具有安全机制的网站,可安装一个数字服务器证书,通过允许访问者使用证书中的加密的细节,来验证服务器。每一次对该站点或目录的页面请求,服务器都将发送证书的一个副本,浏览器可检查这个副本以确定正在和谁交谈。

同样,也可设置服务器,要求用户在进入网站时提供一个有效的数字证书。他们可从很多来源获得此证书,例如Verisign()或ThawteConsulting()。读者将在第25章看到这一处理过程的细节。

这些情况都使用了Request对象的ClientCertificate集合的值,本章的实例代码中,已包含了一个显示用户如何使用些集合值的一些方法的页面。

这一网页被命名为showcert.asp,而且其所做的一切就是遍历ClientCertificate集合显示其包含的所有值。可使用以前经常使用的简单代码来完成它,唯一的不同之处就是建立一个HTML表以容纳结果,并将其截为每60个字符一组。

<%

ForEachkeyItemInRequest.ClientCertificate()

StrItemValue=Request.ClientCertificate(keyItem)

IfLen(strItemValue)>90ThenstrItemValue=Left(strItemValue,60)&“..etc.”

Response.Write“

”&keyItem&“=“&strItemValue&“

Next

%>

运行结果如下图所示:(由于豆豆没有申请服务器证书,该图略)

使用客户证书重定向

一旦要求所有访问网站或部分网站的浏览者给出的其客户证书,就可以使用其包含的信息来制作我们为此用户创建的网页。例如,可使用他们的证书的Organization条目来自动使他们重定向到该网站的指定部分,使别的访问者重定向到别的地方:

IfRequest.ClientCertificate(“SubjectO”)=“WroxPressInc”Then

Response.Redirect“/wrox_staff/default.asp”‘Wroxstaffsite

Else

Response.Redirect“/public/Default.asp”‘Normalpublicsite

EndIf

相应地,可使用Country条目来使访问者重定向到一个相应的网站:

SelectCaseRequest.ClientCertificate(“SubjectC”)

Case“UK”:Response.Redirect“uk_site.co.uk/”

Case“DE”:Response.Redirect“de_site.co.de/”

Case“FR”:Response.Redirect“fr_site.co.fr/”

‘...ect.

CaseElse:Response.Redirect“/”

EndSelect

3.读写二进制数据

有两个方法提供了对从浏览器发送到服务器的HTTP数据流和从服务器返回到浏览器的数据流的二进制数据访问。Request.BinaryRead方法可得到指定要读取的字节数的参数,并返回变体类型的数组,其中包含从请求的POST段中得到的字节(例如在ASP的Form集合中数据)。下面的程序读数据的头64个字节:

varContent=Request.BinaryRead(64)

假如使用了BinaryRead方法,以后就不能访问ASP的Request.Form集合。同样,一旦我们采用任何方式引用了Request.Form集合,就不能使用BinaryRead方法。

把二进制数据写进ASP创建的响应流中也是可能的,可采用BinaryWrite方法。需要给其提供想写到客户的字节的变体类型数组:

Response.BinaryWrite(varContent)

这些方法都很少使用,除非从一个数据库创建非HTML源才用到这些方法。使用的一个实例就是从数据库读取组成图像的字节,并使用BinaryWrite方法把它发送到客户。

4.创建定制的日志消息

假如设置了服务器,以W3CExtendedLogFileFormat格式将请求记录到一个文本文件,可使用Response.AppendToLog方法在日志文件条目的结尾处添加一条消息字符串。若想为特定的网页存储一些值或消息,或在脚本中出现了特定的情况时,这种方式是非常有用的。

例如,通过的Intranet的“stationaryorder”应用程序,可以记录超过特定的条目数目的雇员的部门号码:

...

IfintItemCount>25Then

Response.AppendToLog“Largeorderfrom‘”&strDept&department.”

EndIf

...

设置扩展的日志

要使用AppendToLog方法,必须激活W3CExtendedLogFileFormat日志设置。该设置方法是,进入Properties对话框中的WebSite选项卡,选中EnableLogging复选框,选择W3CExtendedLogFileFormat并单击Properties按钮,如下图所示:

在出现的ExtendedLoggingProperties对话框中,可选择想包括进日志文件的条目。确保选中URIStem,否则AppendToLog方法将失败,如下图所示:

我们提供了一个试图在日志文件中写入一个条目的简单实例页面,可从RequestObject主页(show_request.asp)中的AppendToLog方法链接处打开它。这一页面所做的全部工作就是创建一个包含当前日期和时间的简单字符串,然后执行AppendToLog方法:

strToAppend=“Pageexecutedon”&Now

Response.AppendToLogstrToAppend

结果如下图所示:

小结

本章已经开始了对ASP3.0的研究,而且我们也看到了ASP3.0如何与InternetInformateionServer5.0共同工作,以提供一个易用的、高效的创建动态Web网页和Web应用程序的方法。当然,仍有一些地方需要去研究,本章仅仅是学习了ASP内置的两个最基本的对象。

ASP范文篇7

从“静态”逐步转变为“动态”,动态网站的设计技术也随之发展成熟起来介绍了动态网页的一些特点以及日前在

动态网页设计中应用相当)‘一泛的开发环境—ASP,以如何建立基于IIS的ASP动态网站为中心,简要介绍了动态

商业网站设计的趋势,并以实例分析比较直观地展示了ASP在动态网页设计中的优越性

关键词:动态网站;物件导向;表单;脚本语A

1引言

目前呈儿何增长的互联网站中,有相当一部分仍固守“静态“,无形中已大大落后于时代的步伐.所谓“静态”指的就是网站的网页内容“固定不变“,当用户浏览器通过互联网的HTTP(HypertextTransportProtocx>1)协议向WEB服务器清求提供网页内容时,服务器仅仅是将原已设计好的静态HTML文档传送给用户浏览器.其页面的内容使用的仅仅是标准的HTML代码,最多再加上流行的GIF''''89A格式的动态图片,若网站维护者要更新网页的内容,就必须手动地来更新其所有的HTML文档.“静态”网站的致命弱点就是不易维护,为了不断更新网页内容所做的工作量是巨大的.

随着网站信息量的不断增大,静态网站逐渐没落,动态网站已经成熟起来,它的“交互性”少自动更新”、“因时因人而变”等诸多优良特性无疑很好地适应了信息时代的要求.能够使网站“动态化”的技术较多,目前比较流行和成熟的是ASP技术.

2基于ASP的动态网站建设概述

2.1“动态”的概念

所谓“动态”,并不是指那儿个放在网页上的GIF动态图片,在这里笔者为动态页面的概念制定了以下儿条规则:

1)“交互性”,即网页会根据用户的要求和选择而动态改变和响应,将浏览器作为客户端界面,这将是今后WEB发展的大势所趋.

2)“自动更新”,即无须手动地更新HTML文档,便会自动生成新的页面,可以大大节省工作量.

3)“因时因人而变”,即当不同的时问、不同的人访问同一网址时会产生不同的页面.

2.2ASP的概念及特点

MicrosoftActiveS。二Pages即我们所称的ASP,其实是一套微软开发的服务器端脚本环境,ASP内含于IIS3.0和4.0之中,通过ASP我们可以结合HTML网页,ASP指令和ActiveX元件建立动态、交互目_高效的WEB服务器应用程序.有了ASP你就不必担心客户的浏览器是否能运行你所编写的代码,因为所有的程序都将在服务器端执行,包括所有嵌在普通HTML中的脚本程序.当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度.以下罗列了ActiveS。

二Pages所独具的一些特点:

1)使用VBScriptJScript等简单易懂的脚本语言,结合HTML代码,即可快速地完成网站的应用程序.

2)无须Compile编译,容易编写,可在服务器端直接执行.

3)使用普通的文本编辑器,如Window、的记事本,即可进行编辑设计.

4)与浏览器无关(Br+wserIn<lepen<lenoe),用户端只要使用可执行HTML码的浏览器,即可浏览Active

S。二Pages所设计的网页内容.ActiveS。二Pages所使用的脚本语言(VBSoriptJsoript)均在WEB服务器端执

行,用户端的浏览器不需要能够执行这些脚本语言,如图1所示.

用户端浏览器IE或NS1r1''''1''''1''''洁求11而1''''III]子

WEB服务器ActiveServerP

5)ActiveS。二Pages能与任何AotiveXscripting语言相容.除了可使用VBSoript或JSoript语言来设计外,还通过plug-in的方式,使用由第三方所提供的其他脚本语言,譬如REXX,Perl,Tol等.脚本引擎是处理脚本程序的COM(ComponentObjectModel)物件.

6)ActiveS。二Pages的源程序,不会被传到客户浏览器,因而可以避免所写的源程序被他人票J窃,也提高了程序的安全性.

7)可使用服务器端的脚本来产生客户端的脚本.

8)物件导向(Obje<,一(>riented).

9)AotiveXS。二Components(AotiveX服务器元件)具有无限可扩充性.可以使用VisualBasic,JavaVisualC++,Cobol等编程语言来编写你所需要的AotiveXS。二Component.

2.3ASP技术流行的原因

如果你是个人网站的维护者,使用的是免费主页空问,那么绝大多数情况下你只能使用Java,JavaScript和最新的DHTML技术.DHTML就是当网页从WEB服务器下载后无须再经过服务器的处理,而在浏览器中直接动态地更新网页的内容排版样式、动画.

或许对于一个个人网站来说,充分运用DHTML技术足以令网页栩栩如生,动感十足.然而对于建立商业网站的企业而言,仅仅拥有DHTML是远远不够的.因为仅仅发生在客户浏览器端的动态效果是无法满足商业网站大量信息查询,客户咨询,资源交互等“动态”需求的.因此作为商业网站的设计者,必须要设计出更具实用性和交互性的“动态”网站.由于绝大多数商业网站都具有大量的数据和信息,而建网的初衷也就是在于方便客户查询企业资料,方便同客户的交流,及时获得信息反馈.那么,就必然会面临如何让使用者在浏览器界面中,通过互联网或内联网(Intran川查询WEB数据库的资料,甚至输入、更新和删除WEB服务器上的资料.

目前)匕种常用的“动态”网站设计方法有:CGI(CommonGatc}vayInterlace),IDC(InternetDatabaseConnec-tor),ActiveXDataOhje川ADO),相比较而言ADO具有容易使用、开发执行快速、消耗系统资源较少和占用磁盘空问小等优点.根据许多从事网站设计工作多年的专家的经验,ADO和ASP的结合可以高效快速地使网站“动态化”,使得网站便于管理和维护,从长远来看这对搭档也势必成为今后一段时问内“动态’''''WEB的核心技术,因此ASP技术在动态网站设计中的流行也成为了一种必然.

3实例

以下通过儿段源代码很好地说明了ASP的简洁、灵活、迅速、多变的特性.

建立一个自动监测浏览时问并根据不同时段动态显示不同页面内容的ASP程序,用记事本书写该源代码,存为[estl.asp:

<html>

<ho<ly>

<F01}TCOLOR=“Green">

<%If''''T油e<#12:00:00#An<1T油e>=#00:00:00#Then%>

早上好,今天天气不赖啊!

<%E1seIf''''T油e<#19:00:00#An<1T油e>=#12:00:00#Then%>

下午好!

<%Else%>

哈u}!今晚你有没有去IRC聊天!

<%EndIf%>

</ho<ly>

</html>

将testl.asp保存在WEB服务器的虚拟目录(如:aspsamp/)下,并在浏览器中用HTTP的方式进行浏览,如:yourcx>mpu[二二e/aspsamp/test1.asp.

虽然,这只是一个非常简单的实例,而A_这一功能完全可以通过javascript完成,但是不难发现使用ASP要比javascript简洁迅速得多,而A_运用此法,完全可以轻而易举地令你的网页在不同的时段展示不同的风格,此例中的“Time"实际上是一个VBScript内置的显示系统当前时问的函数,由于系统默认的脚本语言是VBSeript,因此在ASP命令中调用该函数时,脚本引擎会自动将其转换成当前的系统时问.接下来是给testl.

asp添加一点色彩,在<holy>标识中添加“bgcx>lor=“<%=hgc%>””即变为<bodybgcx>lor=“<%=bgc%

>”>,并在<holy>标记前添加如下语句:

<%If''''T油e<#12:00:00#An<1T油e>=#00:00:00#Then

bg}}=“silver"

E1seIf''''T汕e<#19:00:00#An<1T油e>=#12:00:00#Then

hg(一“navy

Else

bg}}=“re<1"

En<1且

%>

如此一来,当用户在不同的时段访问该页面时,将会看到不同的页面背景色.我们可以做的事情还有很

多,譬如想知道在凌晨至十二点之问浏览该页面的客户的姓名,并向客户问好,那么下面的这段程序将能助你达成心愿.首先你需要在页面中设置表单,将以下HTML代码剪贴到“<%IfTime<#12:00:00#An<1Time>=#00:00:00#Then%>”之后:

欢迎光临我的主页,清填写以下信息:<FORMMETHOD="POST"ACTION="testl.asp">

<P>FirstName:<INPUTNAME="fname"SIZE="48">

<P>LastName:<INPUTNAME=“lname"SIZE=“48">

<P>Title:<INPUTNAME=“title"TYPE=RADIO、4LUE="mr">Mr.

<INPUTNAME=“title"TYPE=RADIO、4LUE="ms">Ms.

<P><INPUTTYPE=SUBMIT><INPUTTYPE=RESET>

</FOR1Vl>

然后在以上HTML代码后面添加如下ASP命令:

<%title=request.form(“title")

iftitle="mr"then

%>

欢迎您Mr.<%=二qu舰.拓mi(+.二;request.form((name)%>.

<%elseiftitle="ms"then%>

欢迎您Ms.<%=二qu舰.拓mi(+.二;request.form((name)%>.<%else%>

<B><Fontcola</font></B>

<%endif%>

保存文件testl.

12:00:00之问的话,>r=blue>欢迎您<%=二que从.长)mi(+.二e;)&+;&二明es[.长)mi(“玩二e;request.form((name)&&request.form(lname%>

asp,并在浏览器中以HTTP方式进行浏览,如果此时的系统时问在凌晨0:00:00和中

这其实是一个在Internet和Intranet上常见的功能,即当用户在浏览器端填写完表单后,通过调用一个通用网关程序将用户数据传送到服务器,由服务器进行处理后再将结果返还给客户浏览器.过去为了实现这样的功能必须编写一个独立于HTML之外的CGI程序,并通过HTML进行调用,撇开CGI编写复杂等缺点不谈,CGI的执行效

率也是一个大问题,每一个表单(form)均须执行一个可执行文档,当多人同时上线使用时,多个文档同时执行,将大大降低WEB服务器的执行速度,如今ASP提供了与HTML完全相融的编程环境,显然要比使用CGI便捷得多.

ASP范文篇8

从“静态”逐步转变为“动态”,动态网站的设计技术也随之发展成熟起来介绍了动态网页的一些特点以及日前在

动态网页设计中应用相当)‘一泛的开发环境—ASP,以如何建立基于IIS的ASP动态网站为中心,简要介绍了动态

商业网站设计的趋势,并以实例分析比较直观地展示了ASP在动态网页设计中的优越性

关键词:动态网站;物件导向;表单;脚本语A

1引言

目前呈儿何增长的互联网站中,有相当一部分仍固守“静态“,无形中已大大落后于时代的步伐.所谓“静态”指的就是网站的网页内容“固定不变“,当用户浏览器通过互联网的HTTP(HypertextTransportProtocx>1)协议向WEB服务器清求提供网页内容时,服务器仅仅是将原已设计好的静态HTML文档传送给用户浏览器.其页面的内容使用的仅仅是标准的HTML代码,最多再加上流行的GIF''''89A格式的动态图片,若网站维护者要更新网页的内容,就必须手动地来更新其所有的HTML文档.“静态”网站的致命弱点就是不易维护,为了不断更新网页内容所做的工作量是巨大的.

随着网站信息量的不断增大,静态网站逐渐没落,动态网站已经成熟起来,它的“交互性”少自动更新”、“因时因人而变”等诸多优良特性无疑很好地适应了信息时代的要求.能够使网站“动态化”的技术较多,目前比较流行和成熟的是ASP技术.

2基于ASP的动态网站建设概述

2.1“动态”的概念

所谓“动态”,并不是指那儿个放在网页上的GIF动态图片,在这里笔者为动态页面的概念制定了以下儿条规则:

1)“交互性”,即网页会根据用户的要求和选择而动态改变和响应,将浏览器作为客户端界面,这将是今后WEB发展的大势所趋.

2)“自动更新”,即无须手动地更新HTML文档,便会自动生成新的页面,可以大大节省工作量.

3)“因时因人而变”,即当不同的时问、不同的人访问同一网址时会产生不同的页面.

2.2ASP的概念及特点

MicrosoftActiveS。二Pages即我们所称的ASP,其实是一套微软开发的服务器端脚本环境,ASP内含于IIS3.0和4.0之中,通过ASP我们可以结合HTML网页,ASP指令和ActiveX元件建立动态、交互目_高效的WEB服务器应用程序.有了ASP你就不必担心客户的浏览器是否能运行你所编写的代码,因为所有的程序都将在服务器端执行,包括所有嵌在普通HTML中的脚本程序.当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度.以下罗列了ActiveS。

二Pages所独具的一些特点:

1)使用VBScriptJScript等简单易懂的脚本语言,结合HTML代码,即可快速地完成网站的应用程序.

2)无须Compile编译,容易编写,可在服务器端直接执行.

3)使用普通的文本编辑器,如Window、的记事本,即可进行编辑设计.

4)与浏览器无关(Br+wserIn<lepen<lenoe),用户端只要使用可执行HTML码的浏览器,即可浏览Active

S。二Pages所设计的网页内容.ActiveS。二Pages所使用的脚本语言(VBSoriptJsoript)均在WEB服务器端执

行,用户端的浏览器不需要能够执行这些脚本语言,如图1所示.

用户端浏览器IE或NS1r1''''1''''1''''洁求11而1''''III]子

WEB服务器ActiveServerP

5)ActiveS。二Pages能与任何AotiveXscripting语言相容.除了可使用VBSoript或JSoript语言来设计外,还通过plug-in的方式,使用由第三方所提供的其他脚本语言,譬如REXX,Perl,Tol等.脚本引擎是处理脚本程序的COM(ComponentObjectModel)物件.

6)ActiveS。二Pages的源程序,不会被传到客户浏览器,因而可以避免所写的源程序被他人票J窃,也提高了程序的安全性.

7)可使用服务器端的脚本来产生客户端的脚本.

8)物件导向(Obje<,一(>riented).

9)AotiveXS。二Components(AotiveX服务器元件)具有无限可扩充性.可以使用VisualBasic,JavaVisualC++,Cobol等编程语言来编写你所需要的AotiveXS。二Component.

2.3ASP技术流行的原因

如果你是个人网站的维护者,使用的是免费主页空问,那么绝大多数情况下你只能使用Java,JavaScript和最新的DHTML技术.DHTML就是当网页从WEB服务器下载后无须再经过服务器的处理,而在浏览器中直接动态地更新网页的内容排版样式、动画.

或许对于一个个人网站来说,充分运用DHTML技术足以令网页栩栩如生,动感十足.然而对于建立商业网站的企业而言,仅仅拥有DHTML是远远不够的.因为仅仅发生在客户浏览器端的动态效果是无法满足商业网站大量信息查询,客户咨询,资源交互等“动态”需求的.因此作为商业网站的设计者,必须要设计出更具实用性和交互性的“动态”网站.由于绝大多数商业网站都具有大量的数据和信息,而建网的初衷也就是在于方便客户查询企业资料,方便同客户的交流,及时获得信息反馈.那么,就必然会面临如何让使用者在浏览器界面中,通过互联网或内联网(Intran川查询WEB数据库的资料,甚至输入、更新和删除WEB服务器上的资料.

目前)匕种常用的“动态”网站设计方法有:CGI(CommonGatc}vayInterlace),IDC(InternetDatabaseConnec-tor),ActiveXDataOhje川ADO),相比较而言ADO具有容易使用、开发执行快速、消耗系统资源较少和占用磁盘空问小等优点.根据许多从事网站设计工作多年的专家的经验,ADO和ASP的结合可以高效快速地使网站“动态化”,使得网站便于管理和维护,从长远来看这对搭档也势必成为今后一段时问内“动态’''''WEB的核心技术,因此ASP技术在动态网站设计中的流行也成为了一种必然.

3实例

以下通过儿段源代码很好地说明了ASP的简洁、灵活、迅速、多变的特性.

建立一个自动监测浏览时问并根据不同时段动态显示不同页面内容的ASP程序,用记事本书写该源代码,存为[estl.asp:

<html>

<ho<ly>

<F01}TCOLOR=“Green">

<%If''''T油e<#12:00:00#An<1T油e>=#00:00:00#Then%>

早上好,今天天气不赖啊!

<%E1seIf''''T油e<#19:00:00#An<1T油e>=#12:00:00#Then%>

下午好!

<%Else%>

哈u}!今晚你有没有去IRC聊天!

<%EndIf%>

</ho<ly>

</html>

将testl.asp保存在WEB服务器的虚拟目录(如:aspsamp/)下,并在浏览器中用HTTP的方式进行浏览,如:yourcx>mpu[二二e/aspsamp/test1.asp.

虽然,这只是一个非常简单的实例,而A_这一功能完全可以通过javascript完成,但是不难发现使用ASP要比javascript简洁迅速得多,而A_运用此法,完全可以轻而易举地令你的网页在不同的时段展示不同的风格,此例中的“Time"实际上是一个VBScript内置的显示系统当前时问的函数,由于系统默认的脚本语言是VBSeript,因此在ASP命令中调用该函数时,脚本引擎会自动将其转换成当前的系统时问.接下来是给testl.

asp添加一点色彩,在<holy>标识中添加“bgcx>lor=“<%=hgc%>””即变为<bodybgcx>lor=“<%=bgc%

>”>,并在<holy>标记前添加如下语句:

<%If''''T油e<#12:00:00#An<1T油e>=#00:00:00#Then

bg}}=“silver"

E1seIf''''T汕e<#19:00:00#An<1T油e>=#12:00:00#Then

hg(一“navy

Else

bg}}=“re<1"

En<1且

%>

如此一来,当用户在不同的时段访问该页面时,将会看到不同的页面背景色.我们可以做的事情还有很

多,譬如想知道在凌晨至十二点之问浏览该页面的客户的姓名,并向客户问好,那么下面的这段程序将能助你达成心愿.首先你需要在页面中设置表单,将以下HTML代码剪贴到“<%IfTime<#12:00:00#An<1Time>=#00:00:00#Then%>”之后:

欢迎光临我的主页,清填写以下信息:<FORMMETHOD="POST"ACTION="testl.asp">

<P>FirstName:<INPUTNAME="fname"SIZE="48">

<P>LastName:<INPUTNAME=“lname"SIZE=“48">

<P>Title:<INPUTNAME=“title"TYPE=RADIO、4LUE="mr">Mr.

<INPUTNAME=“title"TYPE=RADIO、4LUE="ms">Ms.

<P><INPUTTYPE=SUBMIT><INPUTTYPE=RESET>

</FOR1Vl>

然后在以上HTML代码后面添加如下ASP命令:

<%title=request.form(“title")

iftitle="mr"then

%>

欢迎您Mr.<%=二qu舰.拓mi(+.二;request.form((name)%>.

<%elseiftitle="ms"then%>

欢迎您Ms.<%=二qu舰.拓mi(+.二;request.form((name)%>.<%else%>

<B><Fontcola</font></B>

<%endif%>

保存文件testl.

12:00:00之问的话,>r=blue>欢迎您<%=二que从.长)mi(+.二e;)&+;&二明es[.长)mi(“玩二e;request.form((name)&&request.form(lname%>

asp,并在浏览器中以HTTP方式进行浏览,如果此时的系统时问在凌晨0:00:00和中

这其实是一个在Internet和Intranet上常见的功能,即当用户在浏览器端填写完表单后,通过调用一个通用网关程序将用户数据传送到服务器,由服务器进行处理后再将结果返还给客户浏览器.过去为了实现这样的功能必须编写一个独立于HTML之外的CGI程序,并通过HTML进行调用,撇开CGI编写复杂等缺点不谈,CGI的执行效

率也是一个大问题,每一个表单(form)均须执行一个可执行文档,当多人同时上线使用时,多个文档同时执行,将大大降低WEB服务器的执行速度,如今ASP提供了与HTML完全相融的编程环境,显然要比使用CGI便捷得多.

ASP范文篇9

目前在WINDOWS环境下有多种访问WEB数据库的技术,主要有:

1.公共网关接口CGI(CommonGatewayInterface)

CGI是较早实现的技术。适用于多种服务器平台,如UNIX、WINDOWS等,但CGI的开发成本高、维护困难、功能有限、不具备事务处理功能、占用服务器资源较多。

2.INTERNET数据库连接器IDC(InternetDatabaseConnector)

IDC集成在ISAPI(InternetServerAPI)中,充分利用了DLL技术,易扩充,但编程较CGI更为复杂,只适用于小型数据库系统。

3.先进数据库连接器ADC(AdvanceDatabaseConnector)

ADC提供了ActiveXControl来访问数据库,它的主要特点是数据查询由用户端浏览器执行,因而需将服务器端数据库中的部分记录下载到用户端,系统开销较大、响应慢,只适用于特别频繁的数据库查询操作。

4.JAVA/JDBC语言编程

JAVA语言是一种面向对象、易移植、多线程控制的语言,可通过JDBC去连接数据库。用JAVA/JDBC编写的软件可移植性强,适用于多种操作系统,但其执行效率和执行速度还不理想,目前无法建立高效、高速的应用。

5.动态服务器页面ASP(ActiveServerPage)

ASP是微软公司最新推出的WEB应用开发技术,着重于处理动态网页和WEB数据库的开发,编程灵活、简洁,具有较高的性能,是目前访问WEB数据库的最佳选择。

二.ASP简介

1.ASP访问数据库的原理

ASP是服务器端的脚本执行环境,可用来产生和执行动态的高性能的WEB服务器程序。

当用户使用浏览器请求ASP主页时,WEB服务器响应,调用ASP引擎来执行ASP文件,并解释其中的脚本语言(JScript或VBScript),通过ODBC连接数据库,由数据库访问组件ADO(ActiveXDataObjects)完成数据库操作,最后ASP生成包含有数据查询结果的HTML主页返回用户端显示。

由于ASP在服务器端运行,运行结果以HTML主页形式返回用户浏览器,因而ASP源程序不会泄密,增加了系统的安全保密性。此外,ASP是面向对象的脚本环境,用户可自行增加ActiveX组件来扩充其功能,拓展应用范围。

2.ASP页面的结构:

ASP的程序代码简单、通用,文件名由.asp结尾,ASP文件通常由四部分构成:

1)标准的HTML标记:所有的HTML标记均可使用。

2)ASP语法命令:位于<%%>标签内的ASP代码。

3)服务器端的include语句:可用#include语句调入其它ASP代码,增强了编程的灵活性。

4)脚本语言:ASP自带JScript和VBScript两种脚本语言,增加了ASP的编程功能,用户也可安装其它脚本语言,如Perl、Rexx等。

3.ASP的运行环境

目前ASP可运行在三种环境下。

1)WINDOWSNTserver4.0运行IIS3.0(InternetInformationServer)以上。

2)WINDOWSNTworkstation4.0运行PeerWebServer3.0以上。

3)WINDOWS95/98运行PWS(PersonalWebServer)。

其中以NTserver上的IIS功能最强,提供了对ASP的全面支持,是创建高速、稳定的ASP主页的最佳选择。

4.ASP的内建对象

ASP提供了六个内建对象,供用户直接调用:

1)Application对象:负责管理所有会话信息,可用来在指定的应用程序的所有用户之间共享信息。

2)Session对象:存贮特定用户的会话信息,只被该用户访问,当用户在不同WEB页面跳转时,Session中的变量在用户整个会话过程中一直保存。Session对象需cookie支持。

3)Request对象:从用户端取得信息传递给服务器,是ASP读取用户输入的主要方法。

4)Response对象:服务器将输出内容发送到用户端。

5)Server对象:提供对服务器有关方法和属性的访问。

6)ObjectContext对象:IIS4.0新增的对象,用来进行事务处理。此项功能需得到MTS(MicrosoftTranscationServer)管理的支持。

5.ASP的主要内置组件:

1)AdRotator组件:用来按指定计划在同一页上自动轮换显示广告,用于WWW上日益重要的广告服务。

2)BrowserCapabilities组件:确定访问WEB站点的用户浏览器的功能数据,包括类型、性能、版本等。

3)DatabaseAccess组件:提供ADO(ActiveXDataObjects)来访问支持ODBC的数据库。

4)FileAccess组件:提供对服务器端文件的读写功能。

5)ContentLinking组件:生成WEB页内容列表,并将各页顺序连接,用于制作导航条。

此外,还可安装Myinfo、Counters、ContentRotator、PageCount等组件,用户也可自行编制Actiive组件,以提高系统的实用性。

6.DatabaseAccess组件ADO

WWW上很重要的应用是访问WEB数据库,用ASP访问WEB数据库时,必须使用ADO组件,ADO是ASP内置的ActiveX服务器组件(ActiveXServerComponent),通过在WEB服务器上设置ODBC和OLEDB可连接多种数据库:如SYBASE、ORACLE、INFORMIX、SQLSERVER、ACCESS、VFP等,是对目前微软所支持的数据库进行操作的最有效和最简单直接的方法。

ADO组件主要提供了以下七个对象和四个集合来访问数据库。

1)Connection对象:建立与后台数据库的连接。

2)Command对象:执行SQL指令,访问数据库。

3)Parameters对象和Parameters集合:为Command对象提供数据和参数。

4)RecordSet对象:存放访问数据库后的数据信息,是最经常使用的对象。

5)Field对象和Field集合:提供对RecordSet中当前记录的各个字段进行访问的功能。

6)Property对象和Properties集合:提供有关信息,供Connection、Command、RecordSet、Field对象使用。

7)Error对象和Errors集合:提供访问数据库时的错误信息。

三.ASP访问数据库步骤

在ASP中,使用ADO组件访问后台数据库,可通过以下步骤进行:

1.定义数据源

在WEB服务器上打开“控制面板”,选中“ODBC”,在“系统DSN”下选“添加”,选定你希望的数据库种类、名称、位置等。本文定义“SQLSERVER”,数据源为“HT”,数据库名称为“HTDATA”,脚本语言采用Jscript。

2,使用ADO组件查询WEB数据库

1)调用Server.CreateObject方法取得“ADODB.Connection”的实例,再使用Open方法打开数据库:

conn=Server.CreateObject(“ADODB.Connection”)

conn.Open(“HT”)

2)指定要执行的SQL命令

连接数据库后,可对数据库操作,如查询,修改,删除等,这些都是通过SQL指令来完成的,如要在数据表signaltab中查询代码中含有“X”的记录

sqlStr=“select*fromsignaltabwherecodelike‘%X%’”

rs=conn.Execute(sqlStr)

3)使用RecordSet属性和方法,并显示结果

为了更精确地跟踪数据,要用RecordSet组件创建包含数据的游标,游标就是储存在内存中的数据。

rs=Server.CreateObject(“ADODB.RecordSet”)

rs.Open(sqlStr,conn,1,A)

注:A=1读取

A=3新增、修改、删除

在RecordSet组件中,常用的属性和方法有:

rs.Fields.Count:RecordSet对象的字段数。

rs(i).Name:第i个字段的名称,i为0至rs.Fields.Count-1

rs(i):第i个字段的数据,i为0至rs.Fields.Count-1

rs("字段名"):指定字段的数据。

rs.Record.Count:游标中的数据记录总数。

rs.EOF:是否最后一条记录。

rs.MoveFirst:指向第一条记录。

rs.MoveLast:指向最后一条记录。

rs.MovePrev:指向上一条记录。

rs.MoveNext:指向下一条记录。

rs.GetRows:将数据放入数组中。

rs.Properties.Count:ADO的ResultSet或Connection的属性个数。

rs.Properties(item).Name:ADO的ResultSet或Connection的名称。

rs.Properties:ADO的ResultSet或Connection的值。

rs.close():关闭连接。

4)关闭数据库

conn.close()

四.查询WEB数据库举例

下面这段示例程序是访问SQLSERVER数据库的signaltab表,表中有三个字段:code(代码字段,字符型,3位),class(分类字段,字符型,10位),memo(备注字段,字符型,20位)。程序中数据源DSN:HT、用户名:client、口令:passwd。

屏幕输入页面input.asp

<%@language=javascript%>

ASP范文篇10

在编写ASP脚本时,最常用的脚本编写语言有VBScript,JavaScript以及JScript这三种脚本语言,并结合HTML页面脚本,从而构成ASP脚本文件。当人们想对ASP文件进行访问时,会通过Web浏览器,向Web服务器发出请求,在Web服务器针对访问请求的ASP文件进行判断后,在进行调用,并根据相应的语法分析以及解释执行,转化为标准的HTML格式内容,最后才会呈现在用户的Web浏览器中。这便是ASP执行的全过程,而这一过程的优异性主要分为以下几点。1.1不泄露源代码。ASP相比于其它客户端执行的JavaScript等类型程序,其在网络安全防护中有着极为突出的优势,客户端无法观看ASP源程序,所接受到的数据信息只是通过程序转化后的HTML语言,这一处理方式不仅有效地维护了ASP开发人员的自身利益,同时还对网站的安全防护起到了重要作用。1.2支持虚拟目录。虚拟目录的建立是为了隐藏个网站点的目录结构,以防因站点目录结构暴露而遭受网络攻击的问题发生,因此虚拟目录的建立是网站安全防护中重要的存在。另外,网站的源代码在无需经过任何修饰、更改的情况下,便能直接在另一台服务器中运行,并且管理员可以通过对虚拟目录中的设置来更改相应的权限,从而提升ASP程序的运行效率与安全性。

2ASP网站的主要安全隐患

虽然以ASP技术为基础开发的网站具有很多的优势,但这类网站在运行的过程中仍然存在许多的安全隐患,而造成安全隐患的因素有很多,如网站设计人员水平的限制、系统软件中存在的漏洞、计算机中的病毒以及网站维护人员的技术水平和责任意识等,这些因素都是影响网站正常运行的重要因素,并为网站中信息的安全性造成巨大的隐患,为此笔者就其中最为主要的几个方面进行阐述:2.1设计上的漏洞。网站设计人员由于自身技术水平等因素的限制,直接利用网上免费的源代码和免费程序,甚至部分网站设计人员直接将自己设计的ASP网站中的数据库途径以及大量的用户名、密码公开在程序中,这种设计漏洞为攻击者提供了有效破解密码、进入数据库等入侵方式,这给网站的安全运行带来巨大的安全隐患。2.2系统软件和管理上的漏洞。我国较为常用的计算机操作系统为Windows操作系统,网站所采用的数据库系统也主要为Access、SQLSERVER,但这些操作系统和系统软件都存在相应的安全漏洞,并在管理上存在一定的缺陷,如注册表、特殊系统命令、用户权限口令等计算机安全设置,一旦存在设置错误、不当等问题,便会给网站的安全运行造成极大的影响。2.3后台管理用户使用安全问题。网站的后台管理用户由于自身不良的上网习惯以及责任意识等因素,都多网站的安全运行造成极大的影响。例如后台管理用户所设置的用户名与密码过于简单,且长期使用不更改,从而被其他人破解使用。

3对ASP安全隐患的防范策略

3.1源程序泄露的防范。网站设计人员在对ASP主页进行设计制作的过程中,在没进行最后的调试之前,其它人便可以通过某些特定的搜索引擎对此ASP网页进行搜索,这样便能对ASP网页中的相关文件进行定位,并通过相应的浏览器对相关的数据库进行查看,然后获取ASP网页的源代码。因此,为了避免源程序泄露问题的发生,网站设计人员应在网页的前完成调试,然后再针对ASP相关文件进行加固处理,以防止其他人直接观看文件的源代码。3.2防止验证被绕过。目前,绝大部分ASP程序的验证仅靠页面头部所添加的判断句,但这种简单的处理方式对于黑客来说,能很容易绕过。因此,为了防止验证被绕过问题,应在ASP页面上添加上一个页面的文件名,因此,只有访问过上一个页面的用户才能浏览这一页面的信息,从而杜绝了验证被绕过问题的发生。3.3用户名与口令破解的防范。在诸多攻击网站获取网站源代码的方式中,用户名与口令的破解往往是黑客最为喜欢的方式,而一旦被他们获取了源代码,便会造成严重的影响。为此,网站设计人员应将涉及用户名与口令的程序全部封存进服务器端中,同时限制可以连接数据库的用户名与口令的权利。另外,任何与数据库可以进行直接连接的用户名与口令,应限制其修改、插入以及删除记录等权限,所能保留的权利仅能为执行与储存。3.4防火墙技术的应用。防火墙作为网站安全防护中重要的防护屏障,其能有效地监控自身网站与外网间传递的数据包,并包含管理网络中最为有效的措施,如网络访问的控制。防火墙会针对陌生且具有危险可能性的信息及时地对用户发出警告,从而对病毒、木马程序以及非法信息数据起到良好的拦截与限制作用,并能针对网站中各种进出数据进行监控。防火墙作为网站中最为关键的存在,不仅能对网站的安全运行起到关键作用,同时还能具有身份验证等实用功能。另外,防火墙还能根据管理者自身的要求,针对信息数据进行筛选,从而起到有效拦截的作用。3.5加强硬件服务器系统安全配置。随着计算机技术的不断发展,越来越多的病毒出现在网络中,为了针对病毒日益猖獗这一问题,不仅要对网站服务器安装相应的防火墙,同时还要安装相应的杀毒软件来控制病毒的传播与蔓延。但在使用杀毒软件的同时,还需要注意以下几点问题:定期对杀毒软件进行更新升级;定期对服务器系统更新下载系统补丁;关闭不必要的程序与服务,降低系统资源的占用率。3.6ASP网站安全配置。为了确保服务器的正常运行,除了设置虚拟目录、限制上传目录的执行权,还可以根据自身要求对ASP网站的硬件服务器进行相应的安全配置。目前,我国绝大部分的服务器操作系统都为windows2003,以此为例,可以将服务器的磁盘转化为NTFS格式,然后就系统管理员进行改名,并设置安全性较高的密码。另外,还可以额外创建权限低的系统管理员账号,这样便能有效地提升服务器的安全性,增加黑客入侵系统的难度。3.7提高风险管理意识。系统的安全管理最为网站安全防护措施中的重要组成,其本质便是对风险进行控制。网站安全管理人员首先要就网站所面临的潜在风险进行全面的了解,并就此进行分析,然后再根据得出的结构制定相应的安全防护措施。为了确保安全防护措施的有效性,应每年最少进行一次应急演练,从而保持一个高效的安全管理效率。另外,就网站运行过程中存在的安全风险以及可以发生的安全问题,进行不间断的检测是必要的。为此,建立一个远程监控平台,就网站的日常运行进行全天候不间断的监控,一旦检测出安全问题,便会向管理人员发出警报,并能针对过往数据进行分析,为管理人员实施安全防护措施提供有效的参考意见。

4结语

随着互联网技术的高速发展,互联网这个世界交流平台的重要性逐渐被人们所认知,绝大部分企业单位都加大了网站建设的投入力度,因此网站的安全防护措施的研究已成为当下网络程序开发领域中重要组成。而基于ASP的网站,由于其自身的缺陷,其安全问题更应得到及时的解决与处理,为我国网站安全的发展提供一个健康稳定的环境。

参考文献:

[1]党伟.基于ASP技术开发的网站安全防护探讨[J].信息系统工程,2016.

[2]许皓月.基于ASP技术开发的网站安全防护分析[J].农业图书情报学刊,2009.