友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

asp基础入门篇(DOC格式)-第7部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!

《 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
%》
第一次运行 chat。asp 程序,你首先将看到如下页面 :

选择你的 nick 进入聊天室后,将看到如下页面 :

输入你想要说的话,对话将出现在输入框的下方,如下图 :

下面我们来对这个聊天室程序进行逐步的分析。
首先,由于聊天室的所有客户都要能够共享信息,所以不可避免的要用到具有应用程序级变量的对象 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 文件根据不同情况给客户显示不同的界面。
好了,我已经将这个 ASP Chat 程序的核心部分告诉大家了,剩下的一些细节性问题请各位自己读程序吧,其实这个程序还存在很多不足之处,最大的毛病是我没有写自动刷新的功能,因此如果你在 Chat 中不说话,那也就看不到其他客户所说的话了。Chat 在 Internet 中的魅力大家是知道的,其实 ; 用 ASP 也完全能做到同 irc 类似的强大功能,当然这就需要写更多的代码,如果大家有兴趣请写信给我,我将在今后的文章中逐步提升这个 chat 程序的等级,让大家也过过〃Oper〃的隐。注:有了这个 chat 程序,你就可以用来在自己的 PWS 上建一个 chat 应用程序,只要将你的 IP 地址告诉朋友,如 http://202。96。210。33/asp/chat。asp,你们就可以通过你的电脑在网上聊天了,很爽的,不信你试试 !
ASP基础教程:ASP内建对象Server
通过前九篇的理论和实践,相信大家已经对 ASP 有了系统的了解,虽然至今为止,我们只学了 ASP 的 4 个内建对象,但已经完全能够写出一些实用的小程序了。今天,作者将继续给大家讲解最后一个 ASP 内建对象……Server。
在开始本次课程之前,我仍要在这里回答一些朋友们提出的比较普遍的问题。最近仍有不少朋友来信问我,如何构建服务器端的 Active Server Page 环境。我想可能是我在前几篇中没有讲清楚,因此,在本篇的开头有必要把这个问题详细阐述一遍。
ASP 的应用完全是基于 Microsoft Internet Infomation Server(简称 IIS)之上的,IIS 有分别用于 Windows NT Server 和 WorkStation 的两个版本中(当然 IIS4。0 也有 Windows98 版,这里暂且不提),其功能几乎完全相同,所不同的只是安装过程。一般来说,我们使用的都是基于 NT 服务器上的 IIS 版本。在 NT Server 的环境中,发布信息、管理站点的工作一般都是通过 IIS 来完成的。通常我们在 NT4。0 版本中运行的是 IIS2。0 版,但它不具有支持 ASP 的功能。ASP 必须在安装完 IIS 后单独安装,安装文件是一个微软发布的 ASP 安装包,大约有 9 兆多,应该可以在微软的网站上下载。当 IIS2。0 中增添了支持 ASP 的功能后,其也就自动升级为 3。0 版本。2。0 和 3。0 对于 WEB 服务器来说,并没有什么大的改动,只是单纯地增加了运行 ASP 的能力。当安装完成后,运行 Internet 服务管理器,你将看到如下画面:

可以到在 IIS3。0 中提供了三种服务:WWW、Gopher、FTP,WWW 服务为客户浏览器提交 WEB 页,并允许客户访问 。asp 文件。当然,你可以直接安装最新的 IIS4。0 版本,作者也建议各位安装此版本,因为它具有更强更高的 WEB 管理机能和安全性。在 IIS4。0 中 IIS 的管理界面发生了根本性的改变,熟悉的 Internet 服务管理器,被取而代之为 Microsoft 管理控制台,简称 MMC。其界面如下图:

