亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Asp組件初級入門與精通

2019-11-17 04:14:00
字體:
來源:轉載
供稿:網友

asp組件初級入門與精通系列之一

一直以來,想寫一些組件方面的應用,這段時間終于可以寫一點自己喜歡的東西。

希望大家通過這些教程學習后,可以隨心所欲的寫出自己的組件。

每篇文章可能沒有關聯,只是寫一些組件編寫過程中出現的問題。

歡迎大家批評指正

環境:winxp+vb6+sp6+visual interdev6.0
      

作為第一篇,我們先來寫一個比較簡單的組件

完成的功能是:輸入兩個數相加,返回相加的結果

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fC1

點擊菜單->工具->添加過程

我們在名稱內輸入Add,類型選擇函數,范圍選擇公有,然后確定即可

生成如下代碼,我們繼續完善


 程序代碼
Option Explicit
Public Function Add(ByVal a As Long, ByVal b As Long) As Long
Add = a + b
End Function


Ok,一個簡單的組件就寫好了,點擊菜單->文件->生成fCom.dll文件

確定,在目錄下就會有fCom.dll文件

測試

打開visual interdev6.0,生成一個asp文件,為什么要使用interdev,因為它有代碼提示功能,與vb的ide環境一致,方便書寫


 程序代碼
<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%
set obj=server.CreateObject("fCom.fC1")
'下面這句注意了,因為函數有返回值的,不能按下面的方法寫,否則ie中會報錯
'obj.Add(3,4)

'錯誤類型:
'Microsoft VBScript 編譯器錯誤 (0x800A0414)
'調用子程序時不能使用括號
'/xml/fc1.asp, line 9, column 12
'obj.Add(3,4)
'下面是正確寫法
dim c
c=obj.Add(3,4)
Response.Write c
%>
</BODY>
</HTML>


配置好虛擬目錄,在ie中執行此asp文件,得到結果7

第一篇結束了,祝大家學習愉快。


Asp組件初級入門與精通系列之二

如何注冊組件

1.regsvr32 組件的絕對路徑

如:
 程序代碼
regsvr32 c:/test/fc1.dll


因為組件只要注冊就可以使用了,所以與組件的位置無關。

2.在COM+組件管理器中注冊

什么時候需要這種注冊:組件在使用了COM+的服務后需要注冊后才能正常的執行。如果該組件僅僅regsvr32注冊,仍然無法使用

如何使用組件


 程序代碼
set obj=server.createobject(“工程名.類名”)


然后調用其方法屬性

如何卸載組件

1.regsvr32 組件的絕對路徑

如:
 程序代碼
regsvr32 c:/test/fc1.dll  /u


u參數反注冊組件

2.COM+組件管理器中刪除組件即可

Asp組件初級入門與精通系列之三

如何使用屬性

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fC2

點擊菜單->工具->添加過程

我們在名稱內輸入myName,類型選擇屬性,范圍選擇公有,然后確定

再次操作:在名稱內輸入Age,類型選擇屬性,范圍選擇公有,然后確定

再次操作:在名稱內輸入peopleInfo,類型選擇函數,范圍選擇公有,然后確定即可

代碼如下:


 程序代碼
Option Explicit
'保持屬性值的局部變量,只能在類中使用
PRivate mvarmyName As String
Private mvarAge As Integer
'Let寫屬性(Let屬性: 該過程給一個屬性賦值。)
Public Property Let Age(ByVal vData As Integer)
    mvarAge = vData
End Property
'Get讀屬性(該過程獲取一個屬性的值。)
Public Property Get Age() As Integer
    Age = mvarAge
End Property

Public Property Let myName(ByVal vData As String)
    mvarmyName = vData
End Property

Public Property Get myName() As String
    myName = mvarmyName
End Property

Public Function peopleInfo() As String
peopleInfo = "姓名: " & mvarmyName & "  年齡:" & mvarAge
End Function


Ok,一個簡單的組件就寫好了,點擊菜單->文件->生成fCom.dll文件

確定,在目錄下就會有fCom.dll文件

測試

打開visual interdev6.0,生成一個asp文件,為什么要使用interdev,因為它有代碼提示功能,與vb的ide環境一致,方便書寫


 程序代碼
<%@ Language=VBScript %>
<HTML>
<BODY>
<%
set obj=server.CreateObject("fCom.fC2")
dim c
'這里調用的是組件的Let屬性
obj.myName ="龍卷風"
obj.Age =20
c=obj.peopleInfo()
Response.Write c
'這里調用的是組件的Get屬性
Response.Write "<br>"
Response.Write obj.myName
Response.Write "<br>"
Response.Write obj.Age
%>
</BODY>
</HTML>


