WebClass實現動態WEB編程之實踐篇

發表于:2007-05-25來源:作者:點擊數: 標簽:web編程實踐WebClass動態
WebClass實現動態WEB編程之實踐篇 (作者:蘇紅超 2001年01月10日 15:50) 說了這么多的有關WebClass理論方面的東西,想必大家也一定想要親自試一試究竟WebClass是怎么樣一回事情了,那我們就先來看一個小的例子,也慢慢消化一下我們上面講解到的各種理論知
WebClass實現動態WEB編程之實踐篇
(作者:蘇紅超 2001年01月10日 15:50)

  說了這么多的有關WebClass理論方面的東西,想必大家也一定想要親自試一試究竟WebClass是怎么樣一回事情了,那我們就先來看一個小的例子,也慢慢消化一下我們上面講解到的各種理論知識

  啟動VB6集成環境之后,新建一個“IIS應用程序”的項目。這樣缺省的情況下就會創建一個名稱是Project1的工程以及一個叫做WebClass1的缺省的WebClass對象。WebClass的開發環境有兩部分組成:WebClass設計器和代碼窗口。其中的WebClass設計器的地位就像往常的VB表單設計器一樣,通過他可以添加新的HTML模版WebItems,添加Custom Webitems對象,以及在WebItems中添加各種事件處理過程和啟動停止本地的Web Server。當這個項目運行的時候,會初始化WebClass對象,會觸發WebClass_Start事件,也就是說這個事件類似于VB中的Sub Main函數,他會首先被觸發。

  我們來先寫一段最簡單的WebClass程序代碼:

  Option Explicit

  Option Compare Text

  Private Sub WebClass_Start()

   Response.write "<html>"

   Response.write "<body>"

   Response.write "<center>這是我們的第一個WebClass程序!</center>"

   Response.write "<center>當前的系統事件是:" & now() & "</center>"

   Response.write "</body>"

   Response.write "</html>"

  End sub

  好了,我們需要保存這個工程,運行的時候VB會提示我們建立一個新的WEB,是為了可以在VB中運行我們的WebClass工程的時候調試的方便。之后,我們運行這個項目,VB就會自動調用Internet Explorer瀏覽器瀏覽我們的程序,并且你可以隨時在我們的WebClass程序中設置端點來跟蹤各種變量的值,這在普通的ASP程序中是無法想象的事情,但是使用WebClass卻是如此的方便和自由!

  WebClass使用WebItem向瀏覽器提供內容和事件。每一個WebClass都會包含多個WebItems。而WebItem則有兩種類型:HTML Template WebItem和Custom WebItem。通過HTML Template WebItem可以將HTML文件和WebItem聯系在一起,所以在添加WebItem之前必須創建我們需要的HTML文件。值得注意的是:當你在添加HTML模版的時候,如果模版文件和我們的工程文件不在同一個目錄中,則系統會將模版的一個副本拷貝到工程所在的目錄中;如果模版文件和工程文件在同一個目錄中,則系統會重新命名這個模版副本的名字,而我們在需要改動模版的時候,需要改動的是這個模版的副本,而不是它本身!

  WebItem使用方法WriteTemplate()來對響應輸出模版內容。下面我們再來看一個結合了HTML Template WebItem的程序:

  在我們剛才的WebClass1工程中添加一個HTML Template WebItem,系統會提示我們選擇一個HTML文件,我們選擇的HTML文件是test.htm,內容很簡單:

  <html>

  <body>

  <br>這是模版test中的內容:Hello,world!

  </body>

  </html>

  添加之后,我們會在WebClass設計器中的“HTML Template WebItem”下面找到名為“Template1”的一個模版,為了方便,我們更改他的名字為“test”。

  這樣我們的代碼變動如下:

  Option Explicit

  Option Compare Text

  '模版test的Response事件

  Private Sub test_Respond()

    Response.Write "<h1><br>模版test中的response事件響應!</h1>"

    '調用WriteTemplate()方法來處理我們的名叫test的HTML模版文件

    test.WriteTemplate

  End Sub

  Private Sub WebClass_Start()

    '寫一個對用戶的回答

   Response.write "<html>"

   Response.write "<body><h1>"

   Response.write "<center>這是我們的第一個WebClass程序!</center>"

   Response.write "<center>當前的系統事件是:" & now() & "</center>"

   Response.write "</h1></body>"

   Response.write "</html>"

    '將控制權交給名為test的HTML模版,會首先觸發他的Response事件

    Set NextItem = test

  End Sub

  我們運行這一段WebClass程序,則會在瀏覽器中顯示如下(圖1):


  接下來我們看看Custom WebItem,這種類型的WebItem沒有相關的HTML文件,顧名思義,他是用戶自定義的WebItem,他是不可以使用WriteTemplate()方法的。同樣可以通過設置NextItem屬性來觸發Custome WebItem。我們就不再重復了。

  探討完了兩種類型的WebItem,我們來看一個綜合利用這兩種類型WebItem的例子:

  Option Explicit

  Option Compare Text  

  Private Sub custome_Respond()

    Response.Write "<h1><br>用戶自定義WebItem(Custome)的response事件響應!</h1>"

    Response.Write "<br><h1>接下來處理用戶的選擇!</h1>"

    '處理用戶做出的選擇

    Select Case Trim(Request.Form("userchoice"))

     Case "普通工人"

       Set NextItem = workerpage

     Case "銷售人員"

       Set NextItem = salespage

     Case "其它"

       Set NextItem = otherpage

    End Select

  End Sub

  Private Sub otherpage_Respond()

    Response.Write "<h1><br>模版otherpage的response事件響應!</h1>"

    otherpage.WriteTemplate

  End Sub

  Private Sub salespage_Respond()

    Response.Write "<h1><br>模版salespage的response事件響應!</h1>"

    salespage.WriteTemplate

  End Sub

  Private Sub workerpage_Respond()

    Response.Write "<h1><br>模版workerpage的response事件響應!</h1>"

    workerpage.WriteTemplate

  End Sub

  Private Sub WebClass_Start()

   'Webclass啟動的時候生成我們需要的一個表單

   With Response

     .Write "<html><body><h1>"

     .Write "<center>處理表單</center><br>"

     '設置表單提交到我們的Custome Webitem(custome)中,會首先觸發custome的response事件

     .Write "<form name=test1 method=post action=" & URLFor(custome) & ">"

     .Write "選擇你喜歡的職業:<select name=userchoice>"

     .Write "<option value=普通工人>普通工人"

     .Write "<option value=銷售人員>銷售人員"

     .Write "<option value=其它>其它"

     .Write "</select><input type=submit value=確定></form>"

     .Write "</h1></body></html>"

   End With

  End Sub

  其中的三個HTML模版內容如下:

  HTML模版otherpage:

  <html>

  <body>

  <h1>你選擇的是其他職業!</h1>

  </body>

  </html>

  HTML模版salespage:

  <html>

  <body background="">

  <h1>

  <br>你選擇的是銷售人員職業!</h1>

  </body>

  </html>

  HTML模版worker:

  <html>

  <body>

  <h1>你選擇的是普通工人!</h1>

  </body>

  </html>

  運行這個項目之后首先會出現如下葉面,讓用戶選擇喜歡的職業:


  如果用戶做出了自己的選擇,并提交了這個表單,則顯示如下圖:


  我們知道在ASP中可以動態的控制各種HTML元素,從而實現統一個ASP文件可以實現不同的HTML葉面,那么在WebClass中我們如何實現呢?這就需要在WebClass中很重要的標簽處理事件了,也就是在HTML Template WebItem中的ProcessTag事件,也就是說在你調用一個HTML Template WebItem中的WriteTemplate()方法的時候就會觸發他的ProcessTag事件,從而也就開始了對HTML模版的標簽處理程序。這個事件有如下參數:

  Private Sub TemplateItem_ProcessTag(ByVal TagName As String, TagContents As String, SendTags As Boolean)

  End Sub

  其中的參數TagName是在HTML模版中你自行定義的標簽名稱,在默認的情況下,這個標簽的前綴是WC@(當然你也可以自行改為自己想要的名字),在HTML中的代碼一般如下:<WC@test>mytest</WC@test>。

  而參數TagContents則是標簽所包圍的內容了,你可以通過對這個參數的賦值來實現標簽間內容的動態改變。

  參數SendTags表示是否將標簽本身也傳送到瀏覽器,默認的情況下是false,也就是不將標簽本身傳送到瀏覽器。

  我們現在來做一個使用ProcessTag事件的具體例子,還是沿用我們上面的例子,不過我們加上,當用戶選擇的是其他的職業的時候,在otherpage這個HTML模版中我們定義一個標簽:WC@other。

  HTML模版otherpage的代碼修改如下:

  <html>

  <body>

  <h1>你選擇的是其他職業!</h1>

  <WC@other>test</WC@other>

  </body>

  </html>

  這樣當我們選擇了“其他”的選項之后,從我們上面運行過的代碼可以看出在otherpage_Respond()事件中,我們調用了WriteTemplate方法,上面的例子中由于在HTML模版otherpage中沒有任何標簽,所以不會觸發他的ProcessTag事件,但是現在的例子則會觸發相應的ProcessTag事件,我們在相應的ProcessTag事件中的代碼如下:

  Private Sub otherpage_ProcessTag(ByVal TagName As String, TagContents As String, SendTags As Boolean)

  '如果是標簽WC@other,則我們進行相應的動態替換

   If TagName = "WC@other" Then

   TagContents = "標簽里面的內容已經被我們動態替換啦!"

   End If

  End Sub

  運行我們的這個例子,你就會發現位于標簽<WC@other>和</WC@other>之間的內容"test"的確被我們動態的替換掉了!

  通過上面的講解和實際例子的聯系,相信大家對于WebClass的編程思想和思路有了一定的認識和了解,當然我們這篇文章只是引導大家進入WebClass世界,真正的WebClass編程仍然需要大家的不斷實踐才可以掌握,但是僅僅通過我們的這些簡單介紹,大家也一定應當可以了解到WebClass相對于純ASP來講是一個很大的飛躍,他使得我們可以向往常的編寫普通應用程序那樣來編寫各種WEB程序,給我們帶來了極大的方便!我們在WebClass的世界中可以使用所有VB程序可以使用的東西,包括各種ActiveX DLL對象等等,可以享受到VB帶來的所有優點!

  在文章的最后,我們來看一下WebClass實現的一些“秘密”,仍然是用上面的我們的例子,我們的工程保存為Project1,WebClass被命名為WebClass1,則當你運行這個項目的時候,你會發現在瀏覽器中間的URL中顯示的是類似下面的東西:http://localhost/Project1/WebClass1.ASP。

  怎么仍然調用的是一個ASP文件呢?先不要奇怪,我們來看看這個ASP文件的內容究竟是什么吧:

  <%

  Server.ScriptTimeout=600

  Response.Buffer=True

  Response.Expires=0

  If (VarType(Application("~WC~WebClassManager")) = 0) Then

   Application.Lock

   If (VarType(Application("~WC~WebClassManager")) = 0) Then

   Set Application("~WC~WebClassManager") =

          Server.CreateObject("WebClassRuntime.WebClassManager")

   End If

   Application.UnLock

  End If

  Application("~WC~WebClassManager").ProcessNoStateWebClass "Project1.WebClass1", _

   Server, _

   Application, _

   Session, _

   Request, _

   Response

  %>

  看到了吧,其實這個文件是系統自動生成的用來調用我們的WebClass項目的一個文件,通過這個文件的內容我們就可以很容易的理解了其實WebClass在本質上仍然是一個ActiveX DLL組件(在我們編譯這個WebClass項目的時候,你會發現生成的名字是Project1.DLL)!當然這個文件的內容我們是不可以隨便改動的,否則會出現錯誤,這個文件是由系統自動產生的,無需我們多干涉的!

  通過我們的介紹,大家也一定對WebClass有了一個初步的認識和了解了,剩下的事情當然就是需要自己多多通過實踐加以練習了,這樣才能將WebClass技術運用自如!

(以上所有程序均在VB6.0中文企業版,Windows2000 Server中文版,IIS5.0下運行通過)

  <全文完>

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97