我是黑客,我怕谁

欢迎黑客加入,大家交流交流

7 成员52 主题9 回复0 张照片

ASP的页面结构基础

情
情深深
2001-11-19 15:41

六大内置对象简介

       认识ASP的六大内置对象,是设计功能强大的Web应用程序的第一步。让我们来看看这六大对象是些什么东西吧。   Request          从客户端取得信息   Response         将信息发送客户端   Server          提供Web服务器的一些组件   Session          储存一个Session会话过程中的用户信息,它仅可被该用户访问   Application        在一个ASP应用程序中可以给不同客户端共享的信息   ObjectContext       用来配合Microsoft Transaction服务器进行分布式处理   现在开始逐一介绍上述的六大对象。 (一)Request对象   通过Request对象,我们可以收集到客户端的Form,Cookies,超连接,或是服务器的还境变量,因此,Request为我们的ASP程序提供的加工的“原材料”,您说它重要吗?没有Request对象的话,那么ASP程序就失去了与客户端联系的交互能立,可以把它想象为我们的眼睛和耳朵。      (二)Response对象   Response对象可以把ASP程序加工后的“产品”,发送给客户,让他们可以看见结果。同时,也可以通过Response对象设置客户端浏览器的状态,比如设置Cookies,Cookies是一种跟踪客户端状态的技术,有的网站利用Cookies来记录你是第几次访问他们的网站,而Cookies就是那些保存在Windows系统目录Cookies里的那些文件,那些文件可以供网站重新读取和设置。用来跟踪您的状态,Request和Response可以说一个对孪生兄弟,一个负责收集,另一个负责输出。      (三)Server对象   Server对象为您的ASP程序的扩展提供的灵活方便的途径,比如说,如果您需要在ASP程序中读写服务器上的某个文件,那么就可以借用“文件存取组件”来读写文件。而Server对象就充当了建立这个组件的实例的角色,需要使用某个组件,必需先建立它的一个Server对象实例,在后面将要介绍的ADO组件,您就能清楚地理解服务器对象的作用了。      (四)Session对象   ASP程序可以说是一个Web的应用程序,传统的HTML页,不能跟踪客户端的情况,比如说客人现在处于那一个页面上,何时离开了这个网站,而Session对象的引入,不但能使上述的问题得以解决,并且能为用户个人保存网站期间(会话)的数据信息,它只对用户个人作用,而对ASP程序中的其他用户是无作用的,聪明的朋友可能和早就猜到其实Session也是利用Cooikes技术来临时保存用户数据。当你把浏览器的Cooikes功能关闭,那么Session对象就失效了,因此设计ASP程序时别忘了这一点哦。      (五)Application对象   既然Session对象的数据是用户私有的,那么ASP程序中必须要有一种能让处于ASP程序中所共同享有的数据信息,这就是Application对象,可以说。Application对象内保存的信息,是可以让同一ASP程序中的所有用户所共享的,比如聊天室里说一句话,聊天室里的所有人都能看见,这里就是应用了Application对象把说话的信息保存起来,再显示出来。而悄悄话既是一种Session对象信息。只有特定的用户能看见。    (六)ObjectContext   这是扩展ASP能力的一个对象,当你需要使用ASP内直接发送EMAIL,或是其它信息时,就少不了它的帮忙。   怎么样?大家应对ASP的六大对象有了一个简单的认识了吧?其实ASP程序本身就是利用这六大对象来变化出那些千变万化的功能。现在转入正题,先认识一下比教重要的对象的用法吧。

从客户端提取数据

       认识ASP的六大内置对象,是设计功能强大的Web应用程序的第一步。让我们先来看看这六大对象中负责数据采集的Request对象吧。         我们常常在网上会遇到很多需要填写个人资料,然后提交处理的注册的事情,比如说申请一个免费电子邮箱,常常需要填写一些表格。而对于熟悉网页设计的朋友一定对这个标签不会陌生,现在看看一个小小的例子。   你的名字      看看这个表格,里面包含了一个叫username的文本框,而form的提交对象是test.asp这个ASP程序,也就是说按了“提交”按键后,文本框username的内容将会传递到test.asp这个ASP程序来处理,那么现在就说说如何在test.asp中取得username这个文本框的内容。   这里就需要使用Request对象了。在test.asp的服务端执行的脚本中,也就是位于<%...%>之间的脚本来,只需要使用Request.form("username")就可以取得客户端填写了的内容,比如说要把这个值传给变量user,就可以如下: <%  ............  user=Request.form("username")  ............ %>   是不是取得Form内容的方法很简单呢?另外,除了用Form可以传递客户端内容外,用超连接也可以,我们常常看到一些URL是http://www.xxxxxx.com.cn/guestbook.asp?user=realchat这样的地址,那么这表示什么意思呢?   其实这就是把user=realchat这个客户端内容传递给guestbook.asp这个asp程序进行处理。   在guestbook.asp这个asp程序中,我们可以用Request.querystring来取得客户端传来的内容。 <%   user=Request.querystring("user") %>   这样,就可以把“realchat”这个值赋给user这个变量了。这种情况多是用于免费的留言簿识别不同的用户而采用的,采数可以传递多个,只需要用“&”来分隔,比如:   http://www.xxxxxx.com.cn/guestbook.asp?user=realchat&reno=22   这里传递了两个参数,user和reno。使用Request.querystring("参数名")来分别取得它们。   Requst对象可以取得很多参数,比如说客户机上设置了的COOKIES,服务器变量等。   检取HTTP服务使用的端口可以如下:   port=Request("SERVER_PORT")   SERVER_PORT是一个内定的服务器变量,它指标出HTTP服务当前使用的端口。   服务器变量为ASP程序提供了很多客户端的信息,比如说客户端的IP地址,登录的NT帐号,登录的密码,服务器的Web发行路径。最后这些服务器变量的具体变量名可在实用编程资料中查找。      