配置好虛擬目錄,在ie中執行此asp文件,得到結果如下:

姓名: 龍卷風 年齡:20
龍卷風
20

未完待續

Asp組件初級入門與精通系列之四

數組問題

數組在程序中使用的很多,而且比較容易出問題

我們通過小例子來看看

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fC4

點擊菜單->工具->添加過程

我們在名稱內輸入AcceptArray1,類型選擇子程序,范圍選擇公有,然后確定

再次操作:在名稱內輸入AcceptArray2,類型選擇函數,范圍選擇公有,然后確定即可


 程序代碼
'功能:傳遞數組地址到組件,使用ByRef關鍵字,并賦值返回
Public Sub AcceptArray1(ByRef varray As Variant) As Variant
    varray(0) = "龍卷風"
    varray(1) = "20"
End Sub

'功能:返回一個字符串數組
Public Function AcceptArray2() As Variant
       Dim a(2) as Variant
    a(0) = "龍卷風"
a(1) = "20"
AcceptArray2=a
End Function

Ok,一個組件就寫好了,點擊菜單->文件->生成fCom.dll文件

確定,在目錄下就會有fCom.dll文件

測試

打開visual interdev6.0,生成一個asp文件

 程序代碼
<%@ Language=VBScript %>
<HTML>
<BODY>
<%
dim obj
set obj = server.createobject("fCom.fC4")
dim a(2)
'測試第一個組件方法
obj.AcceptArray1(a)
response.write a(0)
response.write "<br>"
response.write a(1)
response.write "<br>"
'測試第二個組件方法
dim b
b=obj.AcceptArray2()
for i=0 to ubound(b)
Response.Write b(i)
response.write "<br>"
next
%>
</BODY>
</HTML>


配置好虛擬目錄,在ie中執行此asp文件,得到結果如下:

龍卷風
20
龍卷風
20

總結一下:

字符串,數字通過值傳遞或者作為返回值被返回

如果使用引用傳遞,將參數的類型設為Variant。這樣做可以避免一些錯誤。不過盡可能的減少引用傳遞參數

未完待續

Asp組件初級入門與精通系列之五

經常我們可以看到在連接數據庫,打開記錄集的時候,如下:


 程序代碼
rs.Open strsql, conn,adOpenDynamic ,adLockPessimistic


在鍵入”,”的時候,后面會出現一個游標類型或者鎖類型列表可以供選擇。

有時候我們為了簡化,直接rs.open strsql,conn,1,3

第一種方法是不是更加專業一些,我們來看看asp中如何實現

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fC5


 程序代碼
Option Explicit
'定義枚舉類型
Public Enum Interfacedig
   icfirst = 1
   icsecond = 2
   icthree = 3
   icfour = 4
   icfive = 5
   icsix = 6
   icserven = 7
   iceight = 8
End Enum

'定義函數
Public Function CallDat(ByVal idig As Integer, ByVal ics As Interfacedig) As Variant
CallDat = idig * ics
End Function

Ok,一個組件就寫好了,點擊菜單->文件->生成fCom.dll文件

確定,在目錄下就會有fCom.dll文件

測試

打開visual interdev6.0,生成一個asp文件

 程序代碼
<%@ Language=VBScript %>
<HTML>
<BODY>
<%
'定義,還可以把這一部分放到一個文件中,就像ado的記錄集<!--#include file="adovbs.inc"-->
   const icfirst = 1
   const icsecond = 2
   const icthree = 3
   const icfour = 4
   const icfive = 5
   const icsix = 6
   const icserven = 7
   const iceight = 8
set obj=server.CreateObject("fCom.fc5")
'這里可以使用iceight或者8,但是前者使代碼具有更好的可讀性
a= obj.CallDat(4,iceight) 
Response.Write a
Response.Write "<br>"
a= obj.CallDat(4,8) 
Response.Write a
%>
<P> </P>
</BODY>
</HTML>


配置好虛擬目錄,在ie中執行此asp文件,得到結果如下:

32
32

Asp組件初級入門與精通系列之六

錯誤處理

如果頁面出錯,而沒有對錯誤的處理,那么頁面會顯示一個用戶可能看不懂的錯誤。

在asp腳本中可以使用


 程序代碼
On Error Resume Next
……
if Err.Number<>0 then
Response.Write Err.Description
End if


但是如果組件中出錯呢?這種方法可以捕獲錯誤,但是具體的錯誤如何知道呢?

