|
5.Server对象
Server对象是ASP中一个很重要的对象,许多高级功能都是靠它来完成的。它提供了对Active Server Pages和方法的使用,在这我主要介绍几个常用的方法。
MapPath方法
该方法返回指定文件的相对路径或物理路径。若Path以一个(/)或(\)开始,则MapPath方法返回路径时将Path视为完整的虚拟路径。若Path不是以斜杠开始,则MapPath方法返回同.asp文件中已有的路径相对的路径。
如:test.asp文件位于C:\inetpub\wwwroot\myhome下,C:\inetpub\wwwroot为服务器的宿主目录,而test.asp包含如下脚本:
<%Response.write Server.MapPath(Request.ServerVariables("PATH_INFO")%>
输出:C:\inetpub\wwwroot\myhome\test.asp
要得到这个结果还可以用如下方法:
<%Response.write Server.MapPath("myhome/test.asp")%>
CreateObject方法
这个方法是Server对象中最重要的方法,在后面可以看到,许多功能都不得不用到它。它用于创建已注册到服务器上的ActiveX组件。这是一个非常的特性,因为通过使用ActiveX组件能够使你扩展ActiveX的能力。
用于创建服务器端的方法如下:Server.CreateObject("ComponentName")
用来创建的组件可以是所有ActiveX能使用的内置组件,实际上是存在于服务器的所有ActiveX组件。
6.Application对象
Application对象是个应用程序级的对象,用来在所有用户间共享信息,并可以在Web应用程序运行期间持久地保持数据。
Application的属性:
Application对象没有内置的属性,但是我们可以自行创建其属性。
<% Application("属性名")=值 %>
其实大部分Application变量都 存放在Contents集合中,当你创建一个新的Application变量时,其实就是在Contents集合中添加了一项。下面两个脚本是等效的:
<%Application("greeting")="hello!"%>
或<% Application.contents("greeting")="hello!"
由于Application变量存在集合里,所以如果想要全部显示,其方法我们已经多次使用,例如For Each循环。
<% For Each item IN Application.Contents Response.write("<br>"&item&Application.Contents(item)) next %>
Application的方法:
Application的方法只有两个方法:一个是Lock,另一个是Unlock。其中Lock方法用于保证同一时刻只能一个用户对Application操作。Unlock则用于取消Lock方法的限制。如:
<% Application.Lock Application("visitor_num")=Application("visitor_num")+1 Application.Unlock %>
Application的事件:
- Application_OnStart(),当事件应用程序启动时触发。
- Application_OnEnd(),此事件应用程序结束时触发。
这两个事件过程都是必须定义在Global.asp文件中,一般把连接数据的函数定义在这两个事件,然后放在Global.asp中。例如:
Sub Application_OnStart Application("tt18_ConnectionString")="driver={SQLServer}; server=jeff;uid=sa;pwd=;database=test" End Sub
一个数组能够被定义成Application对象,不过这个数组只能作为一个对象保存,而不能用Application(0)取出其值。可以定义一个临时数组实现这种功能。如:
<% dim Array() Array=Application("array") for i = 0 to ubound(array) Response.write Array(i) next i %>
同样要修改这个Application对象也可以定义一个临时数组,把Application对象赋给数组,然后修改这个数组的元素,最后把数组赋回Application对象。如:
<% dim Array() Array=Application("array") Array(0)="jeff" Array(1)="zhu" . .
Application.lock Application("array")=Array Application.unlock %>
7.Session对象
Session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。每一访问者都会单独获得一个Session。在Web应用程序中,当一个用户访问该应用时,Session类型的变量可以供这个用户在该Web应用的所有页面中共享数据;如果另一个用户也同时访问该Web应用,他也拥有自己的Session变量,但两个用户之间无法通过Session变量共享信息,而Application类型的变更则可以实现站点多个用户之间在所有页面中共享信息。
a> SessionID属性
该属性返回当前会话的唯一标志,为每一个Session分配不同的编号。我曾在开发过程中就遇到对用户的控制问题。它要实现的功能就是,针对某个网站的一个模块,当一个会员登录后正在看此模块时,另一个人用同样的会员名登录,就不能浏览这个模块。也就是说一个会员名同时只能一个人浏览此模块。我通过用会员名(假设为UserID,唯一)和SessionID来实现了控制。当会员登录时,给这个会员一个Session记录登录状态如:Session("Status")="Logged",同时把这个会员的Session.SessionID写入数据库。当他要浏览此模块时,先判断其是否登录,若已经登录再判断它的SessionID是否与数据库记录的相同,如果不同则不能访问。这样,当另一个用户用相同的会员名登录时,那么数据库中记录的就是新的SessionID,前者访问此模块时就不能通过检查。这就实现了一个会员名同时只能一个人浏览某个模块。这个功能在一些收费网站有很有特别作用,它防止了一个会员名给多个人浏览的问题,为公司保障了利益。
b>.TimeOut属性
该属性用来定义用户Session对象的时限。如果用户在规定的时间内没有刷新网页,则Session对象就会终止。一般默认为20分钟。
c>.Abandon方法
该方法是Session对象的唯一方法,可以清除Session对象,用来消除用户的Session对象并释放其所占的资源。如: <% Session.Abandon %>
d>.Session_OnStart和Session_OnEnd事件
和Application一样,当对象的例程每一次启动时触发Session_OnStart事件,然后运行Session_Onstart事件的处理过程。也就是说,当服务器接收到应用程序中的URL的HTTP请求时,触发此事件,并建立一个Session对象。同理,这个事件也必须定在Global.asa文件中。
当调用Session.Abandon方法时或者在TimeOut的时间内没有刷新,这会触发Session_OnEnd事件,然后执行里面的脚本。Session变量与特定的用户相联系,针对某一个用户赋值的Session变量是和其他用户的Session变量完全独立的,不会存在相互影响。
Session应用一例:
与Application一样,一个被定义为Session类型的数组只能将整个数组作为一个对象,用户不能直接改变Session数组中某个元素的值。为了创建一个Session数组,需先定义一个普通的数组,并对它的每一个元素赋初值,最后把它定义为一个Session数组。如:
<% dim array() array=array("jeff","zhu","male") Session("info")=array Response.write Session("info")(0) &"-" Response.write Session("info")(1) &"-" Response.write Session("info")(2) &"<br>" %> <hr> <% array(0)="jun" array(1)="li" array(2)="female" Session("info")=array Response.write Session("info")(0) & "-" Response.write Session("info")(1) & "-" Response.write Session("info")(2) & "<br>" %> 以上这段程序输出结果是:
jeff-zhu-male _____________ jun-li-female
上一页 [1] [2] [3] |