1. 程式人生 > >理解Web應用程式的程式碼結構和執行原理(3)

理解Web應用程式的程式碼結構和執行原理(3)

1、理解Web應用程式的執行原理和機制

       Web應用程式是基於瀏覽器/伺服器模式(也稱B/S架構)的應用程式,它開發完成後,需要部署到Web伺服器上才能正常執行,與使用者互動的客戶端是網頁瀏覽器。

瀏覽器負責顯示來自伺服器的資料和接受使用者的輸入資料,也稱為“與使用者互動”;伺服器負責處理瀏覽器的訪問請求並把處理結果(資料或訊息)組織成瀏覽器可以識別的格式文字返回

Web應用程式的主要特點如下

    1瀏覽器主動請求伺服器資源。在Web應用程式中,一般是瀏覽器首先向伺服器發起訪問某個網頁或某些資料的請求。

    2伺服器被動響應瀏覽器請求。伺服器收到瀏覽器的訪問請求後,根據請求的事項執行相應的業務邏輯程式碼,一般還要連線資料庫提取或處理資料,並提取的資料或處理結果,組織成HTMLJSON格式或普通文字,返回給瀏覽器。這個過程稱為響應和處理請求。

    3使用TCP/IPHTTP協議通訊Web應用程式的伺服器瀏覽器之間,約定使用TCP/IPHTTP協議交換資料。其中:TCP/IP是傳輸控制協議,HTTP是文字資料格式協議。

    4Web應用程式的安裝部署簡便。Web伺服器和瀏覽器是一對多的

關係,即一個伺服器可以同時滿足多個瀏覽器的訪問請求。由於瀏覽器一般隨作業系統(如:Windows系統附帶安裝,與Web應用程式無關,不需要開發者維護。所以,Web應用程式開發者只需要考慮在Web伺服器上部署和維護應用程式,相對於C/S架構的應用程式,大大減輕了應用程式的部署、安裝和維護工作量,提高了維護效率。

2、認識JavaWeb應用程式結構

 使用java開發Web應用程式已經走過了漫長的路程,期間出現過多種典型的Web應用程式結構。包括:

2.1  JSP頁面結構

瀏覽器直接請求JSP頁面,JSP中包含了處理各種業務的邏輯程式碼。其結構圖如下:

  該種結構的特點是大量

Java 指令碼程式碼直接嵌入在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頁面,即檢視;

5JSP頁面將資料嵌入到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伺服器,傳送訪問ServletHTTP請求。

2Web伺服器接收到請求後,傳遞給Servlet容器。

3Servlet容器初始化Servlet例項,呼叫例項的Service()方法,並向其傳遞兩個物件引數:表示請求的HttpServletRequest物件和表示響應的HttpServletResponse物件。

4Servlet例項使用HttpServletRequest物件獲取客戶的請求資訊,然後進行相應的處理。

5Servlet例項將處理結果通過HttpServletResponse物件返回給容器,容器負責確保處理結果正確地傳送給瀏覽器,同時將控制權返回給Web伺服器。

6Servlet一旦例項化就一直儲存在記憶體中,直到Web伺服器停止執行應用程式時,再銷燬Servlet例項。

提示Web瀏覽器並不直接和Servlet通訊。Servlet是由Servlet容器載入和執行的。常用的MIME型別有:text/htmlapplication/pdfvideo/quicktimeapplication /javaimage/jpegapplication/jarapplication/octet-streamapplication/x- zip等等。