| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 252 人关注过本帖
标题:简单的CHAT程序 !!ASP新手!
只看楼主 加入收藏
heixiaoke
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-1-31
收藏
 问题点数:0 回复次数:0 
简单的CHAT程序 !!ASP新手!

这是在教材上看到的一个满好的ASP例子,感觉看了启发满大的,希望给一样学习ASP的朋友看下 满简单的 就一个asp网页

但是却能实现CHAT的程序 很好玩



< %@ Language=VBscript %>
< %
Response.Buffer=true \' 设置输出缓存,用于显示不同页面。
On error resume next \' 忽略程序出错部分
If Request.ServerVariables("Request_Method")="GET" then
\' 判断客户是以什么方式请求 WEB 页面
\'------------------------
\' 客户登陆界面
\'------------------------
%>

< form method="POST" action="chat.asp">< p>
< input type="text" name="nick" size="20" value="nick" style="background-color: rgb(192,192,192)">< br>
< input type="submit" value=" 进入聊天室 " name="B1" style="color: rgb(255,255,0); font-size: 9pt; background-color: rgb(0,128,128)">
< p>< input type="hidden" name="log" size="20" value="1">< br>< /p>
< /form>


< %
Response.End \' 结束程序的处理
Else
Response.clear \' 清空缓存中的内容
dim talk
If Request.Form("nick")<>"" then
\' 判断客户是是否在聊天界面中
Session("nick")=Request.Form("nick")
End If
\'------------------------\'
客户聊天界面
\'------------------------
%>


< form method="POST" action="chat.asp" name=form1>< p>< %=Session("nick")%>说话:< input type="text" name="talk" size="50">< br>
< input type="submit" value=" 提交 " name="B1">
< input type="reset" value=" 取消 " name="B2">< /p>
< /form>
< A HREF="/asptest/shusheng/chat.asp">离开 < /a>< br>< br>


< %
If Request.Form("log")<>1 then
If trim(Request.Form("talk"))="" then
\' 判断用户是否没有输入任何内容
talk=Session("nick")&" 沉默是金。"
Else
talk=trim(Request.Form("talk"))
\' 去掉字符后的空格
End If

Application.lock

Application("show")="< table border=\'0\' cellpadding=\'0\' cellspacing=\'0\' width=\'85%\' >< tr>< td width=\'100%\' bgcolor=\'#C0C0C0\'>< /td>< /tr>< tr>< td width=\'100%\'>< font color=\'#0000FF\'>来自 "&Request.ServerVariables("remote_addr")&" 的 "&Session("nick")&time&" 说:< /font>"&talk&"< /td>< /tr>< tr>< td width=\'100%\' bgcolor=\'#C0C0C0\'>< /td>< /tr>< /table>< br>"&Application("show")

Application.UnLock

Response.Write Application("show")
End If
End If
%>


下面我们来对这个聊天室程序进行逐步的分析。

首先,由于聊天室的所有客户都要能够共享信息,所以不可避免的要用到具有应用程序级变量的对象 Application,这是建立 Chat 程序的关键所在,所有的谈话数据都存放在一个应用程序级变量中,以便让所有的客户读取。我们可以用所学过的 request 对象获取客户所输入的谈话,并保存在变量 talk 中 , 然后将 talk 的值存入应用程序级变量 show 中,如下 :

< % Application("show")=talk&Application("show") %>

接下来要考虑的是当不同的客户同时向 Chat 应用程序进行操作的时候如何处理。这个问题其实与在数据库中的两个用户同时写入同一个记录一样,如果两个用户同时对同一个应用程序级变量进行写操作,则一个用户所作的修改会被另一个用户的操作所覆盖,所以,如果对 Application 对象数据的并发访问不采取一定措施,则会导致当两个用户试图同时对 Asp 聊天室应用程序提交时,一个用户的提交内容会被另一个用户的提交内容所覆盖,在被参加到会话中的任何人看到之前就消失了。为了避免这类问题的出现,我们需要使用 Application 对象的 Lock 属性来约束只允许当前的用户编辑或增加 Application 对象的属性,这样当用户开始修改应用程序级变量开始,到 Application 对象被显式地 Unlocked 为止,Application 对象的属性只能被该用户编辑,如果此时有其他用户请求编辑 Application 对象,则这些用户要排队等待,知道应用程序被 Unlock 为止。如下所示 :

Application.lock
Application("show")=talk&Application("show")
Application.UnLock
现在整个程序的核心部分你已经了解了,下面考虑如何保存客户信息,这里我们要用到一个会话级变量,即将客户的 nick 保存在 Session 中。如:

Session("nick")=Request.Form("nick")

最后,我们要考虑的是如何仅在一个 .asp 文件中处理各种事件 , 如 : 客户登陆界面、客户聊天界面。由于客户第一次请求 .asp 文件时,采用的是简单的 HTTP GET 方式,但是当客户向页面上的表单字段中增加的数据并向自身提交表单后,.asp 文件会再次被请求,不过这次数据是经过 HTTP POST 方式进行传递的。文件被请求的方式可以用两种方法来确定。一是测试 Request.Form 集合是否包含成员,若没有,则表明没有发送给表单处理的数据。二是使用 Request.ServerVariables("Request_Method") 变量。如果表单是通过 HTTP GET 方式被请求的,则这个变量会返回“GET”,如果表单被提交处理则返回“POST”。由于后一种方法对于确定文件的请求方式更直接,所以我们使用如下代码进行判断 :

if Request.ServerVariables("Request_Method")="GET" then

由于我们设置了 ASP 缓存,所以当程序判断页面请求方式为 GET 时,程序运行 Response.End,来结束后面的所有操作,否则则运行 Response.clear, 清空缓存中已有的内容,并继续程序的运行。这样我们就得以用同一个 .asp 文件根据不同情况给客户显示不同的界面。

有兴趣看完的朋友很发现,这个程序有个很大的不足,就是必须发言才能看到别人的发言,不能自动刷新,有高手能够将这个程序改一下 或者大家来讨论下啊

[此贴子已经被作者于2007-10-25 11:27:09编辑过]

搜索更多相关主题的帖子: ASP CHAT 
2007-10-25 11:26
快速回复:简单的CHAT程序 !!ASP新手!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033773 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved