小愚学ASP 第五篇:ASP内建对象的使用方法(小小聊天室)
蚂蚁电商3.0 2003-11-8 16:37:43www.BHAsp.com
[ 关键字 ] 电脑报,小愚,聊天室
第五篇:ASP内建对象的使用方法(小小聊天室)
----讲课:关大哥 听课:小愚
一听说今天要讲聊天室的制作,小愚早早就赶来了……
关大哥:今天要讲的是ASP的内建对象,ASP一共有五个内建对象,其中有三个在上几节课中已经出现过……
一、Request对象 '用于获取客户浏览器的信息
二、Response对象 '用于向客户端提供信息
三、Server对象 '用于访问服务器的对象,特别是在使用ActiveX控件时非常有用
四、Application对象 '用于多个用户共享信息,在发布公共信息特别有用
五、Session对象 '用于存储特定用户的信息
Request对象在第二篇已经详细讲过了,这里就不再重复,下面先来看看Response对象最常用的三种方法:
1.Write方法。用于向浏览器输出指定内容。
语法:Response.Write 变量名或者字符串
这里要注意的是,字符必须包括在双引号("")内。我们也可以在一条Response.Write语句中输出多个参数,方法是使用连接符“&”。
例如:Response.Write "大家好,现在时间是:"& now() & "欢迎来访《电脑报》!"
2.Redirect方法。用于重定向URL,当然可以是绝对的或者是相对的网址。
语法:Response.Redirect "网址"
注意网址在ASP中是以字符串形式传递的,所以以要包含在双引号("")中。
例如:Response.Redirect "http://bha.6to23.com/" '这是绝对链接
Response.Redirect "/new/index.asp" '这是相对链接
3.End方法。用于管理ASP的输出,服务器解释到该行马上停止对ASP代码的处理。
语法:Response.End
其它的几个对象我们还是在实战中一步步熟悉吧,(小愚:还是这句话中听,聊天室!聊天室!!)我们今天就以一个小型聊天室的制作为例。
首先,作为一个完整的ASP应用程序,必须有一个管理文件:Global.asa,该文件在管理ASP应用程序中起着核心作用。而且Global.asa文件不能改名,名字改动后将失去意义。“asa”就是“Active Server Applications”。
例程 Global.asa
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart '有用户访问时触发Application_OnStart事件
for n = 1 to 10 '事件内容
Application("chat"&n)="" '这里用Application对象来创建变量
next
End Sub 'Application_OnStart事件结束
</SCRIPT>
这里要注意几点:1.Global.asa文件不能改用其它名字;2.文件里面不能出现HTML标记和ASP语言的“<%、%>”标记;3.文件里面的脚本必须写在<SCRIPT>和</SCRIPT>中。
Global.asa文件可以处理两种事件,当有用户访问ASP程序时,Global.asa被激活,触发Application_OnStart和Session_OnStart事件,当用户结束对ASP程序的访问时,触发Application_OnEnd和Session_OnEnd事件。
上面的例子就指定了当有用户访问ASP程序时,触发Application_OnStart事件,而Application_OnStart事件的具体内容是由我们指定的,这里用到了VBScript的定次循环函数:For...Next函数。语法如下:
For 变量名 = 起启值 to 终止值 [Step 步长]
执行代码段
Next
这里用“[]”表示可选内容,步长省缺值是1,也就是说,每循环一次变量的值加1,直到变量的值等于终止值。当然我们可以自由设定步长的值,在下面,我们将遇到步长为-1的情况。
那么上面的例子用Application对象创建了多少个变量呢?聪明的朋友应该猜到了:十个。(小愚:我也猜到了!嘿嘿)也就是说,当有用户访问ASP程序时,程序先执行Global.asa文件,结果是创建了十个Application变量,从chat1到chat10,并设定这十个变量的初始值都是空。
例程 index.asp(处理登录事件)
<%IF len(Request.Cookies("Name")) = 0 AND len(Request.Form("Name")) = 0 THEN%>
<HTML><HEAD><TITLE>聊天室登录</TITLE></HEAD><BODY>
请输入你想用的名字:
<form method="post" action="index.asp">
<input type="text" name="Name" size="30"><input type="submit" name="submit" value="登录">
</form></BODY></HTML>
<%ELSE
Response.Cookies("Name")=Request.Form("Name")%>
<HTML>
<HEAD><TITLE>小小聊天室</TITLE></HEAD>
<FRAMESET ROWS="180,70" FRAMEBORDER="0" BORDER="false">
<FRAME SRC="display.asp" SCROLLING="auto">
<FRAME SRC="say.asp" SCROLLING="no">
</FRAMESET>
</HTML>
<%END IF%>
小愚:哇,整个文件都包含在IF函数里面!我来瞧瞧……Len是什么意思啊?
关大哥:这里一个VBScript函数,用来返回它指定的变量的长度。也就是说,如果发现Cookies里面Name的长度如果是0,并且同时表单里Name的长度也是0,就显示登录页面;如果不是,就执行Else后面的聊天室页面。
程序的流程应该是这样的:用户执行index.asp文件,首先进入登录页面,用户在文本框里输入用户名,程序则在Cookies中建立一个变量Name:
Response.Cookies("Name")=Request.Form("Name")
然后进入聊天室框架页面,上框是display.asp,用来显示用户说的话;下框是say.asp,用户在此输入想说的话。
例程 display.asp
<html><head><meta http-equiv="Refresh" Content="3;display.asp"></head>
<body>
<%
for n = 1 to 10
Response.Write "<font size=2>"&Application("chat"&n)&"</font><br>"
next
%>
</body></html>
注意这里显示用户说话是采用自动刷新页面:<meta http-equiv="Refresh" Content="3;display.asp">
显示说话内容也是用For...Next函数,用于显示十句话。
小愚:为什么只能显示十句话?
关大哥:因为我们在Global.asa文件里只设定了十个Application变量,所以只能显示十句话,如果你想显示多一些,只需要改动For...Next的终止值就可以了。
例程 say.asp
<%If not Request.Form("say")="" THEN
APPLICATION.LOCK
for n=10 to 2 step -1
Application("chat"&n) = Application("chat"&n-1)
next
Application("chat1") = "<font color=red><b>" & Request.Cookies("Name") & ":</b></font> " &Request.Form("say")
APPLICATION.UNLOCK
END IF%>
<HTML>
<HEAD><TITLE>小小聊天室</TITLE></HEAD>
<BODY BGCOLOR="#C0C0C0">
<FORM METHOD="POST" ACTION="say.asp">
<%=Request.Cookies("Name")%>: <INPUT NAME="say" TYPE="TEXT" SIZE=30>
<input type="submit" value="发言" name="B2">
<A HREF="exit.asp" TARGET="_top">退出</A>
</FORM>
</BODY>
</HTML>
呵呵,这个复杂了一点,我们一句句来看。
首先是一个IF函数,如果表单里say变量的值非空(not表示逻辑反),就执行下面的刷新对话代码。刷新代码主要是由For...Next函数构成的,注意这里的步长是-1,也就是说,每循环一次初始值加-1,直到等于终止值2才跳出循环。
Application("chat"&n) = Application("chat"&n-1)
第一次循环时,把chat9的值赋给chat10,第二次把chat8的值赋给chat9,第三次……最后把chat1的值赋给chat2并且跳出循环,然后把用户输入的内容赋给chat1,从而实现对话区的刷新。这里要注意由于Application变量是公共变量,所以在更改Application变量时要先锁定Application(防止多人同时更改一个变量):
APPLICATION.LOCK
更改完毕后要解锁Application:
APPLICATION.UNLOCK
最后提供一个退出聊天室的文件,主要用于将.Cookies中的Name变量清空。
例程 exit.asp
<%
Response.Cookies("Name")=""
Response.Redirect "index.asp"
%>
到这里程序就相当完整了,执行一下看看吧。
本文包含相关图片如下
================================
为方便读者学习ASP程序,我同样提供源程序包,需要的朋友请到大头蚂蚁工作室下载:Http://bha.6to23.com/