<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      用VB完成WEB交互式應用

      [摘要]摘要 本文介紹了Internet應用程序及相關概念,并通過一個示例,介紹了使用VB創建IIS應用程序來構建交互式WEB應用的方法。   關鍵字 Internet應用程序,IIS,HTML   Mic...
      摘要 本文介紹了Internet應用程序及相關概念,并通過一個示例,介紹了使用VB創建IIS應用程序來構建交互式WEB應用的方法。
        關鍵字 Internet應用程序,IIS,HTML

        Microsoft Visual Basic 6.0增強了創建Internet應用程序的功能。Internet應用程序是一種編譯好的交互式應用程序,通過Internet或intranet能夠訪問這種應用程序。在VB中有兩種類型的Internet應用程序:基于服務器的IIS應用程序和基于客戶的DHTML應用程序;诜⻊掌鞯腎IS應用程序駐留在WEB服務器上,應用程序使用HTTP Internet協議接受從客戶端(如WEB瀏覽器)來的請求,處理相關的代碼,然后向瀏覽器返回數據。IIS應用程序是一個VB應用程序,它在一個動態的、基于瀏覽器的應用程序中使用HTML和已編譯VB代碼的組合。對開發者來說,一個IIS應用程序是由一些被稱為WebClass的特殊類型對象組成,而WebClass包含一系列稱為Webitems的資源。WebClass是一個駐留在WEB服務器上并響應瀏覽器輸入的VB部件,它作為應用程序的中央功能單元,處理來自瀏覽器的數據并向用戶發送響應信息。
        本文通過示例一個WEB應用--電話號碼查詢,說明創建IIS應用程序的一般過程。運行此程序需要IIS3.0、IIS4.0 或 PWS。用戶在查詢界面輸入要查詢部門相應的漢語拼音縮寫或名稱縮寫,如為空,則提示輸入部門名稱;系統以表格形式返回模糊查詢結果。

      一、創建工程及模板
      電話查詢界面模板文件的代碼如下:
      <html>
      <body bgcolor="#F6FAFF">
      <p align="center"><font size="6" face="幼圓"><strong>辦公電話號碼查詢</strong></font></p>
      <p><font size="4" face="黑體">查詢說明:</font>
      您可以直接輸入各部門的全名或主要名稱,也可輸入各部門漢語拼音首字符縮寫串;查詢結果將模糊匹配您所輸入的關鍵字.如輸入'網絡中心'或'wlzx'.</p>
      <hr size="1" color="#008080">
      <form method="POST">
      <wc@error></wc@error>
      <p align="center"><font size="4">請輸入要查詢的部門:</font></p>
      <wc@FullName></wc@FullName>
      <p align="center">
      <font size="4">
      <input type="submit" name="submit" value="發送" style="font-size: 15pt; font-family: 幼圓"> <input type="reset" name="reset" value="重設" style="font-family: 幼圓; font-size: 15pt"></font></p>
      </form>
      <hr size="1" color="#008080">
      </body>
      </html>
      可以看到,界面文件除了基本的HTML元素外,沒有用于數據輸入的元素,但多了"wc@error"等標記。Wc@標記是模板中使用的替換指示符。替換指示符是標記要用特定內容替換的位置,以備在用戶請求時執行文本替換過程。這些標記具有標記前綴和標記名,標記前綴用于指示WebClass必須進行一個替換操作。通過設置每一個模板的TagPrefix屬性定義標記前綴。Wc@是VB的缺省標記前綴。標記名可以識別替換的區域。執行文本替換是在一個WebClass模板文件中掃描特殊的指示符標記,然后用自定義的內容替換指示符或它們的內容。當WebClass在一個事件過程中響應WriteTemplate方法時,它自動處理這些指示符。替換完成后,響應用戶一個替換過的HTML文件。

      對含有標記前綴文件的處理順序是:VB處理用戶的代碼,并從應用程序的一個事件處理程序中調用WriteTemplate方法。WebClass根據ProcessTag事件的代碼處理并替換文件中所有前綴標記,然后將模板文件寫到Response對象,WriteTemplate方法再發送模板文件到瀏覽器。

      啟動VB6,在新建工程中選擇IIS應用程序。首先看到WebClass設計器,包含"HTML模板WebItems"和"自定義WebItems"。右擊WebClass設計器的"HTML模板WebItems",選擇"添加HTML模板",導入上述界面模板文件,然后將其命名為Phone_Search。

      二、實現代碼
      雙擊WebClass設計器右邊窗格的Form1標記,為表單提交動作定義一個自定義事件。該事件主要任務是接收用戶輸入的要查詢數據,并把查詢數據提交到數據庫。具體代碼見清單。

      IIS應用程序應該指定用戶首次訪問時顯示的內容,因此,在WebClass_Start事件中將WebClass的NextItem屬性設置為Phone_Search,然后在Phone_Search_Respond事件中用模板的WriteTemplate方法將頁面發送到客戶端瀏覽器。在將頁面發送到瀏覽器時,系統會遇到模板中的wc@標記,此時它會自動調用Phone_Search的ProcessTag事件,并把標記名字作為參數傳遞給事件處理過程Phone_Search_Respond,在這個過程中返回插入文檔內定制標記所在位置的HTML代碼。當在表單中輸入數據并提交表單時,則執行Phone_Search_Form1過程,它接收表單的數據,如沒有錯誤則調用自定義事件處理過程Searphone,該過程提交輸入數據到數據源,執行查詢并以表格形式返回結果集。

      代碼清單:
      Option Explicit
      Option Compare Text
      '聲明全局量
      Dim FullName As String
      Dim strError As String
      '處理標記元素過程
      Private Sub phone_search_ProcessTag(ByVal TagName As String, TagContents As String, SendTags As Boolean)
      Select Case LCase(TagName)
      '錯誤信息
      Case "wc@error"
      If strError <> "" Then
      TagContents = "<hr><font color=""red"">"
      TagContents = TagContents & "請輸入要查詢的部門!" & _
      strError & "
      <hr></font>
      <hr>"
      End If
      '查詢的部門
      Case "wc@FullName"
      TagContents = "<center><input type=""text"" value=""" & FullName & """
      name=""FullName""></center>"
      End Select
      End Sub
      '響應用戶請求過程
      Private Sub phone_search_Respond()
      '響應用戶請求,輸出頁面
      phone_search.WriteTemplate
      End Sub

      Private Sub phone_search_Form1()
      strError = ""
      '獲取表單值
      FullName = Request("FullName")
      '測試是否為空
      If FullName = "" Then strError = strError & "<i>部門不能為空!</i>"
      '如表單輸入值為空,則提示輸入數據,否則調用查詢過程
      If strError <> "" Then
      Set NextItem = phone_search
      Else
      SearPhone
      End If
      End Sub

      Private Sub WebClass_Start()
      Set NextItem = phone_search
      End Sub

      Public Sub SearPhone()
      Dim Mysql As String
      Dim Dbconn As New ADODB.Connection
      Dim mrd As New ADODB.Recordset
      '打開數據源
      Dbconn.Open "telphone"
      '構造查詢SQL語句
      Mysql = "select * from phone where depart like '%" & FullName & "%'" & _
      " or depart_p like '%" & FullName & "%'"
      '執行SQL查詢
      Set mrd = Dbconn.Execute(Mysql)
      '輸出查詢結果
      With Response
      .Write "<html>"
      .Write "<body>"
      .Write "<title>Search Results</title>"
      .Write "<h1><font face=""Arial"">查詢結果如下:</font></h1>"
      If mrd.BOF And mrd.EOF Then '沒有符合條件的值
      .Write "<center>對不起,沒有相應的部門!</center>"
      Else '有符合條件的值,以表格形式輸出
      .Write "<center>"
      .Write "<table border=""5"" wide=""50%"">"
      .Write "<tr><td>部 門</td><td>電 話</td>"
      Do While Not mrd.EOF
      .Write "<tr><td>"
      .Write mrd("depart")
      .Write "</td><td>"
      .Write mrd("phone_no")
      .Write "</td>
      "
      mrd.MoveNext
      Loop
      End If
      .Write "</table>"
      .Write "<h1><font face=""Arial"">謝謝使用</font></h1>"
      .Write "</body>"
      .Write "</html>"
      End With
      '釋放變量,關閉數據庫連接
      Set mrd=Nothing
      Dbconn.close
      End Sub

      本例程使用了ACCESS數據庫表Phone,DSN名為Telphone,表結構及部分示例數據如下。
      Phone表結構:
      字段名 類型 長度 說明
      PhoneID 自動編號 長整形 主鍵
      Depart 文本 20
      Depart_p 文本 10
      Phone_no 文本 7
      示例數據:
      1 網管中心 Wgzx 2419039
      2 網管辦 Wgb 2419187
      3 計算機系辦公室 Jsjxb 2419237
      4 計算機系主任辦公室 Jsjxb 2419236
      5 計算機系實驗室 Jsjxsys 2419234

      如用戶輸入"網管"或"wg"后,程序響應其請求。

      三、部署IIS應用程序
      一個IIS應用程序必須作為一個進程內部件或一個DLL文件被創建。象編譯其它VB工程一樣,選擇生成DLL文件。IIS應用程序編譯時產生以下文件:一個VB用于運行工程的DLL文件;一個在瀏覽器中宿主應用程序并產生它的運行時部件的ASP文件;一個在編譯和連接工程時由連接器產生的EXP文件;一個包含工程的窗口布局信息的VBW文件。然后使用VB的打包和展開向導來部署IIS應用程序。必須部署的應用程序包括DLL文件,與工程相關的HTML頁面及被HTML頁面引用的文件。

      四、小結
      用VB構造服務器端的IIS應用程序比其它的WEB應用開發具有減少每個用戶部署費用,可重復使用部件,代碼和HTML分離,高效等優點;而且由于對VB環境的熟悉,可以充分利用傳統的編程方法。

      參考資料:Microsoft MSDN 之Visual Basic文檔
      (本示例程序在Windows 98+PWS下運行成功) 


      日韩精品一区二区三区高清