61
5.3 Server 对对 Server 对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对 对对对对对对 Server.property | method 对对property 对 Server 对对对对对method 对 Server 对对对对对 Server 对对对对对 ScriptTimeOut 对对对对对对对对对对对对对 对对对对 :, 对对对对对 1

5.3 Server对象

  • Upload
    chaka

  • View
    100

  • Download
    7

Embed Size (px)

DESCRIPTION

5.3 Server对象. Server 对象的主要作用是提供对服务器上方法和属性的访问。其中大多数方法和属性是作为实用程序的功能服务的。其语法规则如下: Server.property | method 其中: property 为 Server 对象的属性, method 为 Server 对象的方法 Server 对象的属性: ScriptTimeOut :规定脚本文件最长执行时间,超过时间就停止执行. 5.3 Server对象. Server 对象的方法 : CreatObject :用于创建已注册到服务器的 ActiveX 组件、应用程序或脚本对象的实例 - PowerPoint PPT Presentation

Citation preview

Page 1: 5.3  Server对象

5.3 Server对象

Server 对象的主要作用是提供对服务器上方法和属性的访问。其中大多数方法和属性是作为实用程序的功能服务的。其语法规则如下: Server.property | method

其中: property为 Server 对象的属性, method为 Server 对象的方法

Server 对象的属性: ScriptTimeOut :规定脚本文件最长执行时间,超过时间就停止执行

1

Page 2: 5.3  Server对象

5.3 Server对象

Server 对象的方法 : CreatObject :用于创建已注册到服务器的 ActiveX组件、应用程序或脚本对象的实例

Execute :转到新的网页执行,执行完毕后返回原网页,继续执行后面的语句

Transfer :转到新的网页执行,执行完毕后不返回原网页,而是停止执行。

MapPath :将虚拟路径转化为物理(绝对 ) 路径 HTMLEncode :将字符串转换成 HTML 编码格式 URLEncode :将字符串转换成 URL 编码格式 GetLastError: 返回一个错误代码

2

Page 3: 5.3  Server对象

5.3.1 ScriptTimeout属性 ScriptTimeout是 Server 对象唯一一个属性。该属性作用是设置 ASP 程序所允许的最长时间,在脚本运行超过这一设置时间之后即作超时处理,单位为“秒”,系统的默认值为 90 秒。当系统运行达到该值后将自动停止页面的执行,如此,可以从内存中删除包含可能进入死循环的错误页面或者是那些需要长时间等待其他资源的网页。其语法规则如下: Server.ScriptTimeout=NumSeconds (整数)

其中, NumSeconds 为指定的秒数 例如,指定服务器处理脚本在 120 秒后超时。

<% Server.ScriptTimeout=120 %> 【例 eg5_10.asp 】用 do while 编写一段死循环代码,使得

该死循环代码在执行了 100 秒后,自动退出循环 35_11timeout.asp 5_11timeout-1.asp

Page 4: 5.3  Server对象

5.3.2 CreateObject方法 CreateObject 这是 Server 对象最主要的方法,它用于创

建组件、应用程序或脚本对象的实例,返回可以在代码中使用的一个引用 , 利用它就可以调用其它外部程序或组件的功能了其语法规则如下:

Server.CreateObject( progID ) 其中 progID 表示组件、应用程序或脚本对象的对象类型。 其格式为

[Vendor.]component[.Versi on] 。 注意:默认情况下,由 Server.CreateObject 方法创建的对象

的作用域为当前页。即当前页面处理完成之后,服务器将自动破坏刚才由 Server.CreateObject 方法创建的对象。

例如,创建自动轮换广告组件 MSWC.AdRotator 的一个实例 OneAd 的代码为:

<% Set OneAd = Server.CreateObject("MSWC.AdRotator") %> 比如下面的语句将创建一个数据库连接对象实例:

<% Set conn=Server.CreateObject("ADODB.Connection") %>

4

Page 5: 5.3  Server对象

5.3.3 Execute方法

Execute 方法是 IIS5.0 新增的功能,其功能为调用指定的 ASP 程序,且执行完被调用的程序之后再返回原来的程序继续执行继续执行Execute 方法后面的语句。有点类似于程序语言中的函数调用。其语法规则如下: Server.Execute(path)

其中,其中 path 表示要执行文件的相对路径或绝对路径。 【例 eg5_11.asp 】编写一段代码,要求在第一张网页中调

