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

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

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


认超时值。过长的会话超时值将导致打开的会话过多而耗尽您的服务器的内存资源。对于一个特定的会话,如果您想设置一个小于默认超时值的超时值,可以设置 Session 对象的 Timeout 属性。例如,下面这段脚本将超时值设置为 5 分钟。
《 % Session。Timeout = 5 %》
当然你也可以设置一个大于默认设置的超时值,Session。Timeout 属性决定超时值。你还可以通过 Session 对象的 Abandon 方法显式结束一个会话。例如,在表格中提供一个〃退出〃按钮,将按钮的 ACTION 参数设置为包含下列命令的 。asp 文件的 URL。
《 % Session。Abandon %》
今天,我们学习了两个在 WEB 页面特别是基于 WEB 的 BBS 或 Chat 上经常使用 ASP 内建对象,由于这两个对象在实际运用中很实用,因此在下一篇中作者将运用至此我们所学过的 4 个 ASP 内建对象,给大家演示一个完整的 ASP 应用程序,相信通过这个练习,能大大加深你对 ASP 应用程序的理解和掌握。敬请关注〃动态网站设计十八般武艺 ……ASP 篇 (9)〃。
 
ASP教程:Global。asa文件的使用及Chat程序
在上一篇中作者给大家详细介绍了两个非常实用的 ASP 内建对象 Application 和 Session 的使用方法。由于这两者的 OnStart、OnEnd 事件的脚本都必须在 Global。asa 文件中声明 ; 因此,本篇将给大家详细介绍 Global。asa 文件的使用方法。为使大家熟练掌握至今所学过的知识,本篇还将举出一个 ASP 的 Chat 程序,供各位参考。
最近很多朋友来信问我,为什么前两期的范例程序运行时有这样那样的错。首先,我要向大家声明,这些程序都是我自己写的,在出〃厂〃前都经过合格检验,绝无〃假冒伪劣产品〃。:) 由于程序中使用了 cookie 记录客户信息,所以如果你在浏览器中没有设置接受 cookie 则程序将不能正常运行。另外,程序将客户信息记录在客户端的 cookie 所使用的方法是 Response。Cookie,此语句必须写在 ASP 文件中的第一个 《 HTML》标记前,这是因为 Cookie 是作为 HTTP 传输的头信息的一部分发送给客户的,如果当 HTTP 报头信息已经传输给客户后再使用 Response。Cookie,将出现以下错误 :〃HTTP 标题已经写入到客户浏览器。任何 HTTP 标题的修改必须在写入页内容之前。〃,可能一些朋友在剪贴程序的时候没有注意,打乱了程序的前后次序 ; 或者是错误的将 HTML 代码添加在 ASP 范例程序之前,因而导致程序运行出错。因此,我建议大家一方面在首次运行例程的时候不要对程序进行任何改动,尽量在看懂程序的基础上逐步改进,另一方面在运行 ASP 程序时至少要在浏览器中选择可接受 Cookie,否则一旦 ASP 程序中使用了 Cookie 或 Session,它们都将无法正常运行。
下面我来向大家介绍 Global。asa 文件的使用方法。
什么是 Global。asa 文件?它其实是一个可选文件,程序编写者可以在该文件中指定事件脚本,并声明具有会话和应用程序作用域的对象。该文件的内容不是用来给用户显示的,而是用来存储事件信息和由应用程序全局使用的对象。该文件的名称必须是 Global。asa 且必须存放在应用程序的根目录中。每个应用程序只能有一个 Global。asa 文件。
在 Global。asa 文件中,如果包含的脚本没有用 《 SCRIPT》标记封装,或定义的对象没有会话或应用程序作用域,则服务器将返回错误。我们可以用任何支持脚本的语言编写 Global。asa 文件中包含的脚本。如果多个事件使用同一种脚本语言,就可以将它们组织在一组 《 SCRIPT》标记中。
在 Global。asa 文件中声明的过程只能从一个或多个与 Application_OnStart、Application_OnEnd、Session_OnStart 和 Session_OnEnd 事件相关的脚本中调用。在基于 ASP 的应用程序的 ASP 页中,它们是不可用的。如果要在应用程序之间共享过程,可在单独的文件中声明这些过程,然后使用服务器端包容 (SSI) 语句将该文件包含在调用该过程的 ASP 程序中。通常,包含文件的扩展名应为 。inc。
下面是一个很标准的 Global。asa 文件 :
《 SCRIPT LANGUAGE=〃VBScript〃 RUNAT=〃Server〃》
'Session_OnStart 当客户首次运行 ASP 应用程序中的任何一个页面时运行
'Session_OnEnd 当一个客户的会话超时或退出应用程序时运行
'Application_OnStart 当任何客户首次访问该应用程序的首页时运行
'Application_OnEnd 当该站点的 WEB 服务器关闭时运行
《 /SCRIPT》
《 SCRIPT LANGUAGE=〃VBScript〃 RUNAT=〃Server〃》
Sub Application_OnStart
VisitorCountFilename = Server。MapPath (〃/ex2〃) + 〃VisitCount。txt〃
Set FileObject = Server。CreateObject(〃Scripting。FileSystemObject〃)
Set Out= FileObject。OpenTextFile (VisitorCountFilename; 1; FALSE; FALSE)
Application(〃visitors〃) = Out。ReadLine
Application(〃VisitorCountFilename〃) = VisitorCountFilename
End Sub
'=========================================================
SUB Application_OnEnd
Set FileOutObject = Server。CreateObject(〃Scripting。FileSystemObject〃)
Set Out= FileOutObject。CreateTextFile (Application(〃VisitorCountFilename〃); TRUE;FALSE)
Out。WriteLine(application(〃visitors〃))
End Sub
'=========================================================Sub Session_OnStart
Session。Timeout = 5
Application(〃visitors〃) = Application(〃visitors〃) + 1
Session(〃ID〃)=Session。SessionID
End Sub
《 /SCRIPT》
     在这个 Global。asa 程序中,涉及到了 ASP 的 File Access 组件,它可以提供用于访问文件系统的方法、属性和集合。这将在以后 ASP 的组件中进行展开讨论。在这里,它起到了在服务器上创建新文件并对文件进行写操作的作用。这其实是一个 ASP 页面访问记数器应用程序的 Global 文件,首先当客户首次访问该应用程序的首页时 ; 过程 Application_OnStart 定义了在服务器上指定的虚拟目录下新建一个 VisitCount。txt 的文本文件,并将文件的路径和内容保存在应用程序级的变量中。而当任何一个客户访问 ASP 应用程序中的任何一个页面时,过程 Session_OnStart 定义将应用程序级的变量 visitors 的值自动加一。这样,每当有客户访问页面时,变量 visitors 都将自动加一,以起到统计点击率的作用。由于变量 visitors 的值是存储在系统内存之中,所以如果服务器关闭或重新启动,存储在变量中的数据将自动丢失,所以通过定义过程 Application_OnEnd,在服务器关闭或重启之前将数据写入事先建立的文本文件之中,这样就能确保当服务器再次启动时, Application_OnStart 过程可以从 VisitCount。txt 文件中读取以前的统计数。
经过这段时间的学习,相信大家已经能够比较熟练的运用我们所学过的这些 ASP 内建对象来编写一些较简单的 ASP 应用程序,可别小看你现在所掌握的这些 ASP 基本知识哦 ! 其实你已经能够开发一些简单但实用的 ASP 应用程序了。下面我就举一个非常简单的 ASP WEB 聊天室程序,你会发觉写聊天室原来是一件这么容易、轻松的事。可能朋友们已经在一些杂志上看到过 ASP 聊天程序的编写方法,但作者在这里自己写了一个更简单的程序,仅仅使用了一个 。asp 文件。请将以下代码剪贴到记事簿并保存为 chat。asp。
《 %@ 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
%》
第一次运行 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》这里应该不会另起一行。〃)
%》
返回目录 上一页 下一页 回到顶部 11 12
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!