那么如何安装 IIS4。0 呢?在 NT4。0 上安装 IIS4。0 时,你的系统中必须已经安装了 NT SP3,以及 Internet Explorer4。01,注意这里的 Internet Explorer 的版本必须是 4。01,版本号为 4。72。3110。8。这点很重要,否则你将不能安装 IIS4。0。作者为了安装该版本特意花费了一个晚上在微软的站点上升级 IE 版本。
IIS 支持虚拟目录,通过在〃服务器属性〃对话框中的〃目录〃标签可以管理虚拟目录。建立虚拟目录对于管理 WEB 站点具有非常重要的意义。首先,虚拟目录隐藏了有关站点目录结构的重要信息。因为在浏览器中,客户通过选择〃查看源代码〃,很容易就能获取页面的文件路径信息,如果在 WEB 页中使用物理路径,将暴露有关站点目录的重要信息,这容易导致系统受到攻击。其次,只要两台机器具有相同的虚拟目录,你就可以在不对页面代码做任何改动的情况下,将 WEB 页面从一台机器上移到另一台机器。还有就是,当你将 WEB 页面放置于虚拟目录下后,你可以对目录设置不同的属性,如:Read、Excute、Script。读访问表示将目录内容从 IIS 传递到浏览器。而执行访问则可以使在该目录内执行可执行的文件。当你需要使用 ASP 时,就必须将你存放 。asp 文件的目录设置为〃Excute(执行)〃。作者建议大家在设置 WEB 站点时,将 HTML 文件同 ASP 文件分开放置在不同的目录下,然后将 HTML 子目录设置为〃读〃,将 ASP 子目录设置为〃执行〃,这不仅方便了对 WEB 的管理,而且最重要的提高了 ASP 程序的安全性,防止了程序内容被客户所访问。因为在今年 7 月底的时候 IIS 被一些网络高手发现了一个可怕的 bug,那就是,当你在一个站点的 。asp 文件后加上 ::DATA 后,客户将能在浏览器中看到该 。asp 文件的所有源代码,这对于一个站点来说是非常可怕的。当然微软已经针对这个 bug,编写了补丁,但是为了彻底杜绝这种可能性的发生,作者还一建议大家不要将 。asp 所在的目录设置为可读。
我想,现在各位应该已经完全了解 ASP 的服务器端设置了,下面我们就进入正题 …学习 ASP 的最后一个内建对象 Server。
Server 对象提供对服务器上的方法和属性的访问 ; 其中大多数方法和属性是作为实用程序的功能服务的。有了 Server 对象,你就可以在服务器上启动 ActiveX 对象例程,并使用 Active Server 服务提供象 HTML 和 URL 编码这样的函数。
一、语法
Server。property|method
二、属性
ScriptTimeout 超时值,在脚本运行超过这一时间之后即作超时处理。如下代码指定服务器处理脚本在 100 秒后超时。
《 % Server。ScriptTimeout=100 %》
这里需要注意的是,通过使用元数据库中的 AspScriptTimeout 属性可以为 Web 服务或 Web 服务器设置缺省的 ScriptTimeout 值。ScriptTimeout 属性不能设置为小于在元数据库中指定的值。例如,如果 NumSeconds 设置为 60,而元数据库设置包含了默认值 90 秒,则脚本在 90 秒后超时。
三、方法
1、HTMLEncode 方法
HTMLEncode 方法允许你对特定的字符串进行 HTML 编码,虽然 HTML 可以显示大部分你写入 ASP 文件中的文本,但是当你需要实际包含 HTML 标记中所使用的字符,就会遇到问题。这是因为,当浏览器读到这样的字符串时,会试图进行解释。例如下面的这段文本 :
这是对 HTMLEncode 方法的测试。《 br》这里应该不会另起一行。
会被浏览器显示为 :
这是对 HTMLEncode 方法的测试。
这里应该不会另起一行。
为了避免此类问题,我们就需要使用 Server 对象的 HTMLEncode 方法,采用对应的不由浏览器解释的 HTML Character Code 替代 HTML 标记字符。所以,用下面的代码才能显示正确的 HTMLEncode 字符串,从而在浏览器中按你的需要输出文本。
《 %
Response。write Server。HTMLEncode(〃 这是对 HTMLEncode 方法的测试。《 br》这里应该不会另起一行。〃)
%》
2、URLEncode 方法
就象 HTMLEncode 方法使客户可以将字符串翻译成可接受的 HTML 格式一样,Server 对象的 URLEncode 方法可以根据 URL 规则对字符串进行正确编码,当字符串数据以 URL 的形式传递到服务器时,在字符串中不允许出现空格,也不允许出现特殊字符。为此,如果你希望在发送字符串之前进行 URL 编码,可以使用 Server。URLEncode 方法。
3、MapPath 方法
MapPath 方法将指定的相对或虚拟路径映射到服务器上相应的物理目录上。
语法如下 :Server。MapPath(Path)
Path 指定要映射物理目录的相对或虚拟路径。若 Path 以一个正斜杠 (/) 或反斜杠 () 开始,则 MapPath 方法返回路径时将 Path 视为完整的虚拟路径。若 Path 不是以斜杠开始,则 MapPath 方法返回同 。asp 文件中已有的路径相对的路径。这里需要注意的是 MapPath 方法不检查返回的路径是否正确或在服务器上是否存在。
对于下列示例,文件 data。txt 和包含下列脚本的 test。asp 文件都位于目录 C:InetpubWwwrootasp 下。C:InetpubWwwroot 目录被设置为服务器的宿主目录。下列示例使用服务器变量 PATH_INFO 映射当前文件的物理路径。以下脚本
《 %= server。mappath(Request。ServerVariables(〃PATH_INFO〃))
%》
输出
c:inetpubwwwrootasptest。asp
由于下列示例中的路径参数不是以斜杠字符开始的,所以它们被相对映射到当前目录,此处是目录 C:InetpubWwwrootasp。以下脚本
《 %= server。mappath(〃data。txt〃)%》
《 %= server。mappath(〃asp/data。txt〃)%》
输出
c:inetpubwwwrootaspdata。txt
c:inetpubwwwrootaspaspdata。txt
4、CreateObject 方法
Server。CreateObject 恐怕是 ASP 中最为实用,也是最强劲的功能了。它用于创建已经注册到服务器上的 ActiveX 组件实例。这是一个非常重要的特性,因为通过使用 ActiveX 组件能够使你轻松地扩展 ActiveX 的能力,正是使用了 ActiveX 组件,你可以实现至关重要的功能,譬如数据库连接、文件访问、广告显示和其他 VBScript 不能提供或不能简单地依靠单独使用 ActiveX 所能完成的功能。正是因为这些组件才使得 ASP 具有了强大的生命力。
其语法如下:
Server。CreateObject(〃ponent Name〃)
默认情况下,由 Server。CreateObject 方法创建的对象具有页作用域。这就是说,再当前 ASP 页处理完成之后,服务器将自动破坏这些对象。如果要创建有会话或应用程序作用域的对象,可
返回目录 上一页 下一页 回到顶部 0 0
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!