用执行第二张网页,执行完后再返回本网页。

5

例:5_execute.asp5_execute-1.asp

Page 6: 5.3  Server对象

Eg5_11.ASP

Eg5_11-1.ASP

Page 7: 5.3  Server对象

5.3.4 Transfer方法

前面的 Excute 方法在调用了另一个 ASP 程序后,会继续执行当前页面的调用代码下面的代码,即Excute 方法执行后,原始页面保留了控制权。 Transfer 方法的功能也是程序的转移执行,但与 Excute 不同的是,该方法执行转移代码后,不再返回原始页面,即原始页面失去了控制权。 Transfer 方法的语法规则如下: Server.Transfer(path)

其中,其中 path 也表示要执行文件的相对路径或绝对路径。 。

【例 eg5_12.asp 】编写一段代码,要求在第一张网页中调用执行第二张网页。注意例 5-12 执行结果的区别。

7

Page 8: 5.3  Server对象

例: 5_transfer.asp5_execute-1.asp

Page 9: 5.3  Server对象

Execute、 Transfer和 Redirect 方法的区别 三者都是停止执行当前网页,转到新的网页执行。主要区别有:

一是, Redirect 和 Transfer 跳转到新网页后,不会再返回原网页,而 Execute 则会在执行完新网页后,返回原网页继续执行 Execute 方法后面的语句。

二是, Redirect 的重定向实际发生在客户端,而 Execute和 Transfer 方法的重定向发生在服务器端,效率更高。

三是, Redirect 语句不能把一些环境变量一起传递到新网页中,而 Execute和 Transfer 可以。

四是, Redirect 方法可以转向一个网页或其他网站,而Execute和 Transfer 方法一般只能转到同一个应用程序的其他文件。 9

Page 10: 5.3  Server对象

10

Execute、 Transfer和 Redirect 方法的区别

Redirect Execute Transfer

运行位置 客户端 服务器 服务器

是否返回原网页 不返回 返回 返回但不显示之后内容

传递环境变量 不能 能 能

转向对象 网页或其他网站 同一应用程序的其他文件

同一应用程序的其他文件

Page 11: 5.3  Server对象

5.3.5 MapPath方法 什么是相对路径、绝对路径? MapPath 方法,可以将虚拟路径转化为物理路径 MapPath 方法将指定的相对或虚拟路径映射到服务器上相应的物理

目录上。若指定的路径以一个正斜杠 (/) 或反斜杠 (\) 开始,则 MapPath 方法返回路径时将该指定路径视为完整的虚拟路径。若该指定路径不是以斜杠开始,则 MapPath 方法返回同 .asp 文件中已有的路径相对的路径。其语法规则如下:

Server.MapPath(Path 虚拟路径字符串 ) 其中, Path 为指定要映射物理目录的相对或虚拟路径。 注意: MapPath 方法不支持相对路径语法 (.) 或 (..) 。而且 MapPath 方法

不检查返回的路径是否正确或在服务器上是否存在。 在何种情况下,需要将虚拟或相对路径转换成绝对路径呢?

在连接文件或数据库之前。 原因是 ASP 规定我们在连接文件或数据库时,必须指定文件(数据库)的实际

路径,这时就必须调用 Server.MapPath 方法。 【例 eg5_13.asp 】编写一段代码,要求网页上显示一个不带正斜杠 (/) 或反

斜杠 (\) 的文件的路径,下一行再显示一个带正斜杠 (/) 或反斜杠 (\) 的文件的路径。

115_12Mappath.asp

Page 12: 5.3  Server对象

Eg5_13.ASP

Page 13: 5.3  Server对象

13

5.3.6 HTMLEncode 方法 该方法功能是将特殊的符号进行编码,使得特殊符号可以正常显示于客户端的浏览器。(即用来输出为 ASCII 形式的HTML 代码),语法: Server.HTMLEncode(“string | specialcharacter”)

语法如下: Server.HTMLEncode(string)

其中 string 是转换的字符串常量、变量或表达式。例如:<% strA=Server.HTMLEncode("<br>") ' 变量 strA 返回值为 &lt;br&gt; %> String和 specialcharacter 代表想显示在浏览器中的字符串或特殊符号 常使用该方法的地方是访客留言板和聊天室。若要在客户端写入特殊符号,