向客户端发出信息

            Request对象是从客户端取的信息的,那么相反,Response是向客户端发送信息,比如上一课的test.asp这个例子,当取得用户的名称后,可以如下处理。 <%   user=Request.form("user")   Response.write "你的名字是:"&user %>   那么客户端的屏幕上将出现:你的名字是:(您在Form内所填写的东西)   Response.write是常用的方法,因此可以简写为<%="你的名字是:"&user%>。方便吗?   还记得第一个例子中的<%=says%>吧?就是这个原因。   Response对象可以设置向客户端输出的很多参数,如HTML的MIME类型,当然是少不了向客户端写入Cookies,如果需要往客户端写入一个叫user的Cookies,则可以有如下的语句。 <% ................ response.cookies("user")="无名氏") response.cookies("user").expires="JULY 31,2002" ................ %>   程序的第一项是设置Cookies的user值为“无名氏”,而第二项则是设置user这个Cookies的有效时间,您总不能让一个Cookies永远不消失有效吧?因此你可以用它来设定Cookies在什么时间前保持有效。   好了,向客户端写入了一个Cookies,现在大家瞧一瞧这个例子。看看输出会是什么东西? <% ......... user=Request.cookies("user") %> <%=user%>   没有忘记吧?输出在浏览器上的结果应改只有“无名氏”这三个字。   当我们运行一大段ASP程序时,为了让客户端有一个连续的感觉,因此可以适当使用一下这个Response对象的buffer属性。 如下面程序 <% @language=VBScript%> <% Response.buffer=true %> ........//一段HTML文本(A) <% 一段执行时间很长的ASP脚本 %> .......//一段HTML文本(B) <% Response.flush %>   当我们不把buffer属性设为True,那么客户端将会想看到(A)的HTML画面,然后等了一段时间,最后才看到(B)的画面,这样处理上来不太好,所以加入一个buffer属性为True,则(A)的输出先保存在服务器端的缓冲区中,然后处理完脚本,再把(B)加如缓冲内,最后遇到Response的flush方法,就把缓冲区的内容一次发送到客户端,因此感觉上会连续一点,另外,Buffer属性在高级编程中可以起到纠错的能力,因次HTML内容在处理过程中还没有发到客户端,可以用Clear的方法清空了服务器缓冲区的所有HTML文本,这样在某种情况下很有用。   另外,使用Redirect方法可以把客户引领到另一个新的页面,程序如下。 <% @language=VBScript%> <% Response.buffer=true if hour(now)>12 then   Response.Redirect "1.htm" else   Response.Redirect "2.htm" end if Response.flush %>   可以看明白上面的程序吧?当时间是12点后,就把客户引到1.htm这个网页上来,反之就定向到2.htm这个页面上来。Response对象有很多属性和方法,这些只需要使用前查找参考资料就可以了。同样您可以在编程资料中得到这些资料。       

功能强大的内置组件