我們可以在組件中加入錯誤處理,來返回錯誤,這樣可以容易的看到更加詳細的出錯信息,有助于我們排除錯誤。

使用Err.Raise, Raise 被用來生成運行時錯誤

打開vb6,新建Activex Dll工程。工程名修改為fCom,類名修改為fC6


 程序代碼
Option Explicit
Public Sub showerror1()
On Error GoTo ErrorHandle
Dim i As Double
i = 1 / 0
ErrorHandle:
Err.Raise Err.Number, Err.Source, Err.Description
End Sub

'生成自定義的錯誤
Public Sub showerror2()
    Err.Raise 600, "自己定義的錯誤600", "這是描述自己程序的錯誤"
End Sub

Ok,一個組件就寫好了,點擊菜單->文件->生成fCom.dll文件

確定,在目錄下就會有fCom.dll文件

測試

打開visual interdev6.0,生成一個asp文件

 程序代碼
<%@ Language=VBScript %>
<HTML>
<BODY>
<%
'下面這一句很重要
on error resume next
set obj=server.CreateObject("fCom.fc6")
obj.showerror1()
'如果沒有錯誤處理,就會產生一個出錯的界面,很不專業
'從 0–512 的范圍保留為系統錯誤;從 513–65535 的范圍可以用做用戶定義的錯誤。
'如果是保留錯誤,那么組件內錯誤號和頁面處理的錯誤號是相一致的
if err.number <>0 then
Response.Write "錯誤信息" & err.number & err.Description
end if
Response.Write "<br>"
'如果是用戶定義的錯誤,那么在頁面中可以分別進行處理
obj.showerror2()
if err.number<>0 then
       if err.number =600 then
              Response.Write err.number & err.Source  & err.Description
       end if
end if
%>
</BODY>
</HTML>


配置好虛擬目錄,在ie中執行此asp文件,得到結果如下:

錯誤信息11除數為零
600自己定義的錯誤600這是描述自己程序的錯誤

Asp組件初級入門與精通系列之七

在運行前幾章的例子,可能或多或少的都會碰上一些問題

如:組件編譯后,又要修改,發生”權限被拒絕,’f:/csdn/fcom.dll’”等等的錯誤。

當asp頁面瀏覽時,打開任務管理器,會看到一個dllhost.exe,用戶名為IWAM_YANG的進程。IWAM_YANG會根據計算機名而有所不同。

可以使用以下幾種方式來解決

1.  重新啟動iis.

在控制面板中找到管理工具->internet信息服務->右鍵點擊左邊樹圖第二層本地計算機->所有任務->重新啟動IIS即可,這個操作需要一點時間。

此時你可以看到這個dllhost.exe的進程已經關閉

2.  上面這種方法的缺點就是當前所有的網站都被關閉直到重新啟動

有沒有針對單個網站或者虛擬目錄的?有

在控制面板中找到管理工具->internet信息服務->找到你的組件運行的虛擬目錄。->右鍵屬性->第一項虛擬目錄中->應用程序保護->點擊卸載即可。

此時你可以看到這個dllhost.exe的進程已經關閉

3.  如果你覺得麻煩,直接在Windows任務管理器中結束該進程既可

4.  最后一種方法

在控制面板中找到管理工具->組件服務->在樹圖中點擊計算機,我的電腦,正在運行的進程->IIS Out-Of-Process Pooled applications(2860)->右鍵關閉即可

