




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第7章ASP动态网页制作基础,学习目标ASP的特点及相关概念如何在HTML页面中嵌入VBScriptVBScript的变量定义及语法规则ASP内置对象的特性和方法ASP内置组件的使用方法,2,第7章ASP动态网页制作基础,教学内容7.1ASP简介7.2VBscript脚本语言7.3ASP内置对象7.4ASP内置组件本章小结,返回总目录,3,7.1ASP简介,返回目录,ASP(ActiveServerPages)是微软公司1996年底推出的Web应用程序开发技术,其主要功能是为生成动态交互的Web服务器应用程序提供功能强大的方法和技术。ASP既不是一种语言也不是一种开发工具,而是一种技术框架,是位于服务器端的脚本运行环境。ASP内含于IIS(InternetInformationServer)3.0和4.0之中,我们可以结合HTML网页、ASP指令和ActiveX元件建立动态、交互且高效的WEB服务器应用程序。ASP所独具的一些特点:1使用VBScript、JScript等简单易懂的脚本语言,结合HTML代码,可快速完成网站的应用程序。2容易编写,无须编译,所使用的脚本语言均在WEB服务器端执行。3使用普通文本编辑器进行编辑设计,如Windows的记事本。,4,7.1ASP简介,4与浏览器无关,用户端只要使用可执行HTML代码的浏览器就能浏览ASP所设计的网页内容。5能与任何ActiveXscripting语言相容。除了与VBScript和Jscript相容之外,还通过plug-in方式使用由第三方提供的其他脚本语言,如REXX、Perl、Tcl等。脚本引擎是处理脚本程序的COM(ComponentObjectModel)物件。6源程序不会被传到客户浏览器,能避免所写程序源代码被他人剽窃,提高了程序的安全性。7可使用服务器端的脚本来产生客户端的脚本。8面向对象(Object-oriented)。9ActiveXServerComponents(ActiveX服务器元件)具有无限可扩充性。可以使用VisualBasic、Java、VisualC+、COBOL等语言编写ActiveXServerComponent。,返回目录,5,7.1ASP简介,第一个ASP程序第一步:打开一个文本编辑器(比如记事本),输入以下代码:ASP实例第二步:以文件名Hello.asp存盘。因为.asp文件由服务器端的ASP环境来解释,所以进入第三步。第三步:将Hello.asp文件放在WWW服务器的目录下。在安装了PWS的Win98系统里,缺省路径是C:Wroot,也可以自己建一个子目录,比如C:asp。第四步:打开浏览器,地址栏中输入http:/yourservername/asp/Hello.asp,浏览器上立即显示HelloWorld,就这么简单。(“yourservername”要换具体的服务器名),返回目录,6,7.2VBscript脚本语言VBscript简介,VBScript是ASP的缺省语言,它通过变量、操作符、循环、分支、函数和子例程扩展了HTML。可以在HTML文件中直接嵌入VBScript脚本,使静态HTML网页变为动态网页。VBScript是一种脚本语言,脚本语言的句法比较简单,这意味着它比Basic语言容易使用。但是,简单的句法也使开发大的应用程序变得很困难,这也使得它比Basic语言难用。VBScript可以作为客户端编程语言,由浏览器解释执行.VBScript也可以作为服务器端编程语言。服务器端编程语言是在服务器上执行的语言,服务器为一个站点提供文件,浏览器接收这些文件。服务器端编程语言将执行站点主机上的所有操作。,返回目录,7,7.2VBscript脚本语言在HTML页面中嵌入VBscript,在HTML页面中嵌入VBScript要使用Script元素,该元素用于将VBScript代码添加到HTML页面中。VBScript代码要写在成对的SCRIPT标记之间。例如,以下代码是一个测试传递日期的过程:例7-2测试传递日期的过程代码SCRIPTLANGUAGE=”VBScript”!-FunctionTT(Dt)TT(CDate(Dt)-Now()2EndFunction-SCRIPT说明:VBScript代码的开始和结束部分都有标记。LANGUAGE属性用于指定所使用的脚本语言。,返回目录,8,7.2VBscript脚本语言在HTML页面中嵌入VBscript,上例是一个通用函数(不依赖于任何窗体控件),可将其包含在页面的HEAD部分:例7-3测试传递日期的脚本编写HTMLHEADTITLE订购/TITLESCRIPTLANGUAGE=”VBScript”!-FunctionTT(Dt)TT(CDate(Dt)-Now()2EndFunction-/SCRIPT/HEADBODY,Script块可以出现在HTML页面的任何地方(BODY或HEAD部分之中),但最好将所有的Script目标代码放在HEAD部分中,Script代码集中放置,能确保在BODY部分调用代码之前所有Script代码都被读取并解码。,返回目录,9,7.2VBscript脚本语言在HTML页面中嵌入VBscript,一个值得注意的例外情况是,在窗体中提供内部代码以响应窗体中对象的事件。以下示例在为窗体中嵌入Script代码以响应窗体中按钮的双击事件。例:窗体内部代码响应窗体中按钮的双击事件HTMLHEADTITLE测试按钮事件/TITLE/HEADBODYFORMNAME=”Forml”INPUTTYPE=”Bunon”NAME=”Buttonl”VALUE=”双击”SCRIPTFOR=”Buttonl”EVENT=”OnClick”LANGUAGE=”VBScript”MsgBox”按钮被双击!”/SCRIPT/FORM/BODY/HTML,返回目录,10,7.2VBscript脚本语言变量、常量及数组,1变量(1)声明变量声明变量的一种方式是使用Dim语句,例如:Dimtt。声明多个变量时,使用逗号分隔变量。例如:Dimtop,bottom,left,right。另外一种方式是通过直接在Script中使用变量名,这一简单方式可隐式地声明变量,但不提倡这样做,因为有时会因为变量名被拼错而导致运行Script时出现意外结果。(2)变量的作用域VBScript变量都有相应作用域,作用域由声明变量的位置决定,在过程中声明的变量只有该过程中的代码可以访问或更改变量值,此时变量具有局部作用域并称为过程级变量。在过程之外声明变量可以被脚本中所有过程识别,称为全局变量。,返回目录,11,7.2VBscript脚本语言变量、常量及数组,(3)变量子类型用DIM语句声明一个变量时无须为变量定义数据类型,因为VBScript中所有变量都是相同的数据类型:variant型。variant是一种特殊的变量类型,它可以代表许多其他类型的变量。Variant包含的基本数据类型称为子类型。当用一个变量代表一个数字时,只要把数字分配给该变量,不用引号定界。当用一个变量代表一个字符串时,把字符串分配给该变量时要用引号定界。一个variant型变量可自动与赋给它的值的类型保持一致。用TYPENAME()函数可以显示variant型变量的子类型。例如:aa=”Hello!”TYPENAME(aa)aa3TYPENAME(aa)在上例中,变量被分配了两个不同类型的值,对每种类型的值,可以用VBScript函数TYPENAME()显示该变量所代表的实际数据的子类型。当给变量aa分配字符串数据“Hello!”时,variant型变量aa的子类型是string。当给变量aa分配整数3时,aa的子类型是integer。,返回目录,12,7.2VBscript脚本语言变量、常量及数组,(4)空变量和空值变量在给一个变量分配值之前,该变量是空的。可以用函数ISEMPTY()检测一个变量是否为空。如下例所示:例7-5用函数ISEMPTY()检测变量是否为空aa=”Hello!”aa:=ISEMPTY(aa)bb:=ISEMPTY(bb)在这个例子中,检测了两个变量aa和bb,看它们是否为空。因为aa已经被分配了值,当以aa为函数ISEMPTY()的参数时,函数返回False。而bb没有分配数据,以bb为参数时,函数ISEMPTY()返回True。,返回目录,13,7.2VBscript脚本语言变量、常量及数组,2常量VBScript可以声明常量,一旦声明了一个常量,该常量的值将不能被改变。例如:CONSTTOP21.1在例子中,常量TOP被分配了值21.1。因为TOP是一个常量,所以在脚本中不能再给TOP分配新值。试图改变常量的值将收到错误信息:IllegalAssignmenterror。对于不希望在脚本中被改变的数值可使用常量。例如站点注册费是一个固定价格,应定义为常量。若将来某一天改变这个价格,可通过手工修改方式更改这个常量的值。可以一次定义多个常量,把每个常量定义用逗号隔开即可。例如:CONSTTOP=21.1,BOTTOM=52.5,AA=”Hello!”,返回目录,14,7.2VBscript脚本语言变量、常量及数组,3数组数组是一个可以存储一组值的变量。当需要存储一组相关的值时应该使用数组。例如:创建一个数组,用来存储站点上出售的一系列商品。例:创建存储商品的数组DIMProduct(10)Product(0)=”TradingCard”Product(1)=”BookonActiveSeverPages”Product(2)=”ComputerMonitor”例子中,DIM语句声明了一个可以存储11个值的数组,数组在使用之前必须声明。VBScript中数组的下标从0开始,声明了一个数组之后,可以用一个索引为数组元素赋值。数组可以多维,如:Dimtt(4,6)。,返回目录,15,7.2VBscript脚本语言VBscript过程,过程是一组能执行指定任务且具有返回值的脚本命令。用户可以定义自己的过程,然后在脚本中反复调用它们。也可以将过程定义放在调用过程的.asp文件中,还可以将通用过程放在一个共享的.asp文件中,用SSI#include指令将其包含到其他调用其过程的.asp文件中。还有另一种方法,即把这些功能打包在ActiveX组件中。过程定义常出现在SCRIPT和SCRIPT内部,必须遵循声明脚本语言规则。如果过程所用语言与主脚本语言不同,则要使用SCRIPT元素。主脚本语言中的过程用脚本分界符“”和“”分隔。使用HTMLSCRIPT标记时,必须用RUNAT和LANGUAGE属性来保证服务器端能够处理脚本。,返回目录,16,7.2VBscript脚本语言VBscript过程,过程是一组能执行指定任务且具有返回值的脚本命令。用户可以定义自己的过程,然后在脚本中反复调用它们。也可以将过程定义放在调用过程的.asp文件中,还可以将通用过程放在一个共享的.asp文件中,用SSI#include指令将其包含到其他调用其过程的.asp文件中。还有另一种方法,即把这些功能打包在ActiveX组件中。过程定义常出现在SCRIPT和SCRIPT内部,必须遵循声明脚本语言规则。如果过程所用语言与主脚本语言不同,则要使用SCRIPT元素。主脚本语言中的过程用脚本分界符“”和“”分隔。使用HTMLSCRIPT标记时,必须用RUNAT和LANGUAGE属性来保证服务器端能够处理脚本。,返回目录,17,7.2VBscript脚本语言VBscript过程,使用SCRIPT标记的语法如下:SCRIPTRUNAT=SERVERLANGUAGE=JSCRIPT过程定义/SCRIPT说明:RUNAT=SERVER属性通知Web服务器在服务器上处理脚本,若不设置该属性,脚本将由客户端浏览器处理。LANGUAGE属性决定此脚本块所用的语言,可以指定任何一种具有脚本引擎的语言。如:用VBSCRIPT指定VBScript、用JSCRIPT指定JScript。若不设置LANGUAGE属性,将用主脚本语言解释此脚本块。,返回目录,18,7.2VBscript脚本语言VBscript过程,VBScript中的过程被分为两类:Sub过程和Function过程。Sub过程是包含在Sub和EndSub语句之间的一组VBScript语句,执行操作但不返回值。Sub过程可以使用参数,由调用过程传递的常数、变量或表达式。如果Sub过程无任何参数,则Sub语句必须包含空括号()。Function过程是包含在Function和EndFunction语句之间的一组VBScript语句。Function过程与Sub过程类似,但是Function过程可以通过函数名返回值,这个值是由过程的语句赋给函数名的。Function返回值的数据类型总是Variant。Function过程可以使用参数,由调用过程传递的常数、变量或表达式。如果Function过程无任何参数,则Function语句必须包含空括号()。,返回目录,19,7.2VBscript脚本语言VBScript函数,函数和过程一样都是命名了的代码块,但它们却有很大区别,过程完成程序任务,函数则返回值。取得日期之间的差或和的函数DateSerial,其语法如下:DateSerial(year,month,day)DateSerial函数中每个参数的取值范围都要合适,日的取值在131之间,月的取值在112之间。也可以用年、月、日的数值表达式代替绝对日期。对于year参数,若取值范围是从099,则被解释为1900、1999年。此范围之外的year参数要使用4位数字表示年份(例如1800年)。当任何一个参数的取值超出可接受范围时,会适当地进位到下一个较大的时间单位。,返回目录,20,7.2VBscript脚本语言VBScript条件语句,在VBScript中可使用以下两种条件语句:1IfThenE1se语句IfThenE1se语句先计算条件是True还是False,然后根据计算结果指定要运行的语句。通常,条件是一个对值或变量进行比较的关系表达式,IfThenE1se语句允许嵌套。IfThenE1se语句最简格式是条件后只跟一条语句,此时可以省略EndIF。2SelectCase语句SelectCase结构提供了IfThenE1se结构的变通形式,从多个语句块中选择执行其中的一个。其功能与IfThenE1se语句类似,但代码更加简练易读。SelectCase结构在开始处有一个只计算一次的简单测试表达式,然后将表达式结果与结构中每个Case的值比较,如果匹配,则执行与该Case关联的语句块。,返回目录,21,7.2VBscript脚本语言VBScript循环语句,循环语句的作用是重复执行程序代码。在VBScript中有下列3种循环语句:DoLoop:它可以多次运行语句块,次数不定。当条件为“真”时循环。ForNext:指定循环次数,使用计数器重复运行语句。ForEachNext:对集合中的每项或数组中的每个元素,重复执行一组语句。这在不知道集合中元素的数目时非常有用。它的语法如下:ForEachelementIngroupstatementsNextelement,返回目录,22,7.3ASP内置对象ASP基本内置对象综述,1Application对象Application对象负责存储数据以供多个用户使用。集合:Contents数据集合与StaticObjects数据集合方法:Lock方法与Unlock方法2Request对象使用Request对象能访问任何用HTTP请求传递的信息,包括从HTML表格用POST方法或GET方法传递的参数、Cookie和用户认证。还能访问发送给服务器的二进制数据,如上传的文件。集合:C1ientCertificate数据集合、Cookies数据集合、Form数据集合、QueryString数据集合、ServerVariables数据集合属性:只提供一个TotalBytes属性方法:仅提供BinaryRead方法,返回目录,23,7.3ASP内置对象ASP基本内置对象综述,3Response对象使用Response对象能控制发送给用户的信息,包括直接发送信息给浏览器、重定向浏览器到另一个URL或设置Cookie的值。集合:Cookies数据集合属性:Buffer、CacheControl、Charset、ContenType、Expires、ExpiresAsolute、IsClientConnected、Pics、Status等方法:AddHeader、AppendToLog、BinaryWrite、Clear、End、Flush、Redirect、Write等4Server对象Server对象提供对服务器上的方法和属性进行的访问。最常用的方法是创建ActiveX组件的实例(Server.Createobject)。其他方法用于将URL或HTML编码成字符串,将虚拟路径映射到物理路径以及设置脚本的超时期限。属性:只有一个ScriptTimeout属性方法:CreateObject、HTMLEncode、MapPath、URLEncode等,返回目录,24,7.3ASP内置对象ASP基本内置对象综述,5Session对象使用Session对象能存储特定的用户会话所需信息。当用户在应用程序的页之间跳转时,存储在Session对象中的变量不会清除,而用户在应用程序中访问页时,这些变量始终存在。也可以使用Session方法显式地结束一个会话和设置空闲会话的超时期限。集合:Contents数据集合和StaticObjects数据集合属性:CodePage、LCID、sessionID、Timeout等方法:只提供了Abandon方法事件:Session_onEnd事件和Session_OnStart事件60bjectContext对象使用0bjectContext对象可以提交或撤消由ASP脚本初始化的事务。方法:SetAbort方法和SetComplete方法事件:OnTransactionAbort事件和OnTransactionCommit事件,返回目录,25,7.3ASP内置对象Request对象,使用Request对象能访问任何基于HTTP请求传递的所有信息,包括从HTML表格用POST方法或GET方法传递的参数、Cookie和用户认证,访问客户端发送给服务器的二进制数据。Request的语法:Request集合|属性|方法(变量)我们挑选一些常用的对象语法进行分析:1.Form集合Form集合通过使用POST方法的表格检索邮送到HTTP请求正文中的表格元素的值。它的语法格式:Request.Form(element)(index)|Count。参数的功能如下:element指定集合要检索的表格元素的名称。Index是可选参数,使用该参数可以访问某参数中多个值中的一个,它可以是1到Request.Form(parameter).Count之间的任意整数。Form集合按请求正文中参数的名称来索引。Request.Form(element)的值是请求正文中所有element值的数组。通过调用Request.Form(elemem).Count来确定参数中值的个数。如果参数未关联多个值,则计数为1。如果找不到参数,计数为0。,返回目录,26,7.3ASP内置对象Request对象,2QueryString集合QueryString集合检索HTTP查询字符串中变量的值,HTTP查询字符串由问号后的值指定。如:AHref=”example.asp?string=thisisasample”stringsample/A生成一个值为“thisisasample”的变量名字符串。通过发送表格或由用户在其浏览器的地址框中键入查询也可以生成查询字符串。语法格式:Request.QueryString(variable)(index)|.CountQueryString集合让用户以名称检索Query_String变量。Request.QueryString(参数)的值是出现在QUERY_STRING中所有参数的值的数组。通过调用Request.QueryString(parameter).Count可以确定参数有多少个值。,返回目录,27,7.3ASP内置对象Request对象,3Cookies集合Cookie其实是一个标签,当访问一个需要唯一标识的Web站点时,它会在硬盘上留下一个标记,下一次访问同一个站点时,站点的页面会查找这个标记。每个Web站点都有自己的标记,标记的内容可以随时读取,但只能由该站点的页面完成。每个站点的Cookie与其他所有站点的Cookie存在于同一文件夹中的不同文件内(可以在Windows的目录下的Cookie文件夹中找到它们)。一个Cookie唯一标识一个客户。Cookie可以包含在一个对话期或几个对话期之间某个Web站点的所有页面共享的信息,使用Cookie还可以在页面之间交换信息。Request提供的Cookies集合允许用户检索在HTTP请求中发送的Cookie的值。,返回目录,28,7.3ASP内置对象Request对象,它的语法格式如下:Request.Cookies(Cookie)(Key)|.attribute其中参数的主要功能如下:Cookie指定要检索其值的Cookie。Key是可选参数,用于从Cookie字典中检索子关键字的值。如果客户端浏览器发送了两个同名的Cookie,那么Request.Cookie将返回其中路径结构较深的一个。要确定某个Cookie是不是Cookie字典(Cookie是否有关键字),可使用下列脚本。Request.Cookies(“myCookie”)HasKeys如果myCookie是一个Cookie字典,则前面的赋值为True。否则为False。,返回目录,29,7.3ASP内置对象Request对象,4ServerVariables集合在浏览器中浏览网页使用的传输协议是HTTP,在HTTP的标题文件中会记录一些客户端的信息,如:客户的IP地址等。有时服务器端需要根据不同的客户端信息做出不同的反映,这时候就需要用ServerVariables集合获取所需信息。其语法如下:Request.ServerVariables(服务器环境变量),返回目录,30,7.3ASP内置对象Response对象,与Request是获取客户端HTTP信息相反,Response对象用来控制发送给用户的信息,包括直接发送信息给浏览器、重定向浏览器到另一个URL或设置Cookie的值。语法格式:Response.collection|property|method1属性(1)BufferBuffer属性指示是否缓冲页输出。当缓冲页输出时,只有当前页的所有服务器脚本处理完毕或者调用了Flush或End方法后,服务器才将响应发送给客户端浏览器,服务器将输出发送给客户端浏览器后就不能再设置Buffer属性。因此,应该在.asp文件的第一行调用Response.Buffer。,返回目录,31,7.3ASP内置对象Response对象,(2)CharsetCharset属性将字符集名称附加到Response对象中content-type标题的后面。对于不包含Response.Charset属性的ASP页,content-type标题将为:content-type:text/html。可以在.asp文件中指定content-type标题。(3)ContentTypeContentType属性指定服务器响应的HTTP内容类型。如果未指定ContentType,默认为text/HTML。(4)ExpiresExpires属性指定了在浏览器上缓冲存储的页离过期还有多少时间。如果用户在某个页过期之前又回到此页,就会显示缓冲区中的页面。(5)ExpiresAbsolute与Expires属性不同,ExpiresAbsolute属性指定缓存于浏览器中的页面的确切到期日期和时间。,返回目录,32,7.3ASP内置对象Response对象,2方法(1)C1ear用Clear方法可以清除缓冲区中的所有HTML输出。但Clear方法只清除响应正文而不清除响应标题。(2)EndEnd方法使Web服务器停止处理脚本并返回当前结果。文件中剩余的内容将不被处理。如果Response.Buffer已设置为True,则调用Response.End将缓冲输出。(3)F1ushF1ush方法立即发送缓冲区中的输出。如果没有将Response.Buffer设置为True,则该方法将导致运行时错误。(4)RedirectRedirect方法使浏览器立即重定向到程序指定的URL。(5)WriteWrite方法是最常用的方法之一,它将指定的字符串写到当前的HTTP输出。,返回目录,33,7.3ASP内置对象Response对象,3集合Response对象只有一个集合就是Cookie,Cookies集合设置Cookie的值。若指定的Cookie不存在则创建它。若存在则设置新的值并将旧值删去。其语法如下:Response.Cookies(Cookie)(key)|.attribute=value这里的Cookie是指定Cookie的名称。如果指定了key,则该Cookie就是一个字典。attribute指定Cookile自身的有关信息。attribute参数可以是下列之一:Domain若被指定,则Cookie将被发送到对该域的请求中去。Expires指定Cookie的过期日期。为了在会话结束后将Cookie存储在客户端磁盘上,必须设置该日期。若此项属性的设置未超过当前日期,则任务结束后Cookie将到期。HasKeys指定Cookie是否包含关键字。Path若被指定,则Cookie将只发送到对该路径的请求中。如果未设置该属性,则使用应用程序的路径。,返回目录,34,7.3ASP内置对象Application对象,Application对象的功能是处理多用户注册写入信息,在给定的应用程序的所有用户之间共享信息,并在服务器运行期间持久地保存信息,它有控制访问应用层数据的方法,还有可用于应用程序启动和停止时触发过程的事件。1属性虽然Application对象没有内置的属性,但可以使用以下句法设置用户定义的属性(也可称为集合)。Application(“属性集合名称”)=值可以使用如下脚本声明并建立Application对象的属性。Application(“Myvar”)=”Hello”SetApplication(“MyObj”);Server.CreateObject(“MyComponent”)一旦我们分配了Application对象的属性,它就会持久地存在,直到关闭Web服务器服务才使Application停止。,返回目录,35,7.3ASP内置对象Application对象,2方法Application对象有两个方法,它们都是用于处理多个用户对存储在Application中的数据的写入问题。(1)Lock方法禁止其他客户修改Application对象的属性。Lock方法阻止其他客户修改存储在Application对象中的变量,以确保在同一时刻仅有一个客户可修改和存取Application变量。如果用户没有明确调用Unlock方法,则服务器将在.asp文件结束或超时后即解除对Application对象的锁定。(2)与Lock方法相反,Unlock方法允许其他客户修改Application对象的属性。如上例,Unlock方法解除对象的锁定,使得下一个客户端能够增加NumVisits的值。,返回目录,36,7.3ASP内置对象Application对象,3事件(1)Application_OnStart该事件在首次创建新会话(即Session_OnStart事件)之前发生。当服务器启动并允许对应用程序所包含文件进行请求时就触发Application_OnStart事件。Application_OnStaIt事件的处理过程必须写在Global.asa文件之中。Appliction_OnStart事件的语法如下:SCRIPTLANGUAGE=ScriptLanguageRUNAT=ServerSubApplication_OnStartEndSubSCRIPT,返回目录,37,7.3ASP内置对象Application对象,(2)Application_OnEnd该事件在应用程序退出时于SessiononEnd事件之后发生,Appliation_OnEnd事件的处理过程也必须写在Global.asa文件之中。使用Application对象时有两个注意事项:注意事项1:不能在Application对象中存储ASP内置对象。注意事项2:若将一个数组存储在Application对象中,请不要直接更改存储在数组中的元素。下面的脚本将无法运行。AppliCation(“StoredArray”)(3)=”newvalue”因为Application对象是作为集合被实现的,数组元素StoredArray(3)未获得新的赋值,而此值包含在Application对象集合中,并将覆盖此位置以前存储的任何信息。,返回目录,38,7.3ASP内置对象Session对象,Session是与Application对象有相似作用的另一个非常实用的ASP内置对象。使用它存储特定的用户会话所需信息。当用户在应用程序的页之间跳转时,存储在Session对象中的变量不会清除,而用户在应用程序中访问页面时,这些变量始终存在。当用户请求来自应用程序的web页时,如果该用户还没有会话,则Web服务器将自动创建一个Session对象。当会话过期或被放弃后,服务器将终止该会话。通过向客户程序发送唯一的Cookie可以管理服务器上的Session对象。当用户第一次请求ASP应用程序中的某个页面时,ASP要检查HTTP头信息,查看在本文中是否有名为ASPSESSIONID的Cookie发送过来,如果有,则服务器会启动新的会话,并为该会话生成一个全局唯一的值,再把这个值作为新ASPSESSIONIDcookie的值发送给客户端,正是使用这种Cookie,可以访问存储在服务器上的属于客户程序的信息。,返回目录,39,7.3ASP内置对象Session对象,1属性(1)SessionIDSessionID属性返回用户的会话标识。在创建会话时,服务器会为每一个会话生成一个单独的标识。会话标识以长整形数据类型返回。在很多情况下SessionID可以用于Web页面注册统计。(2)TimeoutTimeout属性以分钟为单位为该应用程序的Session对象指定超时时限。如果用户在该超时时限之内不刷新或请求网页,则该会话将终止。2方法Session对象仅有一个abandon方法,该方法删除所有存储在Session中的对象并释放这些对象的源。如果不明确调用Abandon的方法,一旦会话超时,服务器将删除这些对象。当服务器处理完当前页时,下面示例将释放会话状态。SessionAbandon,返回目录,40,7.3ASP内置对象Session对象,3事件Session对象有两个事件可用于在Session对象启动和释放时的运行过程。(1)Session_OnStart事件在服务器创建新会话时发生。服务器在执行请求的页之前先处理该脚本。Session_OnStart事件是设置会话期变量的最佳时机,因为在访问任何页之前都会先设置它们。尽管在Session_OnStart事件包含Redirect或End方法调用情况下Session对象仍会保持,然而服务器将停止处理Global.asp文件并触发Session_OnStart事件的文件中的脚本。为了确保用户在打开某个特定的Web页时始终启动一个会话,可在Session_OnStart事件中调用Redirect方法。当用户进入应用程序时,服务器将为用户创建一个会话并处理Session_OnStart事件脚本。用户可以将脚本包含在该事件中以便检查用户打开的页是不是启动页,如果不是,就指示用户调用Response.Redirect方法启动网页。(2)Session_OnEnd事件在会话被放弃或超时发生。,返回目录,41,7.3ASP内置对象Session对象,4会话的3种方式启动:(1)一个新用户请求访问一个URL,该URL标识了某个应用程序中的.asp文件,并且该应用程序的Global.asa文件包含Session_onStart过程。(2)用户在Session对象中存储了一个值。(3)用户请求了一个应用程序的.asp文件,并且该应用程序的Global.asa文件使用OBJECT标签创建带有会话作用域的对象的实例。如果用户在指定时间内没有请求或刷新应用程序中的任何页,会话将自动结束。这段时间的默认值是20分钟。可以通过在Internet服务管理器中设置“应用程序选项”属性页中的“会话超时”属性改变应用程序的默认超时限制设置。,返回目录,42,7.3ASP内置对象Server对象,Server对象提供对服务器上方法和属性的访问,其中大多数方法和属性作为实用程序的功能服务。1语法:Sperty|methodproperty表示Server对象的属性,method表示Server对象的方法。2属性ScriptTimeout为超时值,在脚本运行超过这一时间后即作超时处理。指定服务器处理脚本在75秒后超时的代码为:Server.ScriptTimeout=753方法(1)HTMLEncode方法,返回目录,43,7.3ASP内置对象Server对象,HTMLEncode方法允许对特定的字符串进行HTML编码,虽然HTML可以显示大部分写入ASP文件中的文本,但当文本包含HTML标记中所使用的字符时就会遇到问题,因为浏览器读到这样的字符串时会试图进行解释。(2)URLEncode方法Server对象的URLEncode方法可以根据URL规则对字符串进行正确编码,当字符串数据以URL的形式传递到服务器时,在字符串中不允许出现空格,也不允许出现特殊字符。如果希望在发送字符串之前进行URL编码,可以使用Server.URLEncode方法。(3)MapPath方法MapPath方法将指定的相对或虚拟路径映射到服务器上相应的物理目录上。语法:Server.MapPath(Path)Path指定要映射物理目录的相对或虚拟路径。,返回目录,44,7.3ASP内置对象Server对象,(4)CreateObject方法Server.Createobject恐怕是ASP中最实用也最强劲的功能了。它用于创建已经注册到服务器上的ActiveX组件实例。这是一个非常重要的特性,通过使用ActiveX组件能够轻松地扩展ActiveX的能力,正是使用了ActiveX组件,许多至关重要的功能得以实现,如数据库连接、文件访问、广告显示等,还有其他VBscript不能提供或不能简单地依靠单独使用ActiveX所能完成的功能。这些组件使得ASP具有强大的生命力。语法:Server.CreateObject(“ComponentName”)默认情况下,由Server.CreateObject方法创建的对象具有页作用域。,返回目录,45,7.4ASP内置组件不可缺少的ActiveX组件,ActiveX组件是一个存在于Web服务器上的文件,该文件包含执行某项任务或一组任务的代码,组件可以执行公用任务,这样就不必自己去创建执行这些任务的代码。当Web服务器安装完ASP环境后,就可以直接使用它自带的几个常用组件,如DatabaseAccess组件。要使用组件提供的对象,首先要创建对象的实例并给这个新的实例分配变量名。可以使用ASP的Server.CreateObject方法创建对象的实例,接着,再使用脚本语言的变量分配指令为对象实例命名。创建对象实例时,必须提供实例的注册名称“PROGID”。如下脚本创建一个AdRotator对象的实例:SetMyAds=Server.CreateObject(“MSWC.AdRotator”),返回目录,46,7.4ASP内置组件不可缺少的ActiveX组件,1AdRotator组件ADRotator组件能使用户在自己的网站上建立一个符合广告领域标
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工业废气催化燃烧技术环保产业发展报告
- 自媒体技术使用合同范本
- 游戏行业临时工合同协议
- 江苏招聘教师就业协议书
- 用吊车维修楼房合同范本
- 门市房出租协议合同范本
- 舞蹈机构合作人合同协议
- 门窗代加工项目合同范本
- 祖屋继承公证协议书范本
- 港龙文化体育合作协议书
- 江苏省公墓管理暂行办法
- 医疗不良事件管理体系建设与持续改进
- 中国铂族金属供需发展趋势
- 风电施工合同模板
- GA/T 1567-2019城市道路交通隔离栏设置指南
- 氧化还原反应的类型
- 小学英语素材-1-5年级英语牛津词汇表(带音标) 牛津上海版
- DB11-T1836-2021 城市桥梁工程施工技术规程高清最新版
- 2023年唐山市开平区社区工作者招聘考试笔试题库及答案解析
- 用章申请表模板
- 煤矿设备常用动力系数
评论
0/150
提交评论