ASP提供了几个内置的组件给我们使用,它们是广告轮换组件,浏览器兼容组件,文件超连接组件,浏览器兼容组件,文件存取组件,数据库存取组件。   需要使用这些组件,必须使用Server对象中的CreateObject方法来声明它们的实例。先在简要介绍它们的作用。 (一)广告轮换组件   使用它你可以轻松地在主页上交替地变换广告,当用户每次进入你的页面,上面所显示的广告都可以不同的,这就是它的作用,而且,它还可以根据一定的比率,显示广告,使到每个广告显示的次数都很合理。   当然,使用客户端脚本的朋友会说,实现这样的功能不难呀,何须ASP,没错,但如果需要显示的是几十副广告,那么编脚本是不是很困难,如果引用广告轮换组件,那么它可以轻松地为你管理那些广告BANNER,不需要你去粗心。   看看它的用法,广告轮换组件有三个属性BORDER,CLICKABLE,TARGETFRAME。它们分别指定图片的边框大小,是否提供超连接,还有连接的目标框。   看看程序 <%   Set ad=Server.CreateObject("MSWC.AdRotator")  ’创建对象实例   ad.BorderSize(0)                ’设置边框为零 %> <%=ad.GetAdvertisement("/ads/adtxt.txt")%>      ’从文件中取得连接图片的信息并显示   广告轮换组件很容易使用,现在看看那个特定的文本文件的结构。 辅助文件的写法 ADREDIR.ASP <% Response.redirect(request.querystring("URL")) %> *adtxt.txt的数据 REDIRECT /ADREDIR.ASP    ‘点击后处理的ASP程序名 WIDTH 440 HEIGHT 60 BORDER 1 ’广告部分 ADPIC/MS.GIF         ‘图片的路径 HTTP://WWW.XXXX.COM.CN   ‘连接地址 XXX公司主页         ‘广告说明 20               ‘显示的比率 ‘重复广告数据 。。。。 。。。。   怎么样?广告轮换组件是不是很简单易用?快试一试吧。 (二)浏览器兼容组件   我们编制ASP程序的时侯,常常需要了解客户端所使用的浏览器类型,它所支持的属性等,那么如何确定浏览器类型呢?我们可以用浏览器兼容组件。   看看它的用法 <%   Set browser=Server.CreateObject("MSWC.BROWSERTYPE") %> 只需要在程序中声明这句,那么你就可以根据browser的属性来确定客户端使用的浏览器了。 如果是用IE4.0则 browser.browser=MSIE browser.version=4.0    browser.FRAMES=True  支持FRAME 。。。。   具体资料可以在编程资料中查找。    (三)文本存取组件   看看例子: *建立一个文本文件 <%   Set FS=Server.CreateObject("SCRIPTING.FILESYSTEMOBJECT")   Set A=FS.CREATETEXTFILE("C:\TESTFILE.TXT",TRUE)   A.WRITELINE "在C:盘下创建一个名叫TESTFILE.TXT的文件,无论文件是否存在也复盖它"   A.CLOSE %>   文件testfile.txt创建成功了,看看它的内容是什么?   反之打开一个文件 <%   Set FS=Server.CreateObject("SCRIPTING.FILESYSTEMOBJECT")   Set A=FS.OpenTEXTFILE("C:\TESTFILE.TXT")   mess=A.readline   A.CLOSE %> <%=mess%>   结果输出了什么?正好是刚才写入的那句话:   在C:盘下创建一个名叫TESTFILE.TXT的文件,无论文件是否存在也复盖它   常用的内置组件主要是这三个,另外一个极为重要,可以说是ASP精髓的数据库存取组件,我们独立地解说它的用法。大家一定要学会灵活使用数据库存取组件--ADO

ADO数据库引擎

在众多的ASP应用程序中,数据库的访问能力是必不可少的。而数据库访问组件则为我们提供了灵活方便的数据库访问能力,你可以使用它连接任何符合ODBC标准的数据库。包括SYBASE,MSSQL SERVER等等,也可以使用ACCESS等的小型数据库,而这类数据库为开发测试提供了极好的测试条件,好了,废话少说,开时来认识我们的ADO吧。   ADO主要有三个对象,分别是connection,Command,Recordset,现在分别解说一下它们所起的作用。   Connection对象就是使ADO与数据库之间建立一个同道,就象我们打电话,需要先拨号,然后才能与对方交谈,而Connection就是起了一个类似拨号连线的作用,任何需要对数据库进行操作,必须先“拨号连线”---建立Connection,然后才能进行。   而Command对象就是对数据库进行发号施令,比如需要建立新的索引,执行查询等,它可以透过使用标准的SQL数据库操作语言得以实现。   Recordset对象是一个数据记录集,它包含了我们检索出来的记录数据,透过它我们可以直接对数据库进行修改。这个对象很重要。   总的来说,ADO对数据库操作的方法有很多种,比如说连接一个数句库,光了连接语法就可以组合出很多种,但我们不需要全部都学得很好,程咬金只有三板斧,我们只需要练熟一套熟于自己的操作方法就很好了。下面我只介绍两种我最常用的做法,记好这两招,设计大部份的数据库程序可以说是没有问题的了。 (一)用Connecttion对象连接数据库   连接数据库的语法很多,我只说两种,一种需要配置ODBC数据源的数据源名称,这种方法有的时侯很不好用,因为比如你需要远程开发一个数据库的Web程序,总不能每次都跑去配置一下数据源名称吧。但作为大型的数据库程序,也只能使用这种方法啦,叫网管帮你配一下就可以了,不过老麻烦人可能不大好。
1 / 1