手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp编程>列表

ASP 3.0高级编程(十三)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

2. 在ASP网页中创建对象实例
为了理解一般的脚本引擎对象创建方法为什么在ASP网页中使用效果不理想,需进一步对ASP中的环境和ObjectContext对象进行讨论。
使用脚本引擎的一般方法在一个ASP网页中创建一个对象实例时,该对象在当前执行的页面的环境中并未实例化。得不到ObjectContext对象的引用,所以不能使用该对象来访问页面的环境,即不能访问该页面环境中的值。
这意味着该对象不能使用内置的ASP对象,即不能够访问在Request、Response、Application和Session对象的集合中的值,也不能使用内置的ASP对象提供的方法和属性。该对象也不能够与此环境中任何现有的事务进行交互。如果发生错误,不能使用ObjectContext方法放弃一个事务。
当然,你可能不想与该网页的环境进行交互。但是有其他的理由说明使用一般的对象创建方法通常是不明智的。IIS自动地在COM 运行期包装程序hllhost.dll中实例化对象,使得该对象可以在当前的虚拟应用程序中完全地共享和重新使用(缺省的Web网站本身是一个虚拟的应用)。
你在上一章所看到的对一个虚拟应用程序的设置,既允许在Web服务器的内存空间中创建对象,也可以在共享的或独立的进程外DLLHost.dll实例中创建对象。如果使用一般的脚本引擎对象创建方法,将绕过所有的组件隔离和可扩展特性。而在使用ASP Server对象的CreateObject方法时会自动地提供这些特性。
3. Server对象的CreateObject方法
为了试验CreateObject方法,打开示例的Chapter04主菜单页,单击“Using the ASP Server Object”链接,如图4-10所示:

图4-10 示例程序的Chapter04主菜单页
这个链接打开一个名为show_server.asp的网页,该页面可以用来试验所有的Server对象的方法。它同时也显示Server对象唯一的属性ScriptTimeout的值、其缺省值是90秒,如图4-11所示:

图4-11 Server对象的属性和方法
在该页面的“Create an Instance of a Component”区域,有一个文本框,可以在其中键入想要在该网页的环境中创建的对象的ProgID字符串,甚至可以键入一个ClassID数值。这里文本框的缺省值已经设置为一个来自ActiveX数据对象库的公用对象的ProgID:ADODB.Connection。
单击“Server.CreateObject”选项旁的按钮,把该页面提交给其自身,因为所有的控件都在一个带有ACTION属性的<FORM>上,而这个ACTION属性被设置为这个网页的路径和文件名:

FORM ACTION="<% = Request.ServerVariables("SCRIPT_NAME") %>" METHOD="POST">

<P><DIV CLASS="subhead">Create an Instance of a Component</DIV>
<INPUT TYPE="SUBMIT" NAME="cmdCreateObject" VALUE="&nbsp;&nbsp;&nbsp;">
&nbsp; Server.CreateObject ("
<INPUT TYPE="TEXT" NAME="txtProgID" SIZE="25" VALUE="ADODB.Connection">
")<P>

</FORM>

当该页面重新载入时,该页中的一段ASP代码(位于<FORM>段的前面)将查看提交该窗体时,单击了哪个按钮。如果是名称为“cmdCreateObject”的按钮时,该代码将读取文本框中的ProgID字符串。为防止用户输入的ProgID无效而导致执行中止,关闭缺省的脚本错误处理,再尝试使用Server.CreateObject方法创建一个对象的实例。最后,再重新打开缺省的错误处理,通过使用IsObject函数检查是否创建了一个对象实例,并显示一个相应的信息:
QUOT = Chr(34) 'double-quote character

'look for a command sent from the FORM section buttons
If Len(Request.Form("cmdCreateObject")) Then
strProgID = Request.Form("txtProgID")
On Error Resume Next
Set objObject = Server.CreateObject(strProgID)
On Error Goto 0
If IsObject(objObject) Then
Response.Write "<B>Results:</B><BR>Sucessfully created object with ProgID of <B>" _
& QUOT & strProgID & QUOT & "</B><HR>"
Else
Response.Write "<B>Results:</B><BR>Failed to create object with ProgID of <B>" _
& QUOT & strProgID & QUOT & "</B><HR>"
End If
End If

图4-12所示的是创建ADODB.Connection对象的结果。可以看到该对象已被正常实例化,已可以在代码中使用。

图4-12 ADODB.Connection对象实例化的结果
本章不讨论如何使用这些对象,你可能已经对此很熟悉了。一旦创建了对象实例,就可以像在任何其他情况中一样使用它。调用对象的方法,读取或设置属性,与使用VB时一样;或者用浏览器中客户端的VBScript、JScript使用它。
在接下来的章节中将对对象和组件的使用进行更加详细的介绍。我们将研究由脚本引擎实现的一些对象,以及IIS 5.0/ASP 3.0中的可安装组件,还有一些其他的免费或商用的组件,并讨论在各种情况下如何选择相应的组件。在本书的后面,甚至会说明创建自己的能够在ASP中使用的组件是非常简单的。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!