在IIS5(就是安装了Win2000)中自带了新的ADO 2.5版本尤其
发布时间:2006-5-29 9:12:57   收集提供:shendata
在IIS5(就是安装了Win2000)中自带了新的ADO 2.5版本尤其
增加了对XML技术的支持,并且带入了许多崭新的技术,这些技术可以
帮助我们实现以前必须要依靠组件或者其它技术才能够实现的功能。
我这里做一个简单的介绍让大家对这个新的Web组合有所了解。
从这可以看出,学习和掌握XML技术已经迫在眉睫了。欢迎大家到隔壁
的XML学习园地作客。。。
新技术之一:
ADO中新增加了一个Record对象(别和RecordSet对象混淆了)。。。
它可以操纵服务器上的任何文件。。。
下面是它运用的事例:

<%
Dim recRoot
Dim rsFiles

Set recRoot = Server.CreateObject("ADODB.Record")

'注意打开的URL必须是运行IIS5中或者支持WebDAV服务,
'至于什么是WebDAV请到隔壁去看看把
recRoot.open "", "URL=http://localhost/iis", adModeRead
Response.Write "<UL>" & Chr(13) & Chr(10)
TraverseTree recRoot
Response.Write "</ul>" & Chr(13) & Chr(10)
recRoot.Close
set recRoot = Nothing

Sub TraverseTree(recNode)

Dim rsChildren
Dim recChildNode
Set recChildNode = Server.CreateObject("ADODB.Record")

Response.Write "<LI>" & recNode("RESOURCE_PARSENAME") & Chr(13) & Chr(10)
Set rsChildren = recNode.GetChildren

If Not rsChildren.EOF Then
Response.Write "<UL>" & Chr(13) & Chr(10)
While Not rsChildren.EOF
If rsChildren("RESOURCE_ISCOLLECTION") Then
recChildNode.Open rsChildren
TraverseTree recChildNode
recChildNode.Close
Else
Response.Write "<LI>" & rsChildren("RESOURCE_PARSENAME") & Chr(13) & Chr(10)
End If
rsChildren.MoveNext
Wend
Response.Write "</UL>" & Chr(13) & Chr(10)
End If
rsChildren.Close
Set rsChildren = Nothing
Set recChildNode = Nothing
End Sub
%>

考虑到很多人目前没有安装Win2000,所以我把运行结果也给出来了,
大家可以看到代码运行的结果。。 。
注意要想得到正确的结果必须要让iis目录可以Directory Browing
<UL>
<LI>iis
<UL>
<LI>sdk
<UL>
<LI>admin
<UL>
<LI>mkwebsrv.vbs
<LI>mkwebsrv.js
<LI>metabackrest.vbs
<LI>metabackrest.js
<LI>metaback.vbs
<LI>metaback.js
<LI>logenum.vbs
<LI>logenum.js
</UL>
<LI>asp
<UL>
<LI>applications
<UL>
<LI>Session_VBscript.asp
<LI>Session_Jscript.asp
<LI>Application_VBscript.asp
<LI>Application_Jscript.asp
</UL>
<LI>components
<UL>
<LI>redirect.asp
<LI>nts_iis.gif
<LI>ie.gif
<LI>clientcap.htm
<LI>BrowserCap_VBscript.asp
<LI>BrowserCap_Jscript.asp
<LI>AdRotator_VBscript.asp
<LI>AdRotator_Jscript.asp
<LI>adrot.txt
</UL>
<LI>database
<UL>
<LI>Update_VBscript.asp
<LI>Update_Jscript.asp
<LI>StoredProcedures_VBscript.asp
<LI>StoredProcedures_Jscript.asp
<LI>SimpleQuery_VBscript.asp
<LI>SimpleQuery_Jscript.asp
<LI>MultiScrolling_VBscript.asp
<LI>MultiScrolling_Jscript.asp
<LI>LimitRows_VBscript.asp
<LI>LimitRows_Jscript.asp
<LI>Authors.mdb
<LI>AddDelete_VBscript.asp
<LI>AddDelete_Jscript.asp
</UL>
<LI>docs
<UL>
<LI>toolbar.asp
<LI>sampfram.asp
<LI>libcodebrws.inc
<LI>ColorPicker.asp
<LI>CodeBrws.asp
</UL>
<LI>interaction
<UL>
<LI>ServerVariables_VBscript.asp
<LI>ServerVariables_Jscript.asp
<LI>Redirect_VBscript.asp
<LI>Redirect_Jscript.asp
<LI>QueryString_VBscript.asp
<LI>QueryString_Jscript.asp
<LI>PopulateForm_VBscript.asp
<LI>PopulateForm_Jscript.asp
<LI>Pics_VBscript.asp
<LI>Pics_Jscript.asp
<LI>Logon_VBscript.asp
<LI>Logon_Jscript.asp
<LI>Form_VBscript.asp
<LI>Form_Jscript.asp
<LI>FileList.txt
<LI>Expire_VBscript.asp
<LI>Expire_Jscript.asp
<LI>Cookie_VBscript.asp
<LI>Cookie_Jscript.asp
<LI>Clientscript_VBscript.asp
<LI>Clientscript_Jscript.asp
</UL>
<LI>simple
<UL>
<LI>Variables_VBscript.asp
<LI>Variables_Jscript.asp
<LI>Looping_VBscript.asp
<LI>Looping_Jscript.asp
<LI>Includes_VBscript.asp
<LI>Includes_Jscript.asp
<LI>HeaderInfo.asp
<LI>Functions_VBscript.asp
<LI>Functions_Jscript.asp
<LI>Conditional_VBscript.asp
<LI>Conditional_Jscript.asp
<LI>Arrays_VBscript.asp
<LI>Arrays_Jscript.asp
</UL>
<LI>transactional
<UL>
<LI>SimpleTransaction_VBscript.asp
<LI>SimpleTransaction_Jscript.asp
<LI>FundTransfer_VBscript.asp
</UL>
</UL>
</UL>
<LI>homepage
<UL>
<LI>themes
<UL>
<LI>gunmetal
<UL>
<LI>setup.inc
<LI>layout.inc
<LI>layout.css
<LI>gradient.gif
</UL>
<LI>journal
<UL>
<LI>setup.inc
<LI>rip3.gif
<LI>rip2_2.gif
<LI>layout.inc
<LI>layout.css
</UL>
<LI>looseleaf
<UL>
<LI>setup.inc
<LI>layout.inc
<LI>layout.css
</UL>
</UL>
<LI>themes.inc
<LI>theme.inc
<LI>sub.inc
<LI>signbook.asp
<LI>myfiles.asp
<LI>guestbk.asp
<LI>global.asa
<LI>file.gif
<LI>default.asp
<LI>bullet.gif
</UL>
<LI>global.asa
</UL>
</ul>

