程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> Web應用程序開發技術

Web應用程序開發技術

編輯:C語言基礎知識

  ----Internet無疑是一種重要的信息傳播媒體,隨著其迅猛發展,將會有越來越多的企業、商團、政府機關、學校、科研機構需要在Internet上建立自己的網點。建設一個網點,硬件上需要專用服務器、集線器、路由器,租用數據通信用的專線,軟件上需要安裝網絡操作系統和Internet服務器(www、FTP和gopher服務器),更為重要的是,需要編寫大量的Internet服務器應用程序。這種應用程序接收Internet服務器傳送過來的用戶請求,從內部數據庫檢索出用戶需要的數據,再將數據傳送給用戶。目前在Internet上廣泛應用的是www系統,這種系統用Html文件格式(即通常所說的網頁)傳播信息,用統一資源定位符(URL)連接世界各地計算機上的信息資源,按照HTTP協議在浏覽器和www服務器之間通信。www服務器又稱為web服務器,相應的服務器應用程序稱為web應用程序。在Windows操作系統下,web應用程序可分為兩種類型:CGI(CommonGateInterface)應用程序和ISAPI(NSAPI)應用程序。這兩種應用程序的功能是一樣的,都是接收web服務器傳送過來的用戶請求,作出響應,將用戶需要的數據以網頁或其它形式傳送給用戶。它們的區別在於,前者用標准輸入輸出或文件在web服務器和web應用程序之間傳送信息,後者則是一種動態聯接庫程序(DLL),其數據可被web服務器直接訪問。ISAPI是指Microsoft的Internet信息服務器(IIS)編程接口,而NSAPI則指Netscape的Internet服務器編程接口。本文將以Borland公司的C++Builder編寫ISAPI(NSAPI)程序的方法為例,介紹開發web應用程序的原理和方法。這種應用程序在32位的Windows操作系統下運行,假如網點使用WindowsNT,則本身就有IIS(包括www、ftp、gopher三個服務器),開發、運行都很方便。
  
   HTTP協議和HTML規范
   ----眾所周知,Internet的底層通信協議是TCP/IP協議,在Internet上傳送的數據被劃分為一個個的IP數據報,每一個IP數據報都指明信源和信宿的地址,沿途的網關按照信宿地址決定數據報的去向。而TCP協議則為通信的雙方建立一條虛電路,保證所有的數據報都能按正確的次序到達目的地。TCP/IP只是實現計算機之間的二進制數據傳輸,對這些數據如何解釋,則是上層協議的事情。開發web應用程序的程序員並不需要過問TCP/IP的工作,我們所必須了解的是其上層協議HTTP。
  
   ----HTTP是一個應用層協議,目前廣泛應用於web浏覽器和web服務器之間的通信。HTTP用字符串進行通信,所傳送的信息稱為HTTP消息(HTTP-Message)。HTTP消息有兩種類型:浏覽器傳送給服務器的請求消息和服務器傳送給浏覽器的響應消息,其基本格式如下:請求消息:
  
   MethodRequest-URIHTTP-Version;請求行
   general-header;通用消息頭
   request-header;請求消息頭
   entity-header;實體消息頭
   ;空行
   message-body;消息實體
   其中三種消息頭的次序是任意的。
   響應消息:
   HTTP-VersionStatus-CodeReason-Phrase;狀態行
   general-header;通用消息頭
   response-header;響應消息頭
   entity-header;實體消息頭
   ;空行
   message-body;消息實體
  
   ----其中三種消息頭的次序同樣是任意的。
  
   ----對於請求消息,請求行是必不可少的,其余部分是可選的。請求行中的Method(方法)指定具體的請求操作,這些方法是HTTP指定的,常用的方法有:
  
   ----GET浏覽器要求從服務器處獲得信息。
  
   ----HEAD作用等同於GET但是服務器在響應時不必返回消息實體。通常用來
  
   ----測試信息資源是否可用,是否已更改。
  
   ----POST浏覽器向服務器傳送信息。
  
   ----PUT浏覽器要求將消息中所包含的消息實體寫入服務器。
  
   ----請求行中的Request-URI是信息資源的定位符,類似於我們通常所說的"網址",但網址通常是指某個網點IP地址對應的域名,而URI則要進一步指明網址下的路徑、網頁文件名、web應用程序名等信息資源。請求行中的HTTP-Version則指明浏覽器所能執行的HTTP協議版本號,多數是1.0或1.1。例如,當我們要求訪問某個abc公司網址www.abc.com上的網頁xyz.htm時,浏覽器將會發出如下請求行:
  
  
   ----GEThttp://www.abc.com/xyz.htmHTTP/1.0
  
   ----請求消息中的通用消息頭、請求消息頭和實體消息頭的一般格式是
  
   ----field-name:field-value
  
   ----也就是說,消息頭由多個字段(field)組成,每個字段一行(HTTP用回車換行符CRLF作為每一行的結束標志),每行由字段名和字段值組成,彼此用冒號隔開。HTTP對於每一個字段的意義及其對應的值都有具體的規定。可供使用的字段很多,但並不是每次發送請求消息都要使用所有的字段,而是根據需要使用其中的若干個。以下是一個請求消息的具體例子:
  
   GET/default.htmHTTP/1.0
   Host:http://default
   Accept:text/html
   User-Agent:Mozilla/2.0
   (compatible;NEWTActiveX;Win32)
   對於請求消息,常用的字段有:
   通用消息頭:Cache-Control、Connection、Date
   請求消息頭:Accept、Authorization、
   From、Host、If-Modified-Since、
   Referer、User-Agent
   實體消息頭:Content-Encoding、
   Content-Length、Content-Type、EXPires
  
   ----限於篇幅,本文無法具體解釋每一個字段的含義,有愛好的讀者可參閱參考文獻[1]。
  
   ----請求消息中的消息實體(Message-Body)是浏覽器要傳送給服務器的數據。使用GET方法的請求消息一般不會有消息實體,而POST和PUT方法則一般會有消息實體,其具體內容可以是任何數據,由實體消息頭中的字段指明其編碼方式、類型和長度。
  
   ----對於響應消息,開頭的狀態行是必不可少的,其中開頭的HTTP版本號(HTTP-Version)指明服務器所執行的HTTP協議是哪個版本的,然後是由3位數字組成的狀態碼(Status-Code),說明對浏覽器請求消息的響應狀態,最後的原因短語(Reason-Phrase)是對狀態碼的簡短文字說明。
  
   ----狀態碼的第一位數字定義響應狀態的類型,可能的數值及其含義如下:
  
   1xx:已接收到請求消息,正在處理中。
  
   2xx:對接收到的請求消息已成功地作出響應。
  
   3xx:必須采取進一步的行動才能完成請求。例如,請求消息中的URI對應多個資源,或請求消息要訪問的資源的URI已改變,或必須通過代理服務器才能訪問等。
  
   4xx:浏覽器錯誤,請求消息語法錯誤或請求無法執行。
  
   5xx:服務器錯誤,服務器無法執行一個有效的請求。響應消息的狀態行之後是與請求消息類似的、由各種字段名和字段值組成的消息頭,對於響應消息,常用的字段有:
   ----通用消息頭:Date
  
   ----響應消息頭:Server、www-Authenticate、Location
  
   ----實體消息頭:Allow、Content-Encoding、Content-Length、Content-Type、
  
   ----Expires、Last-Modified
  
   ----響應消息最後的實體(Message-Body)部分是服務器按照浏覽器的請求傳送回來的數據,最常見的情況就是一個網頁文件的內容。以下是一個響應消息的具體例子,最後一行是消息實體:
  
   HTTP/1.0200OK
   Server:Microsoft-PWS-95/2.0
   Date:Thu,15Oct199807:40:14GMT
   Content-Type:text/html
   Content-Length:21
   Content:
  
   Hi,gladtomeetyou!
  
   ----通常,上述消息通信過程是由用戶浏覽某個網頁而發起的。網頁是一個按照HTML規范編寫的純文本文件,其基本框架結構如下:
  
   <HTML>
   <HEAD>
   <T99vLE>網頁標題</T99vLE>
   </HEAD>
   <BODY>
   ......(網頁的具體內容)
   </BODY>
   </HTML>
  
   ----關於HTML規范的具體內容,可參見參考文獻[2]。其實,我們完全可以通過實驗方法來把握這個規范。利用一些網頁編輯軟件(例如Microsoft的FrontPage)可以直觀地設計頁面,然後觀察所生成的HTML文本,便可以輕而易舉地學會編寫HTML文件。
  
   ----在每個網點上都有一個默認網頁,當用戶在浏覽器上指定一個網點的網址時,浏覽器向該網址上的web服務器發出一個請求消息,其中的URI即為該網點web服務器的根目錄。web服務器接收到這個消息後,認為默認網頁就是用戶需要的信息資源並將之傳送給浏覽器。網頁上包含各種鏈接,其基本格式是:
  
   ----<Ahref="URI">說明文字</A>
  
  
   ----當用戶點擊這些鏈接時,就有可能啟動浏覽器與服務器的再次通信。鏈接中的URI可能是同一個網頁中的某個節點,或者是另一個網點的網址,或者是網點上的某一個網頁或其它已存放在網點服務器上的文件。這些都由web服務器自動作出響應,不需要web應用程序的介入。對於編寫web應用程序的程序員,所關心的是一種稱為"查詢"(Query)的鏈接,例如,在網頁中設計如下鏈接:
  
   ----<Ahref=http://www.Tside.com/Scripts/handll.dll?MyQuery>查詢服務器</A>當用戶點擊這個鏈接時,浏覽器將會向服務器發出類似於如下的請求消息
  
   ----GET/Scripts/handll.dll?MyQueryHTTP/1.0
  
   ----Host:http://www.Tside.com網點www.Tside.com上的web服務器接收到這樣的請求消息後,將會向web服務器根目錄下的子目錄Scripts下的web應用程序handll.dll傳送查詢字串"MyQuery",由web應用程序作出響應。通過這種方式,我們可將各種服務功能放置在網頁文件中,用不同
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved