理解Web應用程式的程式碼結構和執行原理(3)
1、理解Web應用程式的執行原理和機制
Web應用程式是基於瀏覽器/伺服器模式(也稱B/S架構)的應用程式,它開發完成後,需要部署到Web伺服器上才能正常執行,與使用者互動的客戶端是網頁瀏覽器。
瀏覽器負責顯示來自伺服器的資料和接受使用者的輸入資料,也稱為“與使用者互動”;伺服器負責處理瀏覽器的訪問請求,並把處理結果(資料或訊息)組織成瀏覽器可以識別的格式文字返回。
Web應用程式的主要特點如下:
1)瀏覽器主動請求伺服器資源。在Web應用程式中,一般是瀏覽器首先向伺服器發起訪問某個網頁或某些資料的請求。
2)伺服器被動響應瀏覽器請求。伺服器收到瀏覽器的訪問請求後,根據請求的事項執行相應的業務邏輯程式碼,一般還要連線資料庫提取或處理資料,並把提取的資料或處理結果,組織成HTML或JSON格式或普通文字,返回給瀏覽器。這個過程稱為響應和處理請求。
3)使用TCP/IP和HTTP協議通訊。Web應用程式的伺服器與瀏覽器之間,約定使用TCP/IP和HTTP協議交換資料。其中:TCP/IP是傳輸控制協議,HTTP是文字資料格式協議。
4)Web應用程式的安裝部署簡便。Web伺服器和瀏覽器是一對多的
2、認識JavaWeb應用程式結構
使用java開發Web應用程式已經走過了漫長的路程,期間出現過多種典型的Web應用程式結構。包括:
2.1 JSP頁面結構
瀏覽器直接請求JSP頁面,JSP中包含了處理各種業務的邏輯程式碼。其結構圖如下:
該種結構的特點是大量
2.2 JavaBean頁面結構
為了改進JSP頁面結構的不足,我們將處理後臺資源的邏輯程式碼用Bean進行封裝,發展成為帶Bean的頁面結構,再結合自定義標籤,可將一部分程式碼從JSP中移出,獲得較為乾淨的JSP頁面。如下圖所示:
但是這種結構隨著功能的增加,層次變得不夠清晰,可擴充套件性不好,不利於應用程式的維護。
2.3 MVC結構
MVC是三個英文單詞Model-View-Control首字母的縮寫,中文就是“模型-檢視-控制器”的意思。
MVC結構將Web應用程式程式碼按照基本任務劃分為三個部分: 模型實現資料封裝和業務邏輯,檢視實現使用者互動介面,控制器整合模型和檢視,並根據請求呼叫對應的模型和檢視。
MVC結構比較科學、合理地解決了任務分工與整合,業務功能擴充套件和程式碼維護的問題,被業界廣泛接受,是最典型、最成功的網路應用程式結構。MVC結構處理使用者請求的基本步驟如下:
(1)瀏覽器向伺服器發出訪問請求,伺服器收到請求後轉發給控制器;
(2)控制器檢查客戶請求URL,初始化管理物件,呼叫相應的業務模型來處理請求;
(3)模型包括處理客戶請求的所有業務規則,它與資料庫和檔案資源互動,將提取的資料包裝成物件返回給控制器;
(4)控制器接收模型返回的資料,選擇顯示資料的JSP頁面,即檢視;
(5)JSP頁面將資料嵌入到HTML元素中,生成標準的HTML頁面文字,返回給瀏覽器。
(6)瀏覽器顯示HTML網頁,完成一個請求和響應回合。
使用java實現MVC結構的典型方案,是使用Bean建立模型,JSP建立檢視,Servlet實現控制。
3、理解Servlet與Servlet容器
Servlet本身是一種特定的執行機制,有一套規範的程式設計介面(API),支援請求和響應過濾器。但我們一般將Servlet理解為程式設計師編寫的符合Servlet規範,並由Servlet容器來呼叫和執行的Java類。它可以對任何型別的請求進行處理和響應,別稱“伺服器小程式”。
編寫一個Servlet,就是按照Servlet規範編寫一個Java類。但是它沒有main方法,不能獨立執行,必須部署到Servlet容器中,由容器來例項化並呼叫它的相關方法(如:doGet()和doPost()方法)。
Servlet容器也叫Servlet引擎,是Web伺服器的一部分。它在Servlet生命週期內管理Servlet,並負責解析基於MIME的請求文字,以及格式化基於MIME的響應資料。
Tomcat就是一款包括Servlet容器的Web伺服器。Tomcat伺服器接受客戶請求並做出響應的過程如下:
1)客戶端瀏覽器訪問Web伺服器,傳送訪問Servlet的HTTP請求。
2)Web伺服器接收到請求後,傳遞給Servlet容器。
3)Servlet容器初始化Servlet例項,呼叫例項的Service()方法,並向其傳遞兩個物件引數:表示請求的HttpServletRequest物件和表示響應的HttpServletResponse物件。
4)Servlet例項使用HttpServletRequest物件獲取客戶的請求資訊,然後進行相應的處理。
5)Servlet例項將處理結果通過HttpServletResponse物件返回給容器,容器負責確保處理結果正確地傳送給瀏覽器,同時將控制權返回給Web伺服器。
6)Servlet一旦例項化就一直儲存在記憶體中,直到Web伺服器停止執行應用程式時,再銷燬Servlet例項。
提示:Web瀏覽器並不直接和Servlet通訊。Servlet是由Servlet容器載入和執行的。常用的MIME型別有:text/html,application/pdf,video/quicktime,application /java,image/jpeg,application/jar,application/octet-stream,application/x- zip等等。