dalongleng 2006-02-14 01:51
这里要介绍第二个IIS5 + ADO 2.5的新特点:
ADO中新增加了一个Stream对象。。。
顾名思义,Stream对象可以将服务器上的任何文件用流的方式打开来读写。。。
当然读取后的结果是写入一个Unicode流中。。 。

下面是它运用的事例:
这是它读文件的例子:

<%
Dim stmData

Set stmData = Server.CreateObject ("ADODB.Stream")

stmData.Open "URL=http://localhost/ad/readme.txt", adModeRead, adOpenStreamFromURL

response.write stmData.ReadText

stmData.Close
Set stmData = Nothing
%>

这是它写文件的例子:
<%
Dim stmData
Set stmData = Server.CreateObject ("ADODB.Stream")
with stmData
.Open "URL=http://localhost/ad/red.txt", adModeReadWrite, adOpenStreamFromURL

'把位置设置在流的最前面
.Position = 0
' 将当前位置设置为流的结束位置
' 从而删除了当前流中的内容
.SetEOS
.WriteText "test"

Response.Write "文件已经更新。当前大小为" & .Size
.Close
End With

Set s = Nothing
%>

dalongleng 2006-02-14 01:51
在iis5中提供了两种服务器端网页重定向(或者说转向)的方法,一个是server.transfer方法, 另外一个是server.execute方法。

说它们是服务器端重定向,是因为在不同页面之间的转向是直接在服务器端完成的, 客户端只能看到结果,而不能看到转向的过程。 这同以往我们在iis4使用的response.redirect 方法是不同的。

  以前, 当我们需要从一个页面转向到另外一个页面的时候,我们一般都会使用response对象的redirect方法, 比如, 在我们的某个需要用户验证的页面,当用户没有登陆的时候, 就转到用户登陆页面,简单的例子代码如下:

content.asp

<%
if session("islogin")="" then
response.redirect "login.asp"
end if

'正常的内容

%>

那么,其实response.redirect方法, 是返回给浏览器一个http header状态为302的标记码,

http 1.0 302 object moved
location url

这样,实际上是浏览器请求服务器的content.asp 文件,content.asp文件经过处理以后告诉浏览器,你先访问login.asp文件, 于是浏览器再向服务器发送一个到login.asp页面的请求。

所以, 实际上是转了一个弯。这样, 当客户端网络状况不是很好的情况下,两次请求会大大的降低应用程序的反应速度,甚至占用多余的带宽。

特别是,当需要传递参数的时候,也会有一些问题。而在iis5中, 提供了server.transfer和server.execute方法。

这两种方法,都是在服务器间完成转向的,因此可以减少客户端的网络带宽的占有,但是因为服务器端要保存程序1的一些状态,也会消耗一定的内存 。那么server.transfer和server.execute又有什么不同呢?

通过例子来说明吧,这里有两个文件,file1.asp和file2.asp

我们都是要在file1.asp里面转向到file2.asp

用tansfer方法时:

file1.asp

<%
response.write "file 1 header<br>"

server.transfer "file2.asp"
'到这里就停止执行下面的语句,转向了

response.write "file 1 footer<br>"

%>

file2.asp

<%
response.write "慈勤强 2"
%>

所有,当我们执行file1.asp文件时, 我们得到的结果是file 1 header

因为,当程序遇到transfer方法时,会停止执行后面的语句,转而执行转向的程序


当使用execute方法时:


file1.asp

<%
response.write "file 1 header<br>"

server.execute "file2.asp"
'到这里执行file2.asp,完成之后继续执行剩下的内容

response.write "file 1 footer<br>"

%>

file2.asp

<%
response.write "file 2"
%>

所有,当我们执行file1.asp文件时, 我们得到的结果是

file 1 header
file2
file 1 footer

因为,当程序遇到execute方法时,会执行转向的程序,完成之后再继续执行第一页的剩下的内容。

其实execute方法就像我们经常写的子程序一样,类似于子程序调用。
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50