从mzwu类学习ASP类(续):Visual Basic6.0开发ASP组件

一、组件开发

1.运行Visual Basic6.0,新建ActiveX DLL工程;
2.选择"工程"菜单下的"引用...",添加"Microsoft Active Server Pages Object Library"
3.选中"工程1"在其属性窗口中将其名称改为"NewClass";
4.选中NewClass工程下的Class1,在其属性窗口中将其名称改为"mzwu";
5.将"从mzwu类学习ASP类"中的mzwu类代码稍加修改后Copy到代码窗口中:
Option Explicit

Private Context As ScriptingContext
Private Application As Application
Private Response As Response
Private Request As Request
Private Session As Session
Private Server As Server

'定义一个公有变量name,即mzwu类的name属性
Public name
    
'定义mzwu类的另一个属性url,注意定义方法
Private temp_url
Public Property Let url(value) '设置url属性可写,缺此句属性不可写
    temp_url = value
End Property
Public Property Get url() '设置url属性可读,缺此句属性不可读
    url = temp_url
End Property

Public Sub OnStartPage(PassedscriptContext As ScriptingContext)
    Set Context = PassedscriptContext
    Set Application = Context.Application
    Set Request = Context.Request
    Set Response = Context.Response
    Set Server = Context.Server
    Set Session = Context.Session
End Sub
'定义一个私有函数过程addstr,只能在mzwu类内部使用
Private Function addstr(value)
    addstr = "mzwu中文名称:" & value
End Function

'类初始化
Private Sub Class_Initialize()
    Dim str
    str = "木子屋"
    name = addstr(str)
    url = "出错了:还没有给url赋值!"
End Sub
    
'定义一个子过程writename,即mzwu类的一个方法writename,无返回值
'可根据实际使该方法带不带参数
Public Sub writename()
    Response.Write "我是调用writename方法来的"
End Sub
    
'定义一个函数过程getname,即mzwu类的一个方法getname,有返回值
'可根据实际使该方法带不带参数
Public Function getname()
    getname = "我是调用getname方法来的"
End Function
    
'类结束
Private Sub Class_Terminate()
    name = ""
    temp_url = ""
End Sub

'释放内部对象
Public Sub OnEndPage()
    Set Application = Nothing
    Set Request = Nothing
    Set Response = Nothing
    Set Server = Nothing
    Set Session = Nothing
    Set Context = Nothing
End Sub

6.选择"文件"菜单下的"生成NewClass.dll";
7.将NewClass.dll复制到System32目录下,运行"Regsvr32 NewClass.dll"进行注册。

二、应用举例

<%
Dim NewClass
Set NewClass = Server.CreateObject("NewClass.mzwu")
Response.write NewClass.url '此时url没值,显示"出错了:还没有给url赋值"
Response.write "<br/>"
NewClass.url = "http://www.mzwu.com/"
Response.write NewClass.url '赋值后显示"http://www.mzwu.com/"
Response.write "<br/>"
Response.write NewClass.name '显示"mzwu中文名称:木子屋"
Response.write "<br/>"
Dim str
str = NewClass.getname '调用getname方法
Response.write str  '显示"我是调用getname方法来的"
Response.write "<br/>"
Response.write NewClass.writename '调用writename方法,显示"我是调用writename方法来的"
Set NewClass = Nothing
%>


三、后记

本文原先在调用writename过程时老是失败,提示"需要对象",估计是Visual Basic不支持ASP的"Response.write"方法,找了很多资料照着做仍未解决,最终在蓝色理想上参考了老农的一篇文章《asp编译成dll-图形化教程》才得以解决。因作者注明不能转载,感兴趣的朋友可访问:http://www.blueidea.com/tech/program/2006/3212.asp

点击这里可下载本文的NewClass.dll

评论: 1 | 引用: 0 | 查看次数: 4619
发表评论
登录后再发表评论!