,ASP程序设计,1
第 5章 Session,Application和
Server对象
5.1 Session对象
5.2 Application对象
5.3 Server对象
5.4 网上聊天室
,ASP程序设计,2
5.1 Session对象
5.1.1 Session对象的集合
5.1.2 Session对象的属性
5.1.3 Session对象的方法
5.1.4 Session对象的事件
,ASP程序设计,3
5.1 Session对象
Session对象的引入是为了 弥补 HTTP协议的不足,HTTP协议是一种 无状态 的协议。
Session中文是,会话,的意思,在 ASP中代表了 服务器 与 客户端 之间的“会话”。
Session的 作用时间 从用户到达某个特定的 Web
页 开始,到该用户 离开 Web站点,或在程序中利用代码 终止 某个 Session结束。
,ASP程序设计,4
5.1 Session对象系统为 每个 访问者都设立一个 独立 的 Session
对象,用以存储 Session变量,并且各个访问者的 Session对象 互不干扰 。
Session与 Cookie是紧密相关的。 Session的使用要求用户浏览器 必须支持 Cookie,如果浏览器 不支持 使用 Cookie,或者设置为 禁用
Cookie,那么将 不能使用 Session。
,ASP程序设计,5
5.1.1 Session对象的集合
1,Contents数据集合在 ASP程序中使用 Session对象定义的所有变量的集合,Contents集合中的 Session不使
<OBJECT>标记定义 。
Session.Contents(Key)
Key指明了 Session变量名称,由于 Contents
集合是 Session默认的集合,也可使用
Session(Key)
,ASP程序设计,6
5.1.1 Session对象的集合
Session对象中可以存储 简单数据类型 的变量,也可以存储 普通的对象
<%
Set rs=
Server.CreateObject("ADODB.RecordSet")
Set Session("obj1")=rs
%>
,ASP程序设计,7
5.1.1 Session对象的集合
Session对象也可以存放 数组
<%
dim str(3)
str(0)="一般查询 "
str(1)="高级查询 "
str(2)="系统维护 "
Session("msg")=str
str1=Session("msg")
str1(0)="普通查询 "
Session("msg")=str1
%>
,ASP程序设计,8
5.1.1 Session对象的集合
2,StaticObjects集合包含所有在 Global.asa文件中使用 <OBJECT>标记创建的 Session级的对象和变量 。
<OBJECT>标记是一个 HTML标记
< OBJECT RUNAT=Server SCOPE=Scope ID=
Identifier{PROGID="progID"|CLASSID="ClassI
D"}> </OBJECT>
SCOPE说明该对象的使用范围
ID指定创建对象实例时的名字
ProgID是与类标识相关的标识
ClassID用于指定 COM类对象的惟一标识。
,ASP程序设计,9
5.1.1 Session对象的集合利用 Session对象的 StaticObjects集合可以访问使用 <OBJECT>标记创建的所有对象
Session.StaticObjects( Key )
Key指定对象变量的名称
,ASP程序设计,10
5.1.2 Session对象的属性
1,TimeOut属性指定 Session的 超时 时间
Session.Timeout [ = nMinutes]
2,SessionID属性用户的会话 标识
Session.SessionID
,ASP程序设计,11
5.1.3 Session对象的方法只提供了 Abandon方法,该方法将 删除 所有存储在 Session对象中的对象和变量并 释放它们所占有的资源。
Session.Abandon
,ASP程序设计,12
5.1.4 Session对象的事件
Session_OnEnd和 Session_OnStart,这两个事件的代码必须 放在 global.asa文件中:
< SCRIPT LANGUAGE = ScriptLanguage
RUNAT = Server>
Sub Session_OnStart
'事件的处理程序代码
End Sub
Sub Session_OnEnd
'事件的处理程序代码
End Sub
</SCRIPT>
,ASP程序设计,13
5.1.4 Session对象的事件
1,Session_OnStart事件在服务器 创建 一个新的会话时发生,并且在执行请求的页面 之前 执行该事件脚本。
<SCRIPT LANGUAGE = "VBScript" RUNAT =
Server>
Sub Session_OnStart
Response.Redirect "/login.asp"
End Sub
</SCRIPT>
,ASP程序设计,14
5.1.4 Session对象的事件
2,Session_OnEnd事件对应 Session对象的结束事件,当 超过
Session对象的 TimeOut属性指定的时间没有请求或者程序中 使用 了 Abandon方法,该事件所对应的代码被激活。
,ASP程序设计,15
5.2 Application对象
Application对象是一个 Web应用程序级 的对象 。
Application包含的数据可以被应用程序的 所有用户 使用,并且可以在网站运行期间 持久保存 。
Application对象和 Session对象的区别:
1,应用范围不同
2,存活时间不同
,ASP程序设计,16
5.2 Application对象
collection,method分别表示 Application
对象的集合和方法,两选一 。
Application.collection|method
,ASP程序设计,17
5.2 Application对象
5.2.1 Application对象的集合
5.2.2 Application对象的方法
5.2.3 Application对象的事件
5.2.4 Global.asa 文件
,ASP程序设计,18
5.2.1 Application对象的集合
1,Contents数据集合允许 Web应用程序访问所有不使用 <OBJECT>标记创建 Application变量和对象 。
Application.Contents(Key)
Key 指明了 Application 变 量 的 名 称,由于
Contents集合是 Application默认的集合,也可以使用
Application (Key)
,ASP程序设计,19
5.2.1 Application对象的集合
2,StaticObjects数据集合取得以 <OBJECT>标记所建立的 Application对象
Application.StaticObjects( Key )
Key指定对象变量的名称
,ASP程序设计,20
5.2.2 Application对象的方法
Lock方法用于 锁定 Application对象
Unlock方法用于 解除 用户对 Application
对象的锁定
Application.Lock
Application.UnLock
,ASP程序设计,21
5.2.3 Application对象的事件
OnStart事件对应于 Application对象的 开始 事件
OnEnd事件对应 Application对象的 结束事件
Application_OnStart 事件在 第一个用户 的
Session_OnStart 事件 之前 发生,而
Application_OnEnd事件则在 Session_OnEnd事件 之后 发生 。
,ASP程序设计,22
5.2.4 Global.asa文件
Global.asa是一个可选文件,该文件的名称必须是
Global.asa且必须存放在应用程序的 根目录 中。每个应用程序 只能有一个 Global.asa文件。 Global.asa文件在以下三种情况下被 调用,
Application_OnStart或 Application_OnEnd事件被触发时;
Session_OnStart或 Session_OnEnd事件被触发时;
引用一个在 Global.asa文件中使用 <Object>标记定义的对象时。
,ASP程序设计,23
5.2.4 Global.asa文件
<OBJECT RUNAT=Server SCOPE=Scope ID=Identifier
{PROGID="progID"|CLASSID="ClassID"}>
</OBJECT>
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
…'事件的处理代码
End Sub
Sub Session_OnStart
…'事件的处理代码
End Sub
Sub Session_OnEnd
…'事件的处理代码
End Sub
Sub Application_OnEnd
…'事件的处理代码
End Sub
</SCRIPT>
,ASP程序设计,24
5.3 Server对象
Server对象提供了对服务器上的方法和属性的访问,其中大多数方法和属性是为应用程序提供服务的 。
Server.property|method
property和 method分别表示 Server对象的属性和方法,两选一
,ASP程序设计,25
5.3 Server对象
5.3.1 Server对象的属性
5.3.2 Server对象方法
,ASP程序设计,26
5.3.1 Server对象的属性只有 ScriptTimeout一个属性,用于设置
ASP脚本所允许的最长执行时间 。
Server.ScriptTimeout = NumSeconds
设置时间的语句必须出现在 ASP脚本之前,
否则不起任何作用
,ASP程序设计,27
5.3.2 Server对象的方法
1,CreateObject方法用于创建一个已经在服务器上 注册 的服务器组件( ActiveX) 的 实例
Server.CreateObject( progID )
progID指定了组件的标识
,ASP程序设计,28
5.3.2 Server对象的方法
String指定要编码的字符串
2,HTMLEncode方法对指定的字符串应用 HTML编码
Server.HTMLEncode( string )
,ASP程序设计,29
5.3.2 Server对象的方法
3,MapPath方法将指定的 相对路径 或 虚拟路径 转换为服务器上相应的 物理路径
Server.MapPath( Path )
Path用于指定相对路径或虚拟路径
,ASP程序设计,30
5.3.2 Server对象的方法
4,URLEncode方法将指定的字符串进行 URL编码
Server.URLEncode( string ) 语法格式
String指定要编码的字符串
,ASP程序设计,31
5.4 网上聊天室
5.4.1 Global.asa文件
5.4.2 用户登陆
5.4.3 聊天室主页
5.4.4 改进的聊天室
,ASP程序设计,32
5.4 网上聊天室网上聊天室时 asp内置对象 综合 运用的典型实例。
其中,用户的聊天内容可以存储到
Application对象中;确定聊天用户需要使用
Session对象;客户端与服务器端的信息交互需要用到 Response和 Request对象。
,ASP程序设计,33
5.4 网上聊天室网上聊天室实现流程用户登陆进入主界面退出聊天室输入聊天内容显示聊天内容显示在线用户
,ASP程序设计,34
5.4.1 Global.asa文件
<SCRIPT LANGUAGE="VBScript"
RUNAT="Server">
Sub Application_OnStart
Dim temptalk(5)
Application("talk")=temptalk
End Sub
</SCRIPT>
,ASP程序设计,35
5.4.2 用户登录
1,login.asp
,ASP程序设计,36
5.4.2 用户登录
2,check.asp
在 check.asp文件中对用户进入聊天室的条件做了必要的检查,
是否为空
是否重名
聊天室是否满员
,ASP程序设计,37
5.4.3 聊天室主页
main.asp
main.asp文件采用了框架用于显示聊天内容、显示在线聊天用户和输入聊天内容。
,ASP程序设计,38
5.4.3 聊天室主页
1,输入聊天内容 (talking.asp)
If request("content")<>"" then
name=Session("curruser")
temptalk=Application("talk")
Str=“(”&time&“)”&name&,说,,&_
Server.HtmlEncode(Request.Form("content"))
,ASP程序设计,39
5.4.3 聊天室主页
2,显示聊天内容定时刷新:
<META http-equiv="refresh" content="5;
url=talk.asp">
指定系统每隔 5秒钟将 talk.asp页面刷新一次
,ASP程序设计,40
5.4.3 聊天室主页
3,显示在线用户
users=split(application("people"),",")
For i=0 To ubound(users)
Response.write "<FONT color=green>"&"-
"&users(i)&"-"&"</FONT><BR>"
Next
,ASP程序设计,41
5.4.3 聊天室主页
4,退出聊天室
If name<>"" then
Application.unlock
Application("people")=Replace(Application("
people"),name&",","")
temptalk=Application("talk")
For i=5 to 1 step -1
temptalk(i)=temptalk(i-1)
转下页
,ASP程序设计,42
5.4.3 聊天室主页
Next
temptalk(0)="(" & time & ")" & name & "
说:我走了 ! "
Application("talk")=temptalk
Application.unlock
Session.abandon
,ASP程序设计,43
5.4.4 改进的聊天室
1,每个文件的页首实现对用户名的判断,
防止用户没有登陆而直接使用
If Session("curruser")="" then
Response.Redirect "login.asp"
End If
,ASP程序设计,44
5.4.4 改进的聊天室
2,使用 INCLUDE包含其他文件服务器端的命令,用于在 ASP文件中将其他文件的内容包含进来。
使用虚拟目录
<!--#include virtual ="adovbs.inc" -->
使用物理路径
<!--#include file = "adovbs.inc" -->