- JSP應用與開發技術(第3版)
- 馬建紅 李學相 韓穎 王瑞娟 張晗
- 2624字
- 2020-06-30 17:13:18
1.1 Web應用程序開發基礎知識
WWW(World Wide Web)即全球廣域網,也稱為萬維網。它是一種基于超文本和HTTP的、全球性的、動態交互的、跨平臺的分布式圖形信息系統,是建立在Internet上的一種網絡服務,為瀏覽者在Internet上查找和瀏覽信息提供了圖形化的、易于訪問的直觀界面,其中的文檔及超級鏈接將Internet上的信息節點組織成一個互為關聯的網狀結構。萬維網并不等同互聯網,萬維網只是互聯網提供的服務之一。
從表現形式上來看,基于Web的應用程序是許多網頁的集合,這些網頁可以與其他網頁進行交互,也可以與Web服務器上的其他各種資源(如數據庫或Web服務)進行交互。
為了規范這種Web頁面之間的交互流程,保證客戶端和服務器端之間能很好地通信,在網絡上必須采用一個規范性的協議(HTTP通信協議)來定義各種Web應用上的服務細節。
1.1.1 HTTP通信協議概述
HTTP(Hypertext Transfer Protocol)通信協議是目前在Internet上應用最廣泛的通信協議之一。HTTP通信協議允許客戶端向服務器提出基于HTTP格式的“請求”(Request),而服務器解析請求和完成請求的處理后,將根據實際的處理結果向請求端傳回基于HTTP的“回應”(Response)。根據HTTP通信協議,客戶端和服務器端的交互主要由以下四個步驟組成。
(1)當客戶端向Web服務器發出請求時,Web服務器將會為該客戶開啟一個新的連接。
(2)通過這個連接,用戶(服務請求端)可以將HTTP請求通過網絡,傳送給Web服務器。
(3)當Web服務器收到HTTP請求時,將根據請求內容進行相應的處理,并將處理結果包裝成HTTP回應。
(4)服務器會將HTTP回應傳送給用戶。只要用戶接收到HTTP回應,Web服務器就會關閉同客戶端的連接,從而結束本次通信。
圖1-1說明了客戶端與Web服務器通信的整個流程,從圖中可以看到,HTTP通信協議用來規范在客戶端和服務器之間的數據傳輸格式,更重要的是,HTTP通信協議定義了從客戶端發送HTTP請求到服務器端返回HTTP響應的整個流程。

圖1-1 客戶端(客戶)與服務器端(Web服務器)之間的交互關系
1.1.2 傳統的Web應用程序
目前,大多數的Web應用程序都是基于HTTP通信協議的,即一個典型的基于Web的服務器和客戶端應用程序必須具備“接受客戶端的請求”和“將處理結果回應給客戶端”這兩種能力。
在Web開發的起步階段,程序員是用CGI(Common Gateway Interface,公共網關接口)程序來編寫Web應用程序組件的,即Web服務器之間及客戶端和服務器之間是通過CGI來互相交換信息。當客戶端向Web服務器送出一個HTTP請求時,Web服務器將根據其中的CGI內嵌服務程序,執行如下動作:
如果客戶端請求的內容是靜態的HTML網頁數據(即這些數據不是從數據庫等數據源動態獲取生成),Web服務器將會根據事先編寫好的處理程序自行處理,產生回應信息并返回。
如果涉及動態數據(如查詢在服務器上的數據),則由內嵌的CGI程序負責處理,處理結束后,CGI程序會先把結果回送給Web服務器,再由Web服務器傳回用戶端。
整個流程如圖1-2所示。