此時你可以看到這個dllhost.exe的進程已經關閉。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线观看网站| 亚洲国产精品成人精品| 91香蕉嫩草影院入口| 亚洲人成电影在线播放| 高清日韩电视剧大全免费播放在线观看| 久久人人爽人人爽人人片亚洲| 隔壁老王国产在线精品| 成人黄色免费看| 国模私拍视频一区| 欧美成人免费观看| 亚洲精品av在线| 久久男人的天堂| 国产精品678| 日韩高清不卡av| 欧美成人一二三| 动漫精品一区二区| 欧美成人性生活| 欧美精品激情视频| 精品视频在线播放免| 久久天天躁狠狠躁夜夜躁2014| 国产欧美精品一区二区三区介绍| 97免费视频在线播放| 亚洲激情成人网| 欧美日韩福利在线观看| 综合av色偷偷网| 91av免费观看91av精品在线| 久久久久久久一区二区| 亚洲男人的天堂网站| 精品国产999| 国产精品一区二区三区久久久| 国产69精品久久久| 亚洲精品白浆高清久久久久久| 亚洲а∨天堂久久精品9966| 国产mv免费观看入口亚洲| 一区二区三区高清国产| 91理论片午午论夜理片久久| 96精品久久久久中文字幕| 亚洲影视中文字幕| 久久人人爽亚洲精品天堂| 精品久久久香蕉免费精品视频| 国产精品久久精品| 欧美体内谢she精2性欧美| 国内精品一区二区三区四区| 亚洲精品白浆高清久久久久久| 51午夜精品视频| 国产精品视频专区| 91高清视频在线免费观看| 韩国美女主播一区| 3344国产精品免费看| 欧美日韩另类视频| 欧美成人精品三级在线观看| 国产午夜精品全部视频在线播放| 中文字幕日韩精品在线观看| 97精品国产97久久久久久春色| 中文字幕亚洲一区二区三区五十路| 97视频网站入口| 国产精品精品国产| 成人h猎奇视频网站| 亚洲成人在线视频播放| 这里精品视频免费| 国产精品第一页在线| 久久久久久噜噜噜久久久精品| 久久久精品2019中文字幕神马| 欧美激情亚洲另类| 欧美寡妇偷汉性猛交| 午夜精品在线观看| 亚洲电影免费观看高清完整版在线观看| 动漫精品一区二区| 亚洲欧美在线免费| 国产成人+综合亚洲+天堂| 欧美xxxx做受欧美.88| 成人妇女淫片aaaa视频| 国产一区二区三区在线视频| 亚洲电影免费观看高清完整版在线| 97超级碰碰碰久久久| 91精品国产高清久久久久久| 久久精品国产免费观看| 日本国产欧美一区二区三区| 欧美日韩一区二区免费在线观看| 国产欧洲精品视频| 国产精品免费小视频| 日韩精品在线免费播放| 中文字幕亚洲欧美在线| 欧美高清理论片| 国产精品视频午夜| 最近2019中文字幕第三页视频| 国产一区二区在线播放| 日本aⅴ大伊香蕉精品视频| 国产97在线亚洲| 伊人久久久久久久久久久| 亚洲男人天堂2019| 按摩亚洲人久久| 91av视频在线免费观看| 国产精品久久久久秋霞鲁丝| 97在线视频免费| 国产视频丨精品|在线观看| 77777亚洲午夜久久多人| 亚洲精品小视频在线观看| 色狠狠av一区二区三区香蕉蜜桃| 欧洲一区二区视频| 91国语精品自产拍在线观看性色| 欧美亚洲成人网| 久久久天堂国产精品女人| 欧美最近摘花xxxx摘花| 最近更新的2019中文字幕| 欧洲精品久久久| 亚洲天堂男人天堂女人天堂| 一区二区三区回区在观看免费视频| 视频直播国产精品| 欧美中文字幕精品| 亚洲娇小xxxx欧美娇小| 久久久中精品2020中文| 国产精品视频1区| 另类图片亚洲另类| 日本三级久久久| 久久在线免费视频| 欧美成人在线网站| 国产精品老牛影院在线观看| 日韩国产欧美精品在线| 国产乱人伦真实精品视频| 亚州精品天堂中文字幕| 欧美另类高清videos| 这里只有精品视频在线| 欧美人与物videos| 亚洲精品www| 精品久久久香蕉免费精品视频| 热久久这里只有精品| 成人a免费视频| 国产丝袜精品第一页| 欧美国产亚洲精品久久久8v| 庆余年2免费日韩剧观看大牛| 国产精品成久久久久三级| 欧美精品第一页在线播放| 日本欧美精品在线| 日韩视频免费在线| 久久精品国产一区| 国产精品劲爆视频| 久久久久久久久国产精品| 亚洲va欧美va在线观看| 国产精品久久久久免费a∨| 国产人妖伪娘一区91| 欧美日韩国产一区二区三区| 欧美又大又粗又长| 精品调教chinesegay| 91亚洲国产成人久久精品网站| 欧美巨猛xxxx猛交黑人97人| 国产亚洲欧美一区| 亚洲第一福利视频| 亚洲白虎美女被爆操| 欧美福利视频在线| 国产精品主播视频| 在线播放国产精品| 91国自产精品中文字幕亚洲| 欧美日韩色婷婷| 一本色道久久88亚洲综合88| 精品av在线播放| 久久久在线视频| 国产91成人在在线播放| 久久精品电影一区二区| 国产激情视频一区| 亚洲mm色国产网站| 久久久久久亚洲精品| 中文在线资源观看视频网站免费不卡| 国产乱人伦真实精品视频|