如 < > & 等符号或 HTML 标记,就可使用 Server.HTMLEncode 方法对特殊符号进行编码,当客户端的浏览器收到这种经过编码的特殊符号时,会对它们进行译码,然后把译码的结果显示出来。

Page 14: 5.3  Server对象

14

HTMLEncode 方法示例<HTML><HEAD><TITLE> server.HTMLEncode 示例 </TITLE></HEAD><BODY>这是一个 Server 示例,用于显示特殊符号,网站地址全名等 <p><% = "<a href=http://www.sina.com.cn> 新浪 </a>"

%><br><% = server.htmlencode("<a

href=http://www.sina.com.cn> 新浪 </a>")%><br> <%=server.htmlencode(" 显示 HTML标记<h2></h2>")

%><br><%=server.htmlencode(" 显示特殊符号 < > &") %></BODY></HTML>

5_server.asp

5_13htmlencode.asp

Page 15: 5.3  Server对象

15

5.3.7 URLEncode 方法

该方法也是用来转化字符串,不过它是按照 URL 规则对字符串进行转换的。按照该规则的规定, URL 字符串中如果出现“空格、 ?、 &” 等特殊字符,则接收端有可能接收不到准确的字符,因此就需要进行相应的转换。

语法如下: Server.URLEncode(string)

其中 string 就是转换的字符串常量、变量或表达式。 : 例如:

<%=Server.URLEncode(“<a href=’http://www.sohu.com’>搜狐</a>”)%>

输出: %3Ca+href%3D%27http%3A%2F%2Fwww%2Esohu

%2Ecom%27%3E%CB%D1%BA%FC%3C%2Fa%3E

5_14URLencode.asp

Page 16: 5.3  Server对象

5.4 Application对象 Application 对象是什么?

在Web 应用的所有页面中共享数据, Session 是记载不同用户各自特定的信息 ; Application 是记载所有客户的公共信息。

为什么要用 Application 对象? 要了解 Application 对象的用途,必须先了解变量的生命周期。一般变

量的生命周期从执行设定有该变量的 ASP 网页开始,至网页的执行结果时终止。总之,每次重新进入一个网页时,其中的所有变量的值都会恢复成 Empty 。若要在网页结束执行时,还能保留变量的内容,以备下一次执行时使用或传递给同一网站下的其它网页,那么就可借助Application 对象来实现。

像一般变量一样, Application 对象也是有生命周期的。 Application 对象的有效期?

起始于 PWS/IIS 开始运行而且有人联机时,终止于 PWS/IIS关闭。

Page 17: 5.3  Server对象

关于变量和 Application 对象的生命周期的形象化描述

网页网页

网页网页

…… 其他网页其他网页

---- ---- ApplicationApplication 对象开始对象开始------- ------- 变量由此开始变量由此开始

------- ------- 变量由此结束变量由此结束

------- ------- 变量由此开始变量由此开始

------- ------- 变量由此结束变量由此结束

变量的生命期变量的生命期

变量的生命期变量的生命期

---- ---- ApplicationApplication 对象结束对象结束

ApplicationApplication 对对象的生命期象的生命期

Page 18: 5.3  Server对象

Application 对象常用的集合、方法和事件分别如表

集合 描述

Contents 包含所有通过脚本命令追加到应用程序中的项目。

StaticObjects 包含所有使用 HTML 的 <object> 标签追加到应用程序中的对象。

表 5-13 Application 对象的常用集合

Page 19: 5.3  Server对象

表 5-14 Application 对象的方法

方法 描述Contents.Remove 从 Contents 集合中删除一个项目。

Contents.RemoveAll() 从 Contents 集合中删除所有的项目

Lock 加锁,防止其余的用户修改

Application 对象中的变量。

Unlock 解锁,使其他的用户可以修改

Application 对象中的变量(在被Lock 方法锁定之后)。

Page 20: 5.3  Server对象

表 5-15 Application 对象的事件

事件 描述

Application_OnEnd 当所有用户的 session 都结束,并

且应用程序结束时,此事件发生。

Application_OnStart 在首个新的 session 被创建之前(

这时 Application 对象被首次引用),此事件会发生。

Page 21: 5.3  Server对象

5.4.1 用户间共享信息 Application 对象可以在同一虚拟目录及其子目录下所

有 .asp 文件构成的 ASP 应用程序间的所有用户之间共享信息,并在服务器运行期间持久的保存该共享数据。直到关闭WEB 服务器服务使得 Application 停止。

Application 的使用比较简单的,你可以把变量或字符串等信息很容易的保存在 Application 中,语法:Application(“Application 的变量名” )=变量或字符串信息

获取 Application 中的信息也很容易a=Application(“Application名字” )

【例 eg5_14.asp 】编写一段代码,要求在第一张网页中建立一个Application 对象并给其赋值,然后在第二张网页中显示该对象的值。

Eg5_14-1.asp

21

Page 22: 5.3  Server对象

5.4.2 Contents集合 Contents集合是由所有通过脚本命令添加到应用程序的项目

组成的集合。我们可以通过 Contents集合来获取给定的应用程序作用域的项目的列表或指定一个特殊项目为操作对象。Application.Contents 集合还支持 For...Each 和 For...Next 循环。其语法规则如下:

Application.Contents(Key) 其中,参数 Key 为指定要获取的项目的名称。

例如: application.Contents("strName")="卓云 " '保存applicatio信息

strName= applicatio.Contents("strName") '读取 applicatio信息

Contents 数据集合的属性和方法 : Count 属性 : 返回数据集合中的变量的数目 Remove 方法 : 删除数据集合中一个 Session 变量 RemoveAll 方法 : 删除数据集合中全部 Session 变量

22

Page 23: 5.3  Server对象

5.4.2 Contents集合<%

Application.LockApplication.Contents("strSchool")="北京大学 "Application.UnlockResponse.Write Application.Contents("strSchool") '输出 Application信息Response.Write Application.Contents.Count '输出 Application 变量数目

Application.LockApplication.Contents.Remove("strSchool") '删除指定名称的

Application 变量

Application.Contents.Remove(1) '删除指定索引的 Application 变量

Application.Contents.RemoveAll '删除所有 Application 变量

Application.UnLock

%>

【例 eg5_15/-1.asp 】编写一段代码,要求在第一张网页中建立四个Application 对象并给其赋值,然后在第二张网页中利用 For...Each 和 For...Next 循环显示该四个对象的值。

23

Page 24: 5.3  Server对象

<%application("bookname")="ASP 动态网页设计与实现 "

application("teachName")="张三 " application("studentName")="李四 " application("schoolName")=" 上海师范大学 " response.redirect("eg5_15-1.asp") %>

Eg5_15.asp

<HTML><HEAD><TITLE> 循环接收显示 Application 变量值 </TITLE></HEAD><BODY><% for each key in application.Contents response.write("<p>"&application.Contents(key)) next %></BODY></HTML>

Eg5_15-1.asp

Page 25: 5.3  Server对象

5.4.3 StaticObjects集合

StaticObjects 集合包含所有的在 Application 对象范围中使用 <OBJECT> 标记创立的对象。 Application. StaticObjects 集合还支持 For...Each 和 For...Next 循环。其语法规则如下: Application.StaticObjects(Key)

其中,参数 Key 为要检索的项目的值。 【例 eg5_16.asp 】使用 HTML 的 <object> 标签追加

application 对象,然后在网页中利用 For...Each 和 For...Next 循环显示该这些对象对象的值。

25注意:此例配套建立的新文件 global.asa必须存放在站点根文件夹中。

Page 26: 5.3  Server对象

Application 对象的主要方法、事件

由于 Application 对象多个用户共享的,所以必须要利用其 Lock 和 Unlock 方法以确保多个用户无法同时改变某一属性。 方法、事件

方法有两个:1. Lock 锁定2. Unlock 解除锁定

事件 Application_onStart—该 Application 对象开始前,便

调用该程序 Application _onEnd—该 Application 对象结束后,便

调用该程序

Page 27: 5.3  Server对象

5.4.4 Lock与 Unlock方法 Lock 方法功能是阻止其他客户修改存储在 Application

对象中的变量,以保证同一时刻只能一个用户才可以修改该变量。

Unlock 方法的功能则使其他用户修改使用 Lock 方法锁住的 Application 对象中的变量。如果用户没有明确调用 Unlock 方法,则服务器将在 .asp 文件结束或超时后即解除对 Application 对象的锁定。该两个方法的语法规则如下:

Application.Lock Application.Unlock

【例 eg5_17.asp 】编写一段代码,利用 Application 对象统计火车售票系统出售了重庆到北京的火车票的票数,且在页面上显示“现已售出北京-重庆的火车票数为: X 张”注意顾客购买车票可能不是在同一售票点购买的。

27

Page 28: 5.3  Server对象

Eg5_17.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%><html ><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><TITLE>Application.Lock和 Unlock 方法 </TITLE></HEAD><BODY><% application.Lock() if application("beijinChongQing")="" then Application("beijinChongQing")=0 else Application("beijinChongQing")= Application("beijinChongQing")+1

end if application.UnLock()

response.write("现已出售北京到重庆的火车票数为 : &nbsp;"& Application("beijinChongQing")&"&nbsp;&nbsp;张 ")

%></BODY></HTML>

Page 29: 5.3  Server对象

利用 Application 存储信息(在当前网页中显示留言)

<% Option Explicit %> ‘表示所用变量必须先定义 <html><head>

<title> Application 对象用法示例 </title></head><body>

<form action="" method="post" name="form1">请发言: <input type="text" name="pronunciation" size="30"><input type="submit" VALUE=" 确 定 "></form>

<% If trim(request("pronunciation"))<>"" Then ' 如果有发言内容,就加到Application 中

Application.Lock '先锁定Application("show")= request("pronunciation") & "<br>" &

Application("show")Application.Unlock '解除锁定

End ifResponse.Write Application("show") ' 显示聊天内容 %>

</body> </html>

Trim()去掉字符串前后空格

5_15.asp

Page 30: 5.3  Server对象

在另外页面中显示留言5_16.asp<html><head>

<title> Application 对象示例 </title></head> <body>

<form name="form1" method="post" action="">请发言: <input type="text" name="pronunciation"

size="30"><input type="submit" value=" 发送 "> </form>

<%If trim(request("pronunciation"))<>"" Then ' 如果有发言内容,就加到 Application 中

Application.Lock '先锁定Application("show")= Request("pronunciation") & "<br>" & Application("show")

Application.Unlock '解除锁定End if%><a href=5_16_1.asp> 查看留言 </a>

</body> </html> 备注

Page 31: 5.3  Server对象

带有发言人昵称的留言板。如 5_16kj.asp

5_16-2.asp

5_16-2-2.asp

Page 32: 5.3  Server对象

利用 Application制作简易的访问计数器(计算在线人数)

5_17.asp

<html><head><title>Application 对象计算在线人数 </title></head><body><b><font color="#0000FF"><% Application.lockApplication("online_su")=Application("online_su")+1

application.unlock %><center><h3>欢迎光临小站 <hr></h3>您是本站的第 :<%=Application("online_su")%> 位访客 !

</body></html>

说明:语句: Application(“online_su”)=Application(“online_su”)+1 的执行会分成三个步骤:( 1 )读取 Application(“online_su”) 变量的值( 2 )将读到的值加 1;( 3 )将加 1 之后的值写回 Application("online_su")使用这语句,每次有人浏览这网页,都会让 Application(“online_su”)加 1 ,可是若有多人同时浏览,计数就会发生问题。如:当两位联机者同时浏览该网页,并且同时执行以上的步骤( 1 ),则他们读取的值相同(设等于3 ),接着虽然也都执行了步骤( 2 )和( 3 ),把加 1 的值写回Application(“online_su”) 得到 4 的结果,但实际却少加了一次,为解决此问题,在累加语句上下分别加了锁定和解锁语句所以当某一程序执行了 Application.lock 方法,其它程序就暂不能使用该对象了,直到它被解锁,即调用了 Unlock 或结束执行为止。

Page 33: 5.3  Server对象

5.4.5利用 Application 存储数组信息

利用 Application 对象存储数组信息和Session 对象类似,也必须把数组当成一个整体存入和读取,只是存储时别忘了Lock和 Unlock 就行了。语法如下: Application(“Application 数组” )=数组变量

获取 Application信息的语法:a= Application(“Session 数组” )

Page 34: 5.3  Server对象

利用 Application 存储数组示例 存储示例:

<% Dim strNames(1) '声明一个长度为 2 的数组strNames(0)= "白芸 "strNames(1)= "海霞 "Application.Lock '锁定Application("strNames")= strNames '给 Application 变量赋值Application.Unlock ' 解除锁定

%> 下面是读取示例:

<%Dim strNames '声明一个普通变量strNames= Application("strNames") '读取 Application 变量Response.Write strNames(0) & "您好,欢迎您<br>"Response.Write strNames(1) & "您好,欢迎您<br>"

%>

5_18.asp

Page 35: 5.3  Server对象

5.5 Session 对象 为什么要用 Session 对象?

因为要用 Session 对象记载特定客户信息,我总不能用 querystring 一页一页传递吧?

已教方法: URL? Id=…&name=…; Request.querystring Cookies

Session 对象是什么? 可以用来记录不同客户端独立的数据变量 , 当上网者在应用程序的各个网页间跳转时 , 存储在session 对象中的变量将不会丢失。

访问同一网站,不同客户使用的是不同的session 对象记载。

Page 36: 5.3  Server对象

5.5 Session 对象

Session 对象的主要功能是提供某个用户在该Web 应用的所有页面间共享数据。同时,如果有另外一个用户也同时在访问该 Web 应用,则该用户也同时拥有自己的 Session 变量,但这两个用户之间却无法通过 Session 变量共享信息,如果该两个用户要想共享信息,则必须用上节的Application 对象才能实现。故外面可以这样理解: Session 对象是局部变量 Application 对象是全局变量。

36

Page 37: 5.3  Server对象

5.5 Session 对象 Session 的工作原理: 一个应用程序中,当客户端启动一个 Session 时, ASP 会自动产生一个长整数 SeesionID ,并把它送给客户端浏览器,浏览器会把它存放在 Cookies 内。 提示 :session 对象的使用必须配合浏览器的

Cookies 功能。因此在调试使用了 Session 对象的 ASP 程序时,请先检查浏览器的 Cookies 功能是否为打开。若用户使用的浏览器是 IE4.x(IE5.x是不允许上网者将 Cookies关闭的 ) ,请选择“工具”菜单下的“ Internet选项“,在出现的对话框中选择”高级“选项卡,选中”安全““ Cookies”“总是接受 Cookies”

Page 38: 5.3  Server对象

Session 对象的属性、方法和事件

集合 描述

Contents 包含所有通过脚本命令追加到 session 的条目。

StaticObjects 包含了所有使用 HTML 的 <object> 标 签追加到 session 的对象。

表 5-16 Session 对象的常用集合

Page 39: 5.3  Server对象

Session 对象的属性、方法和事件

集合 描述CodePage 规定显示动态内容时使用的字符集。LCID 设置或返回指定位置或者地区的一个整

数SessionID 为每个用户返回一个唯一的 ID 。此 ID

由服务器生成Timeout 设置或返回应用程序中 Session 对象的

超时时间。单位为分钟,默认为 20分钟

表 5-17 Session 对象的常用属性

Page 40: 5.3  Server对象

Session 对象的属性、方法和事件

集合 描述

Abandon 撤销一个 Session

Contents.Remove 从 Contents集合删除一个项目

Contents.RemoveAll() 从 Contents集合删除一个项目

表 5-18 Session 对象的常用方法

Page 41: 5.3  Server对象

Session 对象的属性、方法和事件

不过这两个事件只能用在 Global.asa 文件中

集合 描述

Session_Onstart 当开始一个会话时,一个 Session 对象开

始前,便调用该程序会触发该事件。Session_OnEnd 当结束一个会话时,会触发该事件

表 5-19 Session 对象的常用事件

Page 42: 5.3  Server对象

5.5.1页面间共享信息 Session 对象可以使用于用户在同一虚拟目录及其子目录下所有 .asp 文件构成的 ASP 应用程序间之间共享信息。可以把变量或字符串等信息很容易的保存在 Session 中

其语法规则如下: Session ("name")=value

其中, name 为变量名。OR Session(“Session名字” )= 变量或字符串信息

【例 eg5_18 】编写一段代码,要求在第一张网页中建立一个 Session 对象并给其赋值,然后在第二张网页中显示该对象的值。

从 Session 中调用该信息的语法:a=session(“Session名字” )

42

Page 43: 5.3  Server对象

利用 Session 存储信息存入 Session 信息 5_18session.asp

存读取 Session 信息 5_18session-1.asp

Page 44: 5.3  Server对象

5.5.2 Contents集合

Contents集合是由所有通过脚本命令添加到应用程序的项目组成的集合。我们可以通过 Contents集合来获取给定的应用程序作用域的项目的列表或指定一个特殊项目为操作对象。 Session.Contents 集合还支持 For...Each 和 For...Next 循环。其语法规则如下:

Session.Contents(Key) 其中,参数 Key 为指定要获取的项目的名称。

【例 eg5_19.asp 】编写一段代码,要求在第一张网页中建立四个Session 对象并给其赋值,然后在第二张网页中利用 For...Each 和 For...Next 循环显示该四个对象的值。

44

Page 45: 5.3  Server对象

5.5.3 StaticObjects集合

StaticObjects 集合包含所有的在 Session 对象范围中使用 <OBJECT> 标记创立的对象。 Session. StaticObjects 集合还支持 For...Each 和 For...Next 循环。其语法规则如下: Session.StaticObjects(Key)

其中,参数 Key 为要检索的项目的值。 【例 eg5_20 】使用 HTML 的 <object> 标签追加

Session 对象,然后在网页中利用 For...Each 和 For...Next 循环显示该这些对象对象的值。

45

Page 46: 5.3  Server对象

5.5.4 Session 对象的属性

1 . CodePage :整形可读写。定义用于在浏览器中显示页内容的代码页。代码页是字符集的数字值,不同的语言使用不同的代码页。例如简体中文的代码页为 936 。 <%

Response.Write(Session.CodePage)%>

Page 47: 5.3  Server对象

5.5.4 Session 对象的属性2 . SessionID:长整形只读。返回这个会话的会话标识符,创建会话时,为每个用户返回一个唯一的 SessionID 。 此 Sessionid 由服务器通过复杂运算产生的一组随机数值,与当前服务器内的其它会话 Sessionid 不会重复。

新会话开始时 , 服务器将产生的 SessionID 作为 Cookie 存储到用户的浏览器中作为会话标记 , 以后用户请求页面时 ,浏览器会发送 SessionID给服务器,用来识别会话。

若要输出当前会话的标识符,则实现的语句是: <%

Response.Write(Session. SessionID)%>

Page 48: 5.3  Server对象

5.5.4 Session 对象的属性3 、 Timeout:整形可读写。以分钟为单位定义

Session 会话过期的时间期限。若用户在该时间内,没有刷新或请求页面,则结束当前会话。 会话超时的时限可在 IIS 服务器中设置,其默认值为

20分钟。也可在页面中根据需要,利用该属性来设置。会话过期的时间设置太长,可能会导致打开的会话太多,从而增大服务器内存资源的开销,对于高访问率的站点,应设置较短的时间期限较好。

例如,若要设置会话超时的时间为 5 分钟,则设置语句为: <% Session.Timeout=5 %>

Page 49: 5.3  Server对象

5.5.4 Session 对象的属性

【例 eg5_21.asp】编写一段代码,要求网页中显示默认时间,然后再将超时时间设置为 30分钟,并将该超时时间显示出来。

49

Page 50: 5.3  Server对象

5.5.5 Abandon方法 Session 对象到期后会自动清除,但到期前可以用 Abandon 方

法强行清除。 Abandon 方法的功能是删除所有存储在 Session 对象中的对

象并释放这些对象的源。需要注意到的时,虽然我们有时并没有明确调用 Abandon 方法,但一旦会话超过了由 Timeout 设置的超时时间或者系统默认的超时时间,服务器将自动删除这些对象。但需要注意的时, Abandon 方法被调用后服务期是在当前页中所有脚本命令都处理完后才按序删除当前的 Session 对象,即在当前页中所有脚本命令都处理完后, Session 对象才会被真正删除 Abandon 方法的语法规则如下:

Session.Abandon 【例 eg5_22.asp 】编写一段代码,要求网页添加 4 个 Session 对象,然后显

示这些 Session 对象,在用 Abandon 方法删除这些对象,删除后在当前页再显示这些对象,然后离开当前页,在另一页中再显示这些 Session 对象。

50

Page 51: 5.3  Server对象
Page 52: 5.3  Server对象

5.5.6 Contents.Remove 与Contents.RemoveAll()方法

Contents.Remove 方法的功能是从 Contents 集合中删除一个项目。

Contents.Remove All () 方法的功能是从 Contents 集合删除所有的项目。它们的语法规则分别如下:

Session.Contents.Remove(name|index) Session.Contents.RemoveAll()

【例 eg5_23.asp 】编写一段代码,要求网页添加 4 个 Session 对象,然后显示这些 Session 对象,再用 Contents.Remove 方法删除 Session 对象中一个项目,删除后再显示这些对象,再用Contents.Removeall() 方法删除 Session 对象中所有项目,然后再显示这些 Session 对象。

52

Page 53: 5.3  Server对象

Eg5_23.asp

Page 54: 5.3  Server对象

5.5.7 Session 对象的事件

Session 对象有两个非常重要的事件,它们是 OnStart和 OnEnd ,其触发条件为:1 . Session_OnEnd :事件在会话结束时发生(会话被放弃或超时的时候 ) 。此事件过程放置在 Global.asa 文件中。

2 . Session_OnStart :事件在服务器创建新会话时发生。

此事件过程放置在 Global.asa 文件中。

Page 55: 5.3  Server对象

序号 操作方式 服务器端

会话对象浏览器端SessionID

1使用 Session.Abandon方法强制中断会话,并引发 Session_OnEnd事件。 消失 未消失

2用户在该 TimeOut设置的时间内,没有刷新或请求页面,则自动结束当前会话,并引发 Session_OnEnd事件。

消失 未消失

3

客户端关闭浏览器,会话的 SessionID自动消失,由于没有会话标识,会话实际上已经中断。但服务器中的该会话仍然存在,所以并不引发 Session_OnEnd事件,只有等到会话过期时服务器中的会话变量才消失。

未消失 消失

4 Web服务器重新启动,则释放其内存中的所有会话,用户消失状态消失,并不引发Session_OnEnd事件。

消失 未消失

Page 56: 5.3  Server对象

5.5.8 什么是 Global.asa 文件 Global.asa 文件是一个可选的文件,它可包含可被

ASP 应用程序中每个页面访问的对象、变量以及方法的声明。

所有合法的浏览器脚本都能在 Global.asa 中使用。 Global.asa文件用来存放 Session对象和Application对象事件的程序,当 Session或Application被第一次调用或结束时,就会运行Global.asa文件中对应的程序。

每一个应用程序可以有一个 Global.asa文件,它必须被放在应用程序的根目录中,且文件的名字必须叫做 Global.asa

Global.asa 文件中不能包含 Response.Write 语句。因为该文件只是被调用,根本不会显示在页面上,所以不能输出任何内容。

Page 57: 5.3  Server对象

5.5.8 什么是 Global.asa 文件 该文件的语法如下:<Script language="VBScript" runat="server">

Sub Application_OnStart '当应用程序启动后第一个用户访问时触发该事件,并执行其中的语句End SubSub Application_OnEnd

‘当应用程序关闭时触发该事件,并执行其中的语句End SubSub Session_OnStart

'当开始一个会话时(用户开始访问时)触发该事件,并执行其中的语句

End subSub Session_OnEnd

'当结束一个会话时(用户结束访问时)触发该事件,并执行其中的语句

End Sub

</Script>

Page 58: 5.3  Server对象

Global.asa 文件在制作网站计数器中的应用简单示例

显示网站在线人数和访问总人数<Script language="VBScript" runat="server">

Sub Application_OnStartApplication.LockApplication("intAll")=0 '给访问总人数赋初值Application("intOnline")=0 '给在线人数赋初值Application.Unlock

End SubSub Session_OnStart

Application.LockApplication("intAll")= Application("intAll")+1 '令访问总人数

加 1Application("intOnline")= Application("intOnline")+1 '令

在线人数加 1Application.Unlock

End SubSub Session_OnEnd

Application.LockApplication("intOnline")= Application("intOnline")-1 '令

在线人数减 1Application.Unlock

End Sub</Script>

Global.asa

Page 59: 5.3  Server对象

比较 Cookie、 Session、 Application 对象的有效期 Cookie和 Session 都是有有效期限制的,可以根据实际情况进行设定。而 Application 对象没有有效期的限制,从应用程序启动后第一个用户开始访问到所有用户都结束访问,它一直是有效的。

Session 对象和 Application 对象各自的作用和最主要的区别 Session 对象是记录单个用户的信息,而 Application是记载所有用户的共享信息; Session 的有效期默认为20分钟, Application 从服务启动到服务结束均有效。

Page 60: 5.3  Server对象

本节小结

Server 对象是非常重要的,因此要重点掌握它的属性和方法的使用。

特别注意 MapPath 方法中的相对路径和绝对路径 。

总结相近方法之间的异同点。 利用 Session和 Application 对象存储信息。 本章的难点和疑点是 Session 的工作原理、 Session 对象建立和清除的时间和 Global.asa文件的使用,尤其是 Global.asa 文件中事件的触发时间。

Page 61: 5.3  Server对象

课后练习

完成网上作业 5 实践项目 5-1