圖1-2 CGI程序基本運行流程
從實際的運行效果來看,雖然CGI程序能在一定程度上解決客戶端與服務器端之間的交互問題,但是基于CGI程序本身的特點,這樣的開發模式隱含了一些可能導致系統效率降低和項目可維護性變差的缺點。
從運行方式上來看,CGI程序屬于“操作系統進程”,因此對于每個HTTP的請求,服務器端都必須對應地開啟一個CGI的服務,這加重了系統整體資源負擔。
CGI程序通常不具有“平臺獨立性”,它甚至可以用多種語言來編寫,如果轉換到其他系統平臺,程序可能要做適當的改寫或重寫。
最為重要的是,CGI無法很好地形成一種通用的規范。事實上,不同類型的服務器CGI代碼往往從請求風格到服務方式,都是不同的。
在實際的應用中,以上三個特點確實影響到Web應用程序的執行性能,因此需要一個能夠取代CGI的Web開發技術,來滿足“低負載、高重用和規范統一”等通用要求。
JSP技術恰好可以完美地取代CGI程序,Java的“平臺無關性”可以保證用JSP編寫出來的代碼能夠在多個平臺之間很好地遷移。同時,JSP語言是基于Java虛擬機的,不會對系統產生嚴重的資源負載。而且,不同平臺上的Java語言及其虛擬機均采用了同一類標準(基于Java的標準),因此,JSP可以滿足“規范統一”這個要求。
1.1.3 Web結構
Web主要由兩個部分組成,其結構如圖1-3所示:提供Web信息服務的服務器端網站及向網站提出信息內容瀏覽要求的客戶端瀏覽器。服務器端網站存放包含各種形態的多媒體信息網頁,客戶端主要包含各種可以瀏覽網頁內容的瀏覽器軟件,目前通用的瀏覽軟件為Windows操作系統的Internet Explorer(IE)瀏覽器。

圖1-3 Web結構
了解Web結構的初步概念后,下面繼續針對其中幾個重要的技術內容進行講解。
1. 客戶端與瀏覽器
要打開和瀏覽網絡上的網頁文件,必須通過瀏覽器程序,如IE、Netscape等。而使用瀏覽器打開網頁的這一端,稱為客戶端。因為網站為上線用戶提供打開網頁的服務,因此用戶也可稱為客戶。
瀏覽器的功能主要是解釋HTML文件中的內容,若HTML中同時含有客戶端執行的描述語言,例如VBScript或JavaScript,則瀏覽器同樣會對其進行解釋的操作,最后將整份網頁的執行結果呈現在用戶的瀏覽器窗口中。
2. 服務器端與服務器
與客戶端相比,提供瀏覽網頁服務的一方稱作“服務器端”,而用來放置這些網頁信息的計算機,則稱為服務器。
服務器的功能并不只是單純地存放網頁信息,任何可提供網絡服務的計算機都是服務器。例如,提供網頁信息的稱為網頁服務器,而提供文件上傳與下載功能的則稱為文件服務器。
3. 通信協議
在網絡上要能彼此互通信息就必須遵循一定的溝通方式,這些溝通方式即所謂的通信協議,表1-1所示為WWW中較為常用的通信協議。
表1-1 WWW常用通信協議

只有雙方都使用相同的通信協議,才能建立起連接通道。
4. 全球資源定位器—— URL
URL的英文全稱為Uniform Resource Locator(全球資源定位器),是對可以從互聯網上得到的資源的位置和訪問方法的一種簡潔的表示,是互聯網上標準資源的地址。互聯網上的每個文件都有一個唯一的URL,它包含的信息指出文件的位置及瀏覽器應該怎么處理它。當用戶想要打開位于遠程網站主機上的網頁時,必須指定其URL位置,也就是通常所講的網址,它從左到右由下述部分組成。
Internet資源類型(scheme):指出WWW客戶程序用來操作的工具。如“http://”表示WWW服務器,“ftp://”表示FTP服務器,“gopher://”表示Gopher服務器,而“new:”表示Newgroup新聞組。
服務器地址(host):指出WWW頁所在的服務器域名。
端口(port):有時需要,對某些資源的訪問來說,需給出相應的服務器提供端口號。
路徑(path):指明服務器上某資源的位置(其格式與DOS系統中的格式一樣,通常由“目錄/子目錄/文件名”這樣的結構組成)。與端口一樣,路徑并非總是需要的。
URL地址格式排列為:scheme://host:port/path。例如,http://www.oracle.com/technetwork/java/index.html就是一個典型的URL地址。當瀏覽器接收了用戶輸入的一個網址后,便會根據其中所提供的信息,向服務器提出網頁瀏覽請求。
- Advanced Quantitative Finance with C++
- 自己動手寫搜索引擎
- Java面向對象軟件開發
- Web Development with Django Cookbook
- Getting Started with SQL Server 2012 Cube Development
- Python Data Analysis(Second Edition)
- JavaScript動態網頁開發詳解
- Instant RubyMotion App Development
- Java編程的邏輯
- Creating Mobile Apps with jQuery Mobile(Second Edition)
- Spring Boot+MVC實戰指南
- OpenMP核心技術指南
- OpenCV 3計算機視覺:Python語言實現(原書第2版)
- PHP與MySQL權威指南
- Apache Solr PHP Integration