-
您的位置:首页 → 精文荟萃 → 软件资讯 → ASP概览
ASP概览
时间:2004/10/7 19:12:00来源:本站整理作者:蓝点我要评论(0)
-
1. ASP
1.1. 简介
Microsoft® Active Server Pages (ASP) 是服务器端脚本环境,可用来创建交互式 Web 页并建立强大的 Web 应用程序。我们可以采用VBScript和JScript来创建服务器端脚本,也可以内嵌到HTML中,使得编程更为方便,同时可以调用COM组件(如访问数据库的ADO等),这样ASP的功能可以无限地扩增。
服务器上安装IIS后,可以访问http://localhost/iishelp/来访问关于IIS的帮助,其中涵盖了ASP编程指南,所以我们仅对自学难点加以阐述,帮助您达到速成的目的。
(图1.1-1)
ASP不是语言,它是一种环境,具体编程还需要使用VBScript、Jscript等脚本语言。本文示例中除非特殊说明,否则默认采用VBScript。
1.2. 内置对象
尽管在Microsoft提供的资料中会有其他的内置对象,但对于我们来说只要掌握Application、Session、Server、Request和Response五个对象就足够了。学习前,首先对B/S模式作简单介绍,B/S是浏览器(Browser)/服务器(Server)的缩写形式,是一种特殊的客户端(Client)/服务器(Server)模式,客户端主要通过两种方式访问服务器,一种是发送URL地址到服务器,一种是通过已有的HTML页面填写表单提交到服务器;服务器需要做的就是根据得到的客户端信息返回结果—通常就是HTML页面。
如果您做过Socket开发和DLL开发,希望图1.2-1能帮助你了解ASP。
可以不严格的说,ASP中全局内存访问是通过Application对象实现的,服务器资源访问是通过Server对象实现的(Server对象CreateObject方法可以创建COM对象,从而访问更多服务器资源),客户端代理中私有内存通过Session进行管理,接收的数据相对于服务器来说,就是客户端的请求信息(Request对象),发送数据就是服务器对客户端的响应(Response对象实现)。
注意:千万不要总是徘徊在“为什么”中,“到底怎样接收数据”,“到底怎样发送数据”等等,这些过程不需要了解,你可以认为数据就是放在那里的。
1.2.1. Application对象
1.2.1.1. 集合
Application有两个子集合Contents和StaticObjects,一般情况下StaticObjects能实现的事情通过Contents都可以实现,所以我们了解Contents就足够了。
Contents集合中的内容相当于一个语言中的变量名与其值的对应。比如我想记录所有在线人员的个数(UserCount),我们可以这样赋值:
Application.Contents(“UserCount”)=0
或者
Application.Contents(“UserCount”)=Application.Contents(“UserCount”)+1
通常情况下,我们把Application.Contents(…)替换为Application(…),ASP中这是允许的。所以Application.Contents(“UserCount”)将变为Application(“UserCount”)。你可以把Application(“UserCount”)整个部分视为一个变量。
集合Contents有两个方法:Remove及RemoveAll,通过字面即可理解含义,不再赘述。
1.2.1.2. 方法
Lock和Unlock是Application对象提供的两个方法,由于Application使用的是公共的内存,当多个客户端同时访问时就必然会造成冲突,Lock和Unlock就很好的解决了这个问题,写入Application变量前首先调用Application.Lock锁定公共内存,等写入完毕再调用Application.Unlock释放锁定,使你的程序很简单就可以避免多用户访问的问题。
1.2.1.3. 事件
关于Application的事件Application_OnStart及Application_OnEnd请参照Global.asa节有关介绍。
1.2.1.4. 应用
Application对象的内容存放在公共内存区域中,对于所有客户端代理而言皆是完全访问的。公共的事物适合做公共的事情,比如计数器和一些公共对象。
1.2.2. Session对象
1.2.2.1. 集合
Contents和StaticObjects集合是Session中重要组成部分,可以通过调用Session.Contents,来定义Session级的变量,如Session.Contents(“UserLevel”),也可写作Session(“UserLevel”),我们通常也把Session(“UserLevel”)这一部分作为一个变量看待。
其他略。
1.2.2.2. 属性
常用的属性有两个,一个是SessionID,一个是Timeout。
SessionID在一次Web服务运行周期内,唯一标识一个客户端。需要注意的是“一次服务运行周期”,如果重起Web服务,SessionID将极大可能与重起前某次的SessionID相同,所以千万不要用SessionID作为数据库表中主关键字。
Timeout表示在客户端多长时间没有刷新或发送请求后,服务器将认为其Session已结束,单位为“分钟”,IIS5.0中默认为10分钟。Session.Timeout时间后,将触发Session_OnEnd事件。设置此属性的根本原因是由于http协议造成的,每次浏览器向服务器发送请求后,就立即断开,但服务器需要在一定时间内保留客户端的连接信息,如果用户超过一定时间(Timeout的值)没有刷新,发送请求或者直接关闭了浏览器,服务器需要把这个客户端的Session信息删除。想象一下,如果Session信息用不删除,服务器终究会内存不足,然后造成系统崩溃。这也是DoS攻击的简单原理。所以,Timeout属性值的大小必须根据实际情况设置合适的值。
1.2.2.3. 方法
如果说设置Session.Timeout是为了被动的删除没有用的客户端信息,Session.Abandon就是主动删除没有用的客户端信息,且将主动触发Session_OnEnd事件。在Internet中,用您自己的账号登录一个网站后,通常会有“退出登录”的功能,而且网站一般都建议您通过点击“退出登录”来退出而不是简单的关闭浏览器。“退出登录”通常的实现就是删除当前账号的登录信息(可能包含数据库中的信息或者存储文件中的信息),以防被人盗用。
1.2.2.4. 事件
Session_OnStart和Session_OnEnd事件参见Global.asa节。
1.2.2.5. 应用
Session的特点就是私有性,所以开发者通常用来存放登录用户的私有信息,如权限、级别等信息。
1.2.3. Server对象
1.2.3.1. 属性
Server对象仅有一个属性ScriptTimeout,用来设置脚本的最长运行时间,否则将被中断。设置单位为秒,默认值为90秒。
Server.ScriptTimeout与IIS管理对象中的元数据(Metabase)相互影响,其时间值将取两者之间的最大值。
1.2.3.2. 方法
关于Execute和GetLastError方法请查阅相关资料。
1.2.3.2.1. CreateObject
ASP对于服务器的访问能力几乎全部从Server.CreateObject扩展,如对目录文件系统的访问,可以创建Scripting.FileSystemObject对象,如数据库连接可以创建ADODB.Connection对象等等。当然您也可以开发自己的COM对象,比如加密、文件上载,或者隐藏的业务逻辑等等。
服务器组件中如果包含OnStartPage和OnEndPage的实现,那么创建服务器组件时OnStartPage将被执行。
例如,创建文件系统对象FileSystemObject:
Set fso = Server.CreateObject("Scripting.FileSystemObject")
‘然后就可以调用Com的任何方法或属性了:
Set MyFile = fso.CreateTextFile("c:\testfile.txt", True)
MyFile.WriteLine("This is a test.")
MyFile.Close
Set MyFile = Nothing
Set fso = Nothing
现在,查看一下服务器的C盘根目录下是否多了一个testfile.txt文件,打开后的文件内容见图1.2.3.2.1-1:
1.2.3.2.2. HTMLEncode
HTMLEncode对给定的字符串进行HTML编码,通常是结合Response对象使用。如果需要显示HTML中的特殊字符,就需要进行编码,比如“<”编码为“<”,空格符“ ”编码为“ ”等等。
例如:
<%=Server.HTMLEncode("The paragraph tag: ") %>
输出结果为:
The paragraph tag: <P>
浏览器解释处理后,显示::
The paragraph tag:
1.2.3.2.3. MapPath
MapPath方法主要用来把服务器上的相对路径或虚拟路径转化为绝对路径。
调用方法:Server.MapPath(path)。
如果path中以“/”或“\”开始,则将path作为虚拟路径的全路径取结果返回。
1.2.3.2.4. Transfer
Session.Transfer将把当前ASP文件已经装配的信息发送到另外的ASP中,并将结果组合输出。
例如test.asp内容为:
<%
Dim sessvar1
Response.Write Session.SessionID
Response.Write ("
")
Response.Write ("I am going to ASP2
")
Server.Transfer("test2.asp")
%>
Test2.asp的内容为:
<% Response.Write Session.SessionID %>
以上代码中Response.Write为发送信息到浏览器,请查阅Response对象相关描述。通过URL访问test.asp,将组合以下结果(鼠标右键单击浏览器,然后查看源代码):
214636745
I am going to ASP2
214636745
在浏览器中显示如图1.2.3.2.4-1所示:
(图1.2.3.2.4-1)
1.2.3.2.5. URLEncode
Server.URLEncode可以对一个字符串进行URL编码,通常情况下我们用来组合一个链接,转换其中的特殊字符(比如空格、汉字等)。
1.2.3.3. 应用
关于服务器资源的访问,使用Server是当仁不让。通过开发COM,通过Server.CreateObject调用,既掩盖了业务逻辑,又充分发挥ASP环境的优势。
1.2.4. Request对象
1.2.4.1. 集合
1.2.4.1.1. Cookies
如果对Web有所了解,就应该知道,在客户端如果没有特殊的ActiveX支持的话,客户端的脚本不可能访问客户端资源。有些时候,我们希望用户登录一个网站后就记录某些信息,比如以什么账号登录的,在关闭再打开浏览器后,这些信息依然存在,并且不需要再次登录。这个时候可以利用浏览器管理的Cookies来简单实现。
Cookies的资源空间很小,所以不可能把所有信息都存放到Cookies中,并且由于存放于客户端,还会涉及到安全性的若干问题。
Request.Cookies(key)可以返回关于key的值,或者是一个字典(dictionary),如果需要判断它返回的是值还是字典,可以通过调用Request.Cookies(key).HasKeys的返回值来判断,True表示为字典,False表示为值。
<%=Request.Cookies("myCookie").HasKeys %>
1.2.4.1.2. Form
我们知道在HTML的标记中就有
在网页上显示需要我们输入账号与密码,然后点击“提交”按钮就会把数据提交到dologin.asp处理,这个时候dologin.asp中就可以通过调用Request.Form(“LoginUser”)与Request.Form(“LoginPWD”)来得到客户端用户输入的相应账号与口令。
您好,<%=Request.Form("LoginUser") %>,
您输入的口令为:<%= Request.Form("LoginPWD") %>。
但是并非所有的
相关阅读
Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
-
热门文章
360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3
最新文章
微信3.6.0测试版更新了微信支付漏洞会造成哪
360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗
人气排行
xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本
查看所有0条评论>>