设为首页
加入收藏
发送稿件
小愚学ASP之五

小愚学ASP 第五篇:ASP内建对象的使用方法(小小聊天室)

蚂蚁电商3.0  2003-11-8 16:37:43
www.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/



oooooooooo家园提示:人自为谱,家自为说,正误自辨,取舍自酌。引用注明作者和出处。 来源:罗氏家园
阅读:4713
日期:2004/5/23

查看评论 】 【 收藏 】 【 打印 】 【 关闭 】 【字体: 】 
上一篇:小愚学ASP之六
下一篇:小愚学ASP之四
  >> 相关文章
 
发表评论


        站长提示:这里不是互动留言处!
点  评: 字数0
用户名:  密码:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
家园地址:http://www.luos.org  粤ICP备13039246号-2
家园创建:罗良富   技术支持:AssumeYessure   法律顾问:罗劲松