大学WEB数据库技术应用教程-王承君-PPT文稿资料课件PPT
收藏
资源目录
压缩包内文档预览:(预览前20页/共155页)
编号:21836379
类型:共享资源
大小:15.89MB
格式:ZIP
上传时间:2019-09-06
上传人:QQ24****1780
认证信息
个人认证
王**(实名认证)
浙江
IP属地:浙江
25
积分
- 关 键 词:
-
大学
web
数据库技术
应用
利用
运用
教程
王承君
ppt
文稿
资料
课件
- 资源描述:
-
大学WEB数据库技术应用教程-王承君-PPT文稿资料课件PPT,大学,web,数据库技术,应用,利用,运用,教程,王承君,ppt,文稿,资料,课件
- 内容简介:
-
学习目标 l ASP内置对象的使用 l ActiveX组件对象的使用 l IE浏览器对象的结构和在脚本中的使用,第7章 ASP对象,返回总目录,第7章 ASP对象,返回总目录,7.1 内置对象 7.1.1 Request对象 7.1.2 Response对象 7.1.3 Server对象 7.1.4 Application对象 7.1.5 Session对象 7.1.6 ObjectContext对象 7.1.7 Global.asa文件,7.2 ActiveX组件 7.2.1 对象实例的创建 7.2.2 ASP内置组件,返回目录,在面向对象编程中,对象就是指由当作完整实体的操作和数据组成的变量。用户可以通过一组方法或相关函数的接口访问对象的数据,客户端可以调用这些方法来执行某种操作。ASP提供了6个功能强大的内置对象,这些对象使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户信息,从而使程序开发者摆脱了很多烦琐的工作。这6个对象中的每一个对象都具有各自的属性、方法,有的还拥有数据集合与事件,它们共同完成Web中的一些重要工作。下面我们分别来讲述这些内置对象。,7.1 内置对象,Request的功能主要是从客户端获取信息。我们可以使用Request对象访问任何用HTTP请求传递的所有信息,包括从HTML表格用POST方法或GET方法传递的参数、cookie 和用户认证。Request 对象使用户能够访问客户端发送给服务器的二进制数据。 Request 的基本格式: Request.集合 | 属性 | 方法 ( 变量 ) 下面作者对一些常用Request语法进行介绍。,7.1.1 Request对象,返回目录,1Form集合 Form 集合可以获取表单用POST方法来传递的信息,换句话说就是,若HTML表单是使用POST方法来传递的,就必须用form集合来得到提交信息。 格式: Request.Form(element)(index)|.Count 参数: element指定集合要检索的表格元素的名称。换句话说element就是上一页表单中的某个文本框、密码框或者隐藏域等的名称。Index为可选参数,使用该参数可以访问某参数中多个值中的一个。它可以是1到 Request.Form(element).Count 之间的任意整数。Count为集合中元素的个数。,7.1.1 Request对象,返回目录,Form 集合按请求正文中参数的名称来索引。 Request.Form(element) 的值是请求正文中所有 element 值的数组。通过调用 Request.Form(element).Count 来确定参数中值的个数。如果参数未关联多个值,则计数为 1。如果找不到参数,计数为0。若要引用有多个值的表格元素中的单个值,必须指定index值。index参数可以是从1到Request.Form(element).Count 中的任意数字。如果引用多个表格参数中的一个,而未指定 index 值,返回的数据将是以逗号分隔的字符串。,7.1.1 Request对象,返回目录,【例7.1】 欢迎您光临本网站!请协助填写下面的问卷调查 您是通过什么渠道知道中国早教网的? 报纸 杂志 网络 其他,7.1.1 Request对象,返回目录, “ Next % 将以上代码保存为 form.asp 文件并运行,其结果如图7-1所示。,7.1.1 Request对象,返回目录,图7-1 Form集合示例,7.1.1 Request对象,返回目录,2QueryString QueryString集合检索并接收HTTP查询字符串中变量的值,HTTP查询字符串由问号后的值指定。QueryString集合也可以获取表单用get方法来传递的信息,换句话说就是,若HTML表单是使用get 方法来传递的,就必须用QueryString集合来得到提交信息。 格式:Request.QueryString(variable)(index)|.Count 参数:variable查询字符串中某一变量的名称。Index为可选参数,使用该参数可以访问某参数中多个值中的一个,它可以是1到 Request.Form(element).Count 之间的任意整数。Count 为集合中元素的个数。 QueryString集合可以以名称检索QUERY_STRING变量。 equest.QueryString(参数)的值是出现在QUERY_STRING中所有参数的值的数组。,7.1.1 Request对象,返回目录,【例7.2】 welcome 欢迎您 . 您的年龄是 岁. 将上面的程序保存为names.asp文件。若在地址栏中输入http:/localhost/names.asp? name=Mery&age=30,其结果如图7-2所示。,7.1.1 Request对象,返回目录,图7-2 QueryString集合示例,7.1.1 Request对象,返回目录,注意: 浏览器地址栏的文件名后面加了一个?号,?号后面跟着变量名及其被赋的值,多个变量名之间用&号进行连接。而Request.querystring最大的功能就是能将?号后面的这些变量名分开,并且将其所对应的值一一取出,例如上面例子中,name 对应Mery,age对应30。不同的变量名之间是用&号进行连接,那么?后是相同的变量名时,request.querystring到底是取前一个?后一个?还是两个一起?我们来看下面的例子。,7.1.1 Request对象,返回目录,【例7.3】 asp教程 jsp教程 xsp教程 you chosed 当点xsp教程时,显示的是“xsp教程,xml”,中间自动加了“,”号。,7.1.1 Request对象,返回目录,3Cookies 什么是 Cookie?Cookie被译为“网上信息数据块”,它是网络服务器用于跟踪用户信息、存储用户特定信息的文件,该文件存在于客户机上。Cookie可以被看作是一个标签,当访问一个需要惟一标识你的网址的Web站点时,它会在你的硬盘上留下一个标记,下一次访问同一个站点时,站点的页面会查找这个标记。每个 Web 站点都有自己的标记,标记的内容可以随时读取,但只能由该站点的页面完成。每个站点的 Cookie 与其他所有站点的 Cookie 存在同一文件夹中的不同文件内(你可以在Windoows 98的Windows目录下的Cookie文件夹中找到它们,Windows 2000则在Documents and Settings文件夹下特定用户的cookies文件夹中)。,7.1.1 Request对象,返回目录,一个 Cookie 就是一个惟一标识客户的标记,Cookie 可以包含在一个对话期或几个对话期之间某个 Web 站点的所有页面共享的信息,使用 Cookie 还可以在页面之间交换信息。使用 Response 命令可以将cookie写入访问者的计算机,使用 Request 命令可以从访问者的计算机中取回cookie。 Request提供的Cookies集合允许用户检索在 HTTP 请求中发送的 cookie 的值。这项功能经常被使用在要求认证客户密码以及电子公告板、Web 聊天室等 ASP 程序中。,7.1.1 Request对象,返回目录,格式:Request.Cookies(cookie)(key)|.attribute 参数: cookie 指定要检索其值的 cookie。Key为可选参数,用于从 cookie 字典中检索子关键字的值。attribe 指定 cookie 自身的有关信息。如:HasKeys 只读,指定 cookie 是否包含关键字。 如果客户端浏览器发送了两个同名的cookie,那么 Request.Cookie将返回其中路径结构较深的一个。例如,如果有两个同名的的cookie,但其中一个的路径属性为/www/而另一个为/www/home/,客户端浏览器同时将两个cookie都发送到/www/home/目录中,那么Request.Cookie将只返回第二个cookie。,7.1.1 Request对象,返回目录,要确定某个 cookie 是不是cookie字典(cookie有否有关键字),可使用下列脚本。 如果myCookie 是一个 cookie 字典,则前面的赋值为True;否则,为False。 关于request.cookies的具体用法我们将在response中一起讲解。,7.1.1 Request对象,返回目录,4ServerVariables 格式:Request.ServerVariables (服务器环境变量) 大家都知道在浏览器中浏览网页时使用的传输协议是 HTTP,在 HTTP 的标题文件中会记录一些客户端的信息,如:客户的 IP 地址、浏览器的语言系统等。有时服务器端需要根据不同的客户端信息做出不同的反映,这时可以使用ServerVariables 集合获取所需的服务器环境变量信息,如:客户机IP地址。这些变量很多,表7-1仅列出了一些常用的。,7.1.1 Request对象,返回目录,表7-1 服务器环境变量信息表,7.1.1 Request对象,返回目录,表7-1 服务器环境变量信息表,返回目录,我们可以使用以下脚本打印出所有的服务器环境变量。 Server VariableValue ,7.1.1 Request对象,返回目录,【例7.4】 根据以上的SERVER_NAME提取服务器主机名,SCRIPT_NAME提取虚拟地址,则两者的结合再加上http:/就是个完整的网址。 其结果如图7-3所示。,7.1.1 Request对象,返回目录,图7-3 ServerVariables示例,7.1.1 Request对象,返回目录,Request 对象用来获取客户端 HTTP 信息,与它相反,Response对象在ASP中负责将信息传递给用户。Response对象用于动态响应客户端请求(Request),并将动态生成的响应结果返回到客户端浏览器中,使用Response对象可以直接发送信息给浏览器、重定向浏览器到另一个URL或设置cookie的值等。Response对象在asp编程中非常广泛,也是一种非常好用的工具。 基本格式: Response.集合|属性|方法,7.1.2 Response对象,返回目录,1属性 (1)Buffer。 格式:Response.Buffer=True/False 说明: Buffer 属性指示是否有缓冲页输出,值为True或False,默认值为False。当为True时,页面输出到缓冲区;值为False时,页面直接输出到客户端浏览器。当缓冲页输出时,只有当前页的所有服务器脚本处理完毕或者调用了Flush 或End方法后,服务器才将响应发送给客户端浏览器,服务器将输出发送给客户端浏览器后就不能再设置Buffer属性。因此应该在.asp文件的第一行调用Response.Buffer。,7.1.2 Response对象,返回目录,(2)Charset。 格式:Response.Charset(CharsetName) 说明: Charset 属性将字符集名称附加到 Response 对象中 content-type 标题的后面,用来设置服务器响应给客户端的文件字符编码。对于不包含Response.Charset 属性的ASP页,content-type 标题将为:content-type:text/html。 我们可以在.asp文件中指定content-type标题,如: 将产生以下结果: content-type:text/html; charset=gb2312,7.1.2 Response对象,返回目录,注意: 无论字符串表示的字符集是否有效,该功能都会将其插入content-type 标题中。且如果某个页包含多个含有Response.Charset的标记,则每个Response.Charset 都将替代前一个CharsetName。这样,字符集将被设置为该页中Response.Charset的最后一个实例所指定的值。,7.1.2 Response对象,返回目录,(3)Expires。 格式:Response.Expires = number 说明: Expires 属性指定了在浏览器上缓冲存储的页距过期还有多长时间。如果用户在某个页过期之前又回到此页,就会显示缓冲区中的页面。如果设置 response.expires=0,则可使缓存的页面立即过期。这是一个较实用的属性,当客户通过ASP的登录页面进入Web站点后,应该利用该属性使登录页面立即过期,以确保安全。,7.1.2 Response对象,返回目录,【例7.5】 ,7.1.2 Response对象,返回目录,(4)ExpiresAbsolute。 格式:Response.ExpiresAbsolute = date time 说明: 与 Expires 属性不同,ExpiresAbsolute 属性指定缓存于浏览器中的页面的确切到期日期和时间。在未到期之前,若用户返回到该页,该缓存中的页面就会被显示。如果未指定时间,该主页在当天午夜到期;如果未指定日期,则该主页在脚本运行当天的指定时间到期。如 指定了页面在2008 年 12 月 30日下午4点 30分15秒到期。,7.1.2 Response对象,返回目录,(5)status。 格式:Response.Status = StatusDescription 说明: 服务器要响应的状态行的值。Response.Status=“状态描述字符串“,字符串可以为一个三位整数或一串说明文字组成,但必须放在之前。,7.1.2 Response对象,返回目录,2方法 (1)Clear。 格式:Response.Clear 说明: Clear方法的主要作用是清除缓冲区中的所有html输出,但该方法只清除响应正文而不清除响应标题。可以用Clear方法处理错误情况。但是如果没有将Response.Buffer设置为True,则该方法将导致运行时错误。,7.1.2 Response对象,返回目录,【例7.6】 其结果如图7-4所示。执行response.write now()时显示当前的日期和时间,但执行response.clear时日期和时间被清除,所以在页面上显示的是一随机数。,7.1.2 Response对象,返回目录,图7-4 clear方法示例,7.1.2 Response对象,返回目录,(2)End。 格式:Response.End 说明:这是Response常用的一种方法,使 Web 服务器停止处理脚本并返回当前结果,文件中剩余的内容将不被处理。 【例7.7】 其结果如图7-5所示。注意与clear进行区别。执行response.write now()显示当前的日期和时间,执行response.end结束了后面程序的运行。,7.1.2 Response对象,返回目录,图7-5 end方法示例,7.1.2 Response对象,返回目录,3)Redirect。 格式:Response.Redirect URL 说明: Redirect 方法让浏览器立即重定向到程序指定的URL地址。这也是我们经常用到的一个方法,该方法可以使程序员根据客户的不同响应,为不同的客户指定不同的页面或根据不同的情况指定不同的页面。一旦使用了 Redirect 方法任何在页中显式设置的响应正文内容都将被忽略。,7.1.2 Response对象,返回目录,【例7.8】 Response.Redirect Response.Redirect“index.asp“ ThisURL= Response.Redirect ThisURL4)Write。 格式:Response.Write variant 说明:Write方法是我们平时最常用的方法之一,它的功能是将指定的字符串写到当前的 HTTP输出。Response.write后面为所显示的信息,可以用括号包含,也可以直接书写,直接书写时,待显示的信息和response.write之间应有空格。如果书写的字符串信息或与HTML代码相关,该信息应该用引号包含;而如果是ASP本身的函数或变量,这些函数和变量不需要使用引号括起来,直接用即可。,7.1.2 Response对象,返回目录,【例7.9】 先输出欢迎词,再输出一个随机数。 “) Randomize response.write “任意数是“&rnd()&“% 第一个write语句用“&”连接“你好!,欢迎你!”和html中的换行符br。第二个语句则用“&”将字符串和随机函数rnd及br连接起来。注意函数rnd没有使用引号。 随机函数rnd()返回一个小于1但大于或等于0的值。在调用rnd函数之前,需先使用无参数的 Randomize 语句初始化随机数生成器。若缺少Randomize,则无法继续生成随机种子。 可以使用以下公式来产生指定范围的随机整数。 Int(upperbound - lowerbound + 1) * Rnd + lowerbound) 这里,upperbound 是此范围的上界,而 lowerbound 是此范围内的下界。,7.1.2 Response对象,返回目录,下面是一个利用随机函数的例子。 【例7.10】 Do Until choose = vbNo value = Int(41 * Rnd) + 60) 产生 60 到 100 之间的随机数 msgbox value choose = MsgBox (“Roll again? “, vbYesNo) Loop 该例中,由int和rnd函数产生一随机数并在一消息框内显示出来,单击“确定”后,在弹出的选择框内询问是否还要继续,若选择“是”则会显示另一随机数,否则程序结束。,7.1.2 Response对象,返回目录,3集合 Response对象只有一个集合:Cookies。关于cookie我们在前面已经作了介绍,并且提到response对象是用来将cookie写入访问者的计算机的。Response对象中的Cookies集合能设置cookie的值。若指定的cookie不存在,则创建它;若存在,则设置新的值并将旧值删去。下面我们具体讲解如何应用它。 格式:Response.Cookies(cookie)(key)|.attribute=value,7.1.2 Response对象,返回目录,说明: (1)cookie 指定要检索其值的 cookie名称。 (2)key可选参数,用于从 cookie 字典中检索子关键字的值。 (3)attribe 指定cookie自身的有关信息。attribe参数可以是下列之一: Domain:Domain 若被指定,则cookie将被发送到对该域的请求中去。域属性表明cookie由哪个网站产生或者读取,默认情况下cookie的域属性设置为产生它的网站,但也可以根据需要改变它。,7.1.2 Response对象,返回目录,Expires:指定cookie的过期日期。若此项属性的设置未超过当前日期,则在任务结束后cookie 将到期。例如: Response.Cookies(“CookieName“).Expires=#January 01, 2015# 语句设置了cookie的使用到期时间为“2015年1月1日”;而 Response.Cookies(“CookieName“).Expires=Date+365 设定cookie的过期时间为“cookie的创建时间+365天”。 HasKeys:指定cookie是否包含关键字。 Path:若被指定,则cookie将只发送到对该路径的请求中。如果未设置该属性,则使用应用程序的路径。,7.1.2 Response对象,返回目录,【例7.11】 本例通过留在本地磁盘上的cookie记录一年内访问本站的次数,若是第一次访问则显示“欢迎您首次访问本站”,否则显示“您已是第几次访问本站了。” “0“ then num=num+1 Response.write “您已是第“&num&“次访问本站点了。“ else Response.write “欢迎您首次访问本站。“ num=1 end if,7.1.2 Response对象,返回目录,response.cookies(“visitnum“)=num response.cookies(“visitnum“).expires=date+365 % 上例中用response.cookies创建了一个cookie,其值为num,并设置该cookie的过期日期为当前日期后一年。用resquest.cookies来读取cookie的值。,7.1.2 Response对象,返回目录,【例7.12】 创建一个cookie然后输出。 ,7.1.2 Response对象,返回目录, response及request例 function getpath() dim path,pos path=request.ServerVariables(“PATH_INFO“) pos=InStrRev(path,“/“) getpath=left(path,pos-1) end function ,7.1.2 Response对象,返回目录, Information of you: “ next % ,7.1.2 Response对象,返回目录,该例首先创建了一个名叫Merry的cookie字典,并为这个字典的关键字赋值。而response.cookies(“Merry“).path=getpath语句调用了一个叫getpath的函数。Getpath函数中:path=request.ServerVariables(“PATH_INFO“)语句调用了request的ServerVariables集合。调用ServerVariables时,若传入“PATH_INFO”,则会返回网页的“虚拟路径文件名称”;pos=InStrRev(path,“/“)语句的作用是寻找符号“/”的位置。该程序运行结果如图7-6所示,7.1.2 Response对象,返回目录,图7-6 cookies示例,7.1.2 Response对象,返回目录,Server 对象提供对服务器上的方法和属性的访问,其中大多数方法和属性是作为实用程序的功能服务的。有了Server对象,我们就可以完成用服务器特定的方法格式化数据、管理其他网页的执行、管理外部对象和组件的执行以及处理错误等任务。 基本格式: Server.属性|方法,7.1.3 Server对象,返回目录,1属性 Server对象只有一个属性:ScriptTimeout。该属性设置或返回页面的脚本在服务器退出执行和报告一个错误之前可以执行的时间(秒数)。达到该值后将自动停止页面的执行,并从内存中删除包含可能进入死循环的错误的页面或者是那些长时间等待其他资源的网页。这会防止服务器因存在错误的页面而过载。,7.1.3 Server对象,返回目录,格式:Server.ScriptTimeout=NumSeconds 说明: NumSeconds 参数指定脚本在被服务器结束前最大可运行的秒数,缺省值为90。对于运行时间较长的页面需要增大这个值。 例如: 语句设置服务器处理时间为100秒,否则超时。 语句获取ScriptTimeout属性当前值,并将其存储在变量 TimeOut 中,7.1.3 Server对象,返回目录,2方法 (1)HTMLEncode方法。HTMLEncode允许对特定的字符串进行 HTML 编码。 格式:Server.HTMLEncode(string) 说明:参数string为指定要编码的字符串。,7.1.3 Server对象,返回目录,【例7.13】 这里就另起一行,说明代码被执行。”) % 这里应该不会另起一行,也就是代码没有被执行了。”) % 程序执行结果如图7-7所示。,7.1.3 Server对象,返回目录,图7-7 HTMLEncode 方法示例,7.1.3 Server对象,返回目录,我们可以看到在第一个语句中没有使用HTMLencode方法,该句输出字符串中的被当作HTML的回车标记使用了,而第二个语句使用了HTMLencode方法,“”被编码,在浏览器端显示时被当作普通字符显示。如果使用“查看”菜单中的“源文件”命令,我们将会看到如图7-8所示的内容,被编码成br>。,7.1.3 Server对象,返回目录,图7-8 例7.13的源文件,7.1.3 Server对象,返回目录,(2)URLEncode方法。正如HTMLEncode 方法使客户可以将字符串翻译成可接受的HTML格式一样,Server对象的URLEncode方法则是根据 URL 规则对字符串进行正确编码。 格式:Server.URLEncode(string) 说明: string为待转化的字符串。该方法返回一个字符串,该串是输入值string的拷贝,但是在URL中无效的所有字符,如?、&和空格等都被转换为等价的URL条目。例如:%Respones.Write(Server.URLEncode(“”)%的运行结果为: http%3A%2F%2Fwww%2Emicrosoft%2Ecom。,7.1.3 Server对象,返回目录,(3)MapPath方法。MapPath方法将指定的相对或虚拟路径映射到服务器相应的物理目录上。 格式:Server.MapPath(Path)。 说明:Path指定要映射物理目录的相对或虚拟路径。若Path以一个正斜杠(/)或反斜杠()开始,则MapPath方法返回路径时将Path视为完整的虚拟路径;若Path不是以斜杠开始,则MapPath方法返回同.asp文件中已有的路径相对的路径。但MapPath方法不支持相对路径语法 (.) 或 ()。另外,MapPath方法不检查返回的路径是否正确或在服务器上是否存在。因为 MapPath方法只映射路径而不管指定的目录是否存在,所以,我们可以先用MapPath方法映射物理目录结构的路径,然后将其传递给在服务器上创建指定目录或文件的组件。,7.1.3 Server对象,返回目录,假如文件data.txt和包含下列脚本的mappath.asp文件都位于目录C:inetpubwwwroot Script下,C: inetpub wwwroot 目录被设置为服务器的宿主目录。那么:,1)语句 使用服务器变量PATH_INFO 映射当前文件的物理路径。该语句输出: c:inetpubwwwrootscript mappath.asp,7.1.3 Server对象,返回目录,2)下列脚本: 将会输出: c:inetpubwwwrootscriptdata.txt c:inetpubwwwrootscriptscriptdata.txt 由于该示例中的路径参数不是以斜杠字符开始的,所以它们被相对映射到了当前目录,即: c:inetpubwwwrootscript。,7.1.3 Server对象,返回目录,3)下面的脚本使用斜杠字符指定返回的路径应被视为在服务器的完整虚拟路径。 脚本: 输出为: c:inetpubwwwrootscriptdata.txt c:inetpubwwwrootscript,7.1.3 Server对象,返回目录,4)下列示例演示如何使用正斜杠 (/) 或反斜杠 () 返回宿主目录的物理路径。 脚本: 输出为: c:inetpubwwwroot c:inetpubwwwroot ,7.1.3 Server对象,返回目录,(4)CreateObject方法。Server.CreateObject用于创建已经注册到服务器上的 ActiveX 组件实例。 格式:Server.CreateObject(progId) 说明: progId是指定要创建的对象的类型。默认情况下,由Server.CreateObject方法创建的对象具有页作用域。换句话说就是在当前ASP页处理完成之后,服务器将自动破坏这些对象。如果要创建有会话或应用程序作用域的对象,可以使用标记并设置SESSION或APPLICATION的SCOPE属性,也可以在对话及应用程序变量中存储该对象。,7.1.3 Server对象,返回目录,如下例程序: 可以使用nothing释放已建立的对象,如:,也可以使用一个新的量来替代原有的变量。例如:,用字符串some other value替代了ad。 但是该方法不允许创建与内建对象同名的对象实例,否则,脚本将返回错误。,7.1.3 Server对象,返回目录,(5)Execute方法。Execute 方法执行一个 .asp 文件然后返回调用者。这很像许多语言中的类的调用。 格式:Server.Execute(Path) 说明: Path是指定执行的asp文件的路径及名称,该参数可以包括一个询问信息。如是它是一个绝对路径,那么它必须被放在和这个ASP应用程序相同的目录下。 当一个asp文件通过execute方法调用另一个由path参数指定的asp文件后,被path指定的文件执行后将返回调用它的文件继续运行以下的程序。就像高级程序设计语言中函数或过程的调用那样。,7.1.3 Server对象,返回目录,【例7.14】 该例中asp1调用asp2。 asp1.asp文件内容: asp2.asp文件内容: 在IE地址栏中输入localhost/asp1.asp,回车后执行结果如图7-9所示。,7.1.3 Server对象,返回目录,图7-9 Execute方法示例,7.1.3 Server对象,返回目录,Application对象是一个应用程序级的对象,它包含的数据可以在整个Web站点中被所有用户使用,并且可以在网站运行期间持久地保存数据。我们可以使用Application对象,在给定的应用程序的所有用户之间共享信息,而且Application对象还有控制访问应用层数据的方法和可用于在应用程序启动和停止时触发过程的事件。Application对象的有效期没有限制,直到应用程序停止。,7.1.4 Application对象,返回目录,1创建和使用application变量 格式:Application(“变量名“)=“变量值“ 说明:Application对象可以存取变量,并且这些变量可以被多个用户共享。下面我们通过一个例题来讲解application变量的使用。 【例7.15】 %存储变量 application(“welcome“)=“欢迎光临!“ application(“name“)=“轻舞飞扬“ application(“endwords“)=“的主页“,7.1.4 Application对象,返回目录,输出变量 response.write(“) response.write(application(“welcome“) response.write(“) response.write(“这是“) response.write(“) response.write(application(“name“) response.write(“) response.write(application(“endwords“) response.write(“)% 结果如图7-10所示。,7.1.4 Application对象,返回目录,图7-10 Application对象示例,7.1.4 Application对象,返回目录,2Lock和Unlock方法 Application 对象有两个方法Lock方法和Unlock方法,它们都用于处理Application中的数据。Lock方法锁定Application对象,禁止其他客户修改 Application对象的属性以保证同一时刻只能有一个用户对Application对象进行操作。与Lock方法相反,Unlock方法是允许其他用户修改Application对象的属性。如果用户没有明确调用Unlock方法,则服务器将在.asp文件结束或超时后即解除对Application对象的锁定。Lock方法和Unlock方法是通过如下格式进行引用的:application.方法。,7.1.4 Application对象,返回目录,【例7.16】 下面这段程序用Application来记录页面访问的次数。 ,7.1.4 Application对象,返回目录,在上面的程序中,首先用Lock方法将对象锁定,这样确保当一个用户进行计数器累加时,其他的用户不能在同一时间改变计数器的值。当该用户操作完成后,再用Unlock解除对象的锁定。你会发现每刷新一次,都会使记数器NumVisits累加。这是因为所有的访问数值都是建立在页面之上的,若要按IP值访问来进行计数,那就需要建立建立一个Session。后面我们要讲到Session对象的使用。 在该例中,记数要确保服务器不被重启,这是因为所有的访问数值都是建立在页面之上的,并未进行保存成文件或保存到数据库这样的处理。所以当服务器重启时,计数器将从零开始重新计数。,7.1.4 Application对象,返回目录,若将一个数组存储在Application对象中,请不要直接更改存储在数组中的元素。例如,下列的脚本将无法运行。 这是因为Application存储数组信息时是将数组作为一个集合进行存取的,因而上面这个语句并不能改变StoredArray(3)的值。所以在将数组存储在 Application 对象中时,最好在检索或改变数组中的对象前获取数组的一个副本。在对数组操作完成后,再将数组全部存储在 Application 对象中,这样所做的任何改动将被存储下来,而且要在存储前后使用Lock和Unlock。看下面的例题,注意变量StoredArray的值在events1.asp和events2.asp中的不同。,7.1.4 Application对象,返回目录,【例7.17】 将下面这段脚本存储为events1.asp。 ,7.1.4 Application对象,返回目录,将下面这段脚本存储为events2.asp。 运行结果将是:hello there。,7.1.4 Application对象,返回目录,3事件 (1)Application_OnStart。Application_OnStart 事件在首次创建新的会话(即Session_ OnStart 事件)之前发生。当Web服务器启动并允许对应用程序所包含的文件进行请求时就触发Application_OnStart事件。Application_OnStart 事件的处理过程必须写在 Global.asa 文件之中。 格式: Sub Application_OnStart. . . End Sub ,7.1.4 Application对象,返回目录,(2)Application_OnEnd。Application_OnEnd 事件在应用程序退出时于 Session_OnEnd 事件之后发生,当然Application_OnEnd 事件的处理过程也必须写在 Global.asa 文件之中。 关于这两个事件的具体用法我们将在Global.asa一节中进行详细讲述。 使用Application对象时必须注意不能在Application对象中存储 ASP 内建对象。例如Set Application(“var1“)=Session将返回一个错误。,7.1.4 Application对象,返回目录,Application对象记载所有访问该应用程序的用户信息,而下面我们要讲述的Session对象则记载的是某一特定的用户信息。不同的用户用不同的Session对象来记载。当用户在应用程序的各Web页之间跳转时,存储在Session对象中的变量不会消失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的Web页时,如果该用户还没有会话,则Web服务器将自动创建一个Session对象;当该Session到期或终止时,服务器将终止该Session。,7.1.5 Session对象,返回目录,通过向客户程序发送惟一的 Cookie 可以管理服务器上的 Session 对象。服务器将所有的Session内记录的数据,以Cookies的方式传至用户的浏览器。通常一般浏览器会将这些Cookies存起来,每当使用者点选连接,再次与服务器做联机时,浏览器就会把这些Cookies传回Server供做处理:这即是Session的运作原理。由此可知会话状态Session仅在支持cookie的浏览器中保留,如果客户关闭了Cookie选项Session也就不能发挥作用了。 Session对象最常见的作用就是存储用户的首选项,像会员的登入账号、时间、状态以及许许多多该记录的实时数据(如购物系统记录使用者的购物篮内的商品)。这些信息属于各使用者私人所需要,通常开发者都是使用Session记录来处理。,7.1.5 Session对象,返回目录,1创建和使用Session变量 格式:Session(“变量名“)=“变量值“ 说明: Session对象可以存取变量,这些变量只属于某个特定的用户。下面我们将上一节的例7.16用session变量来代替application变量。 【例7.18】 %,7.1.5 Session对象,返回目录,存储变量 session (“welcome“)=“欢迎光临!“ session(“name“)=“轻舞飞扬“ session(“endwords“)=“的主页“ 输出变量 response.write(“) response.write(session(“welcome“) response.write(“) response.write(“这是“) response.write(“),7.1.5 Session对象,返回目录,response.write(session(“name“) response.write(“) response.write(session(“endwords“) response.write(“) % 结果与例7.16的完全相同,但是该例中定义的三个变量welcome、name、endwords只属于某一个特定用户,这与例7.16中的三个变量是不同的,它们属于所有的用户。,7.1.5 Session对象,返回目录,2属性 (1)SessionID。 SessionID属性返回用户的会话标识。在创建会话时,服务器会为每一个会话生成一个单独的标识,会话标识以长整型数据类型返回。在很多情况下SessionID可以用于Web页面注册统计。 格式:Session.SessionId 说明:该属性能够自动为每一个session对象分配一个不同的编号。利用该属性可以解决用户的登录控制问题。,7.1.5 Session对象,返回目录,【例7.19】 显示系统自动分配的编号。 Session实例演示 结果如图7-11所示。,7.1.5 Session对象,返回目录,图7-11 SessionID 属性示例,7.1.5 Session对象,返回目录,(2)TimeOut。 该属性设置Session的最大间隔时间。间隔时间是指客户器端从最近一次向Web服务器提出要求,到下一次向Web服务器提出要求的时间。可以理解为:如果用户在该超时时限之内不刷新或请求网页,则该会话将终止。 格式:Session.TimeOut =nMinutes 说明:其中参数nMinutes为该应用程序的Session对象指定了超时时限,即指定会话空闲多少分钟后服务器将自动终止该会话,系统默认值为20分钟。在网吧等公共场所,登录个人信息页而忘记关闭窗口时,可以把时间设短一些以保护个人隐私。,7.1.5 Session对象,返回目录,(3)CodePage。 session对象的CodePage属性决定将被用以显示动态内容的代码页。代码页是字符集的数字值。 格式:Session.CodePage(=Codepage) 说明:其中参数CodePage是一个无符号整数。这个整数代表正在运行AsP脚本引擎的系统的有效代码页。,7.1.5 Session对象,返回目录,2Abandon方法 Abandon方法删除所有存储在 Session 对象中的对象并释放这些对象的资源。如果用户未明确地调用 Abandon 方法,一旦会话超时,服务器将删除这些对象。 【例7.20】 该例模拟登录过程。将下面的脚本保存为log.asp。 % 提取url中变量logout的值是否为true,若为真,就执行 Session.Abandon() if Request.QueryString(“logout“)=“true“ then Session.Abandon() end if,7.1.5 Session对象,返回目录,如果单击了确认按钮,那么就判断提取的内容是否为空,若不为空则建立Session对象 submitname=request.form(“submit1“) if submitname=“确认“ then if Request.Form(“name“)“ and Request.Form(“pwd“)“ then Session(“name“)=Request.Form(“name“) Session(“pw“)=Request.Form(“pwd“) end if end if %,7.1.5 Session对象,返回目录,“ then response.write(“你的name值是:“&Session(“name“) response.write(“显示你的资料“) else 否则就显示表单用以输入建立Session的平台 %,7.1.5 Session对象,返回目录, 姓名: 密码: 显示你的资料 ,7.1.5 Session对象,返回目录,上面的程序一开始就判断logout的值(logout的值用来判断用户是否单击“退出”按钮,该值在info中进行赋值),若该值为真,则使用abandon方法删除session对象及其所占有的资源。如果不为真,那么就判断是否单击“确认”按钮(名称为submit1)。若单击了“确认”,而且name和psw项又不为空,则将表单内容存入session中;否则,就输入建立session的平台。程序中做了两个info.asp的链接,其作用是不同的。 将下面的脚本保存为info.asp。 % 如果session对象值为空则跳转到log.asp if ses
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。