ASP基础教程ASP内建对象.docx
- 文档编号:8202817
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:26
- 大小:63.99KB
ASP基础教程ASP内建对象.docx
《ASP基础教程ASP内建对象.docx》由会员分享,可在线阅读,更多相关《ASP基础教程ASP内建对象.docx(26页珍藏版)》请在冰豆网上搜索。
ASP基础教程ASP内建对象
从本篇开始作者从ASP内建对象着手,为大家详细剖析ASP的六个内建对象和各种组件的特性和方法。
在正式开始学习ASP的内建对象和组件之前,先让我们来认识一些基本概念,这将对各位今后的学习大有帮助。
请看下表:
ActiveServer
随WindowsNT交付的服务器方技术的集合。
这些技术为组件应用程序管理、数据库访问、事务和消息提供一致的服务器方组件、脚本模型和一套集成的系统服务。
ActiveServerPages(ASP)
在服务器上运行ActiveX脚本和ActiveX组件的服务器方脚本环境。
开发人员可以将脚本和组件结合在一起创建基于Web的应用程序。
ActiveX
允许开发人员为WorldWideWeb创建交互式组件的内涵丰富的Microsoft技术术语。
允许用不同语言编写的软件组件在网络环境中一起工作的一组不依赖语言的互操作技术。
ActiveX的关键元素是组件对象模型(COM)和分布组件对象模型(DCOM)。
这些技术已得到开放组织的许可,已移植到许多平台上。
ADO
Active数据对象。
为基于Internet以数据为中心的应用程序而优化的一组基于对象的数据访问接口。
ADO基于已发布的规范并且随带在MicrosoftInternetInformationServer和MicrosoftVisualInterDev中。
DSN
数据源名称。
开放式数据库接口(ODBC)用于引用访问数据所需的驱动程序或其他信息的逻辑名称。
Internet信息服务器用于连接到ODBC数据源(如SQLServer数据库)的名称。
event:
事件
由用户或ActiveX控件产生的程序响应的任何操作。
一般事件包括按键盘键、通过使用鼠标单击选择按钮和其他鼠标操作。
编程人员编写响应这些操作的代码。
object:
对象
在面向对象编程中,由当作完整实体的操作和数据组成的变量。
对象是基于特定模型的,在对象中客户使用对象的服务通过由一组方法或相关函数的接口访问对象的数据。
然后客户端可以调用这些方法执行某中操作。
ODBC
开放式数据库接口。
允许应用程序从各种跨平台数据访问的已有数据源标准规格中访问数据的应用程序编程接口。
SQL
结构化查询语言StructuredQueryLanguage。
定义和访问关系型数据库的国际标准。
什么是对象?
它可不是指你恋爱的男伴或女伴。
在面向对象编程中,对象就是指由当作完整实体的操作和数据组成的变量。
对象是基于特定模型的,在对象中客户使用对象的服务通过由一组方法或相关函数的接口访问对象的数据,然后客户端可以调用这些方法执行某中操作。
ActiveX组件是建立Web应用程序的关键,组件提供了在脚本中执行任务的对象。
ActiveX组件是一个文件,该文件包含执行某项或一组任务的代码,由于组件可以执行公用任务,这样程序员们就不必自己去创建执行这些任务的代码。
可以利用组件作为脚本和基于Web应用程序的基本构造块。
只要知道如何访问组件提供的对象,即使是位编写脚本的新手,也可以在不了解组件运作方式的情况下编写脚本。
总之,组件使您不用学习编程就能够编写强大的脚本。
组件是包含在动态链接库.dll或可执行文件.exe中的可执行代码。
组件可以提供一个或多个对象以及对象的方法和属性。
要使用组件提供的对象,请创建对象的实例并将这个新的实例分配变量名。
使用ASP的Server.CreateObject方法可以创建对象的实例,使用脚本语言的变量分配指令可以为对象实例命名。
如下例:
Setdb=Server.CreateObject("ADODB.Connection")
这里的变量db就是ASP程序创建的访问数据库的对象实例。
ActiveServerPages提供了可在脚本中使用的内建对象。
这些对象使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户信息,从而使对象开发者摆脱了很多烦琐的工作。
目前的ASP版本总共提供了六个内建对象,下面让我们将通过实例分别来进行学习。
一、Request对象
可以使用Request对象访问任何基于HTTP请求传递的所有信息,包括从HTML表格用POST方法或GET方法传递的参数、cookie和用户认证。
Request对象使您能够访问客户端发送给服务器的二进制数据。
Request的语法:
Request[.集合|属性|方法](变量)
在这里作者将挑选一些常用的对象语法进行分析
1、Form
Form集合通过使用POST方法的表格检索邮送到HTTP请求正文中的表格元素的值。
语法
Request.Form(element)[(index)|.Count]
参数
element指定集合要检索的表格元素的名称。
index可选参数,使用该参数可以访问某参数中多个值中的一个。
它可以是1到Request.Form(parameter).Count之间的任意整数。
Count集合中元素的个数
Form集合按请求正文中参数的名称来索引。
Request.Form(element)的值是请求正文中所有element值的数组。
通过调用Request.Form(element).Count来确定参数中值的个数。
如果参数未关联多个值,则计数为1。
如果找不到参数,计数为0。
要引用有多个值的表格元素中的单个值,必须指定index值。
index参数可以是从1到Request.Form(element).Count中的任意数字。
如果引用多个表格参数中的一个,而未指定index值,返回的数据将是以逗号分隔的字符串。
可以使用重述符来显示表格请求中的所有数据值。
例如,用户通过指定几个值填写表格,见下图。
对于hobby参数,您可以使用下面的脚本检索这些值。
<html>
<head><title></title></head> <body>
<p>请填写你的爱好</p>
<formmethod="POST"action="form.asp">
<p><inputtype="text"name="hobby"size="20"><br>
<inputtype="checkbox"name="hobby"value="足球">足球<inputtype="checkbox" name="hobby"value="乒乓球">乒乓球</p>
<p><inputtype="submit"value="发送"name="B1"><inputtype="reset"value="重填" name="B2"></p>
</form>
<% ForEachiInRequest.Form("hobby") Response.Writei&"<BR>" Next %>
</body></html>
将以上代码剪贴到记事簿中(注意将“<”后面的空格去掉),保存为form.asp文件并运行,request对象可以根据你在form中填入或选择元素内容的不同将元素逐个显示出来。
当然使用For...Next循环也可以生成同样的输出,如下所示:
<%
Fori=1ToRequest.Form("hobby").Count<
Response.WriteRequest.Form("hobby")(i)&"<BR>"Next<
%>
2、QueryString
QueryString集合检索HTTP查询字符串中变量的值,HTTP查询字符串由问号(?
)后的值指定。
如:
<AHREF="example.asp?
string=thisisasample">stringsample</A>
生成值为"thisisasample"的变量名字符串。
通过发送表格或由用户在其浏览器的地址框中键入查询也可以生成查询字符串。
语法
Request.QueryString(variable)[(index)|.Count]
QueryString集合可以让您以名称检索QUERY_STRING变量。
Request.QueryString(参数)的值是出现在QUERY_STRING中所有参数的值的数组。
通过调用Request.QueryString(parameter).Count可以确定参数有多少个值。
我们也可以使用QueryString来达到与前一个范例相同的功能。
只需要将request.form部分替换如下:
<%
ForEachiInRequest.querystring("hobby")
Response.Writei&"<BR>"
Next
%>
3、Cookies
什么是Cookie?
Cookie其实是一个标签,当你访问一个需要唯一标识你的站址的WEB站点时,它会在你的硬盘上留下一个标记,下一次你访问同一个站点时,站点的页面会查找这个标记。
每个WEB站点都有自己的标记,标记的内容可以随时读取,但只能由该站点的页面完成。
每个站点的Cookie与其他所有站点的Cookie存在同一文件夹中的不同文件内(你可以在Windows的目录下的Cookie文件夹中找到它们)。
一个Cookie就是一个唯一标识客户的标记,Cookie可以包含在一个对话期或几个对话期之间某个WEB站点的所有页面共享的信息,使用Cookie还可以在页面之间交换信息。
Request提供的Cookies集合允许用户检索在HTTP请求中发送的cookie的值。
这项功能经常被使用在要求认证客户密码以及电子公告板、WEB聊天室等ASP程序中。
语法
Request.Cookies(cookie)[(key)|.attribute]
参数
cookie指定要检索其值的cookie。
key可选参数,用于从cookie字典中检索子关键字的值。
attribe指定cookie自身的有关信息。
如:
HasKeys只读,指定cookie是否包含关键字。
可以通过包含一个key值来访问cookie字典的子关键字。
如果访问cookie字典时未指定key,则所有关键字都会作为单个查询字符串返回。
例如,如果MyCookie有两个关键字,First和Second,而在调用Request.Cookies时并未指定其中任何一个关键字,那么将返回下列字符串。
First=firstkeyvalue&Second=secondkeyvalue
如果客户端浏览器发送了两个同名的cookie,那么Request.Cookie将返回其中路径结构较深的一个。
例如,如果有两个同名的的cookie,但其中一个的路径属性为/www/而另一个为/www/home/,客户端浏览器同时将两个cookie都发送到/www/home/目录中,那么Request.Cookie将只返回第二个cookie。
要确定某个cookie是不是cookie字典(cookie有否有关键字),可使用下列脚本。
<%=Request.Cookies("myCookie").HasKeys%>
如果myCookie是一个cookie字典,则前面的赋值为TRUE。
否则,为FALSE。
下面我们来看看一个cookie的应用实例:
<%
nickname=request.form("nick")response.cookies("nick")=nickname
\'用response对象将用户名写入Cookie之中
response.write"欢迎"&request.cookies("nick")&"光临小站!
"
%>
<html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>cookie</title>
<metaname="GENERATOR"content="MicrosoftFrontPage3.0"></head>
<body>
<formmethod="POST"action="cookie.asp">
<p><inputtype="text"name="nick"size="20">
<inputtype="submit"value="发送"name="B1"><inputtype="reset"value="重填"name="B2"></p></form>
</body></html>
这其实是一个在基于WEB的BBS或CHAT的ASP程序中常用的手法,它将用户在起始页面上填入的姓名保存在cookie中,这样后面的程序就可以很容易地调用该用户的nick了。
4、ServerVariables
大家都知道在浏览器中浏览网页的时候使用的传输协议是HTTP,在HTTP的标题文件中会记录一些客户端的信息,如:
客户的IP地址等等,有时服务器端需要根据不同的客户端信息做出不同的反映,这时候就需要用ServerVariables集合获取所需信息。
语法
Request.ServerVariables(服务器环境变量)
由于服务器环境变量较多,作者仅将一些常用的变量在下表中列出:
ALL_HTTP
客户端发送的所有HTTP标题文件。
CONTENT_LENGTH
客户端发出内容的长度。
CONTENT_TYPE
内容的数据类型。
如:
“text/html”。
同附加信息的查询一起使用,如HTTP查询GET、POST和PUT。
LOCAL_ADDR
返回接受请求的服务器地址。
如果在绑定多个IP地址的多宿主机器上查找请求所使用的地址时,这条变量非常重要。
LOGON_USER
用户登录WindowsNT的帐号。
QUERY_STRING
查询HTTP请求中问号(?
)后的信息。
REMOTE_ADDR
发出请求的远程主机(client)的IP地址。
REMOTE_HOST
发出请求的主机(client)名称。
如果服务器无此信息,它将设置为空的 MOTE_ADDR变量。
REQUEST_METHOD
该方法用于提出请求。
相当于用于HTTP的GET、HEAD、POST等等。
SERVER_NAME
出现在自引用URL中的服务器主机名、DNS化名或IP地址。
SERVER_PORT
发送请求的端口号。
我们可以使用以下脚本打印出所有的服务器环境变量。
<TABLE>
<TR><TD><B>ServerVariable</B></TD><TD><B>Value</B></TD></TR><%ForEachnameInRequest.ServerVariables%>
<TR><TD><%=name%></TD><TD><%=Request.ServerVariables(name)%></TD></TR></TABLE>
<%Next%>
今天我们详细学习了ASP内建对象中的request对象,这也是ASP程序中使用最频繁的对象,希望大家在课后多多实践。
在上一篇中作者给大家详细介绍了ASP内建对象之一Request的使用方法,相信各位通过一系列的实践已经能够熟练掌握,本篇将继续给大家介绍ASP的另一个内建对象Response。
最近,有很多朋友来“妹儿”催我加快ASP篇一文的写作速度,并急切地询问哪里有关于ASP的教材。
我深深地被大家的学习热情所打动,因此决定将自己平时所搜集的一些ASP信息资料拿出来和大家共享,也希望所有的朋友能慷慨地将自己搜集的有关ASP的资料告诉作者,谢谢。
由于目前国内有关ASP的中文教材凤毛麟角,而专门针对ASP网站开发的中文教材作者更是闻所未闻(可能是作者孤陋寡闻),只是最近听说出了一本清华大学出版社出版的关于MSInterDev的傻瓜书,其中有ASP的教学,和一本ActiveServerPage2.0的中文手册,因此目前作者还是主要通过国外网站来获取ASP的有关信息和资料,这也是作者写本文的一个主要原因。
下面我就将bookmark中的一些较经典的ASP站点罗列出来:
1、
这是作者访问最频繁的ASP网站,也是世界上最大最全的关于ASP的网站之一,它里面不但有最新的ASP文献资料,免费组件,还有一本完整的ASP入门教材,它更是ASP网站的中枢站点,通过它你可以到达无数的ASP相关站点。
2、
这本是一个针对ASP漏洞而建立的站点,但是它却无疑是一个完备的ASP信息站点,它非但提供了ASP的文章,及组件还提供详尽透彻的联接地址。
3、和
这是一个作者所看到的最大的网上ASP交流站点,它拥有ASP解疑的答案,ASP邮件清单信息,ASP技巧,你可能需要需要几个月的时间才能读完这些信息。
而在你可以读到最新的ActiveX组件和大量免费组件的详细介绍,并附有非常实用的文档与例子。
4、
大家都知道ActiveServerPage是微软提出的一套基于NTIIS的WEB服务器端环境,那么这个由微软自己建立的ASP技术说明站点,大家当然是不可不看的。
5、
在这里你可以获得无数实用的ActiveX组件,并下载它们的试用版,只可惜其中的大部分极好的组件都是要Money的。
6、
大家还记得作者在ASP2一文中介绍的那个用来辨别客户端浏览器版本的BrowserCapabilitie组件吗?
在这个站点你可以获得最新的BROWSCAP.INI文件,它拥有每一个ASP安装时微软没有提供的浏览器的信息,这样你在ASP中判断客户浏览器是就能够万无一失了。
7、
ASP最强大且便捷的功能莫过于同数据库的连接,通过ASP内建的ActiveX组件,我们可以轻而易举的将WEB与所有和ODBC兼容的数据库连接起来,在这个微软的站点上你可以获取很多实用的ADO资料。
8、
一个不错的ASP论坛,你可以在那里贴你的问题,读取别人的问题和解答。
下面,我们开始学习ASP的另一个内建对象Response。
与Request是获取客户端HTTP信息相反,Response对象是用来控制发送给用户的信息,包括直接发送信息给浏览器、重定向浏览器到另一个URL或设置cookie的值。
语法
Response.collection|property|method
一、属性
1、Buffer
Buffer属性指示是否缓冲页输出。
当缓冲页输出时,只有当前页的所有服务器脚本处理完毕或者调用了Flush或End方法后,服务器才将响应发送给客户端浏览器,服务器将输出发送给客户端浏览器后就不能再设置Buffer属性。
因此应该在.asp文件的第一行调用Response.Buffer。
2、Charset
Charset属性将字符集名称附加到Response对象中content-type标题的后面。
对于不包含Response.Charset属性的ASP页,content-type标题将为:
content-type:
text/html。
我们可以在.asp文件中指定content-type标题,如:
<%Response.Charset="gb2312")%>
将产生以下结果:
content-type:
text/html;charset=gb2312
注意,无论字符串表示的字符集是否有效,该功能都会将其插入content-type标题中。
且如果某个页包含多个含有Response.Charset的标记,则每个Response.Charset都将替代前一个CharsetName。
这样,字符集将被设置为该页中Response.Charset的最后一个实例所指定值。
3、ContentType
ContentType属性指定服务器响应的HTTP内容类型。
如果未指定ContentType,默认为text/HTML。
4、Expires
Expires属性指定了在浏览器上缓冲存储的页距过期还有多少时间。
如果用户在某个页过期之前又回到此页,就会显示缓冲区中的页面。
如果设置response.expires=0,则可使缓存的页面立即过期。
这是一个较实用的属性,当客户通过ASP的登陆页面进入WEB站点后,应该利用该属性使登陆页面立即过期,以确保安全。
5、ExpiresAbsolute
与Expires属性不同ExpiresAbsolute属性指定缓存于浏览器中的页面的确切到期日期和时间。
在未到期之前,若用户返回到该页,该缓存中的页面就显示。
如果未指定时间,该主页在当天午夜到期。
如果未指定日期,则该主页在脚本运行当天的指定时间到期。
如下示例指定页面在1998年12月10日上午9:
00分30秒到期。
<%Response.ExpiresAbsolute=#Dec12,19989:
00:
30#%>
二、方法
1、Clear
可以用Clear方法清除缓冲区中的所有HTML输出。
但Clear方法只清除响应正文而不清除响应标题。
可以用该方法处理错误情况。
但是如果没有将Response.Buffer设置为TRUE,则该方法将导致运行时错误。
2、End
End方法使Web服务器停止处理脚本并返回当前结果。
文件中剩余的内容将
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASP 基础教程 对象
![提示](https://static.bdocx.com/images/bang_tan.gif)