1. 程式人生 > >Web服務請求處理過程全解

Web服務請求處理過程全解

在一個企業級應用開發中,往往前臺都使用的jsp頁面展現、web應用伺服器使用tomacat,這裡我們就這種情況具體進行說明。

首先先弄清楚幾個概念:

Web Server 和Web應用伺服器的區別

Web Server(Web伺服器)可以解析(handles)HTTP協議。當Web伺服器接收到一個HTTP請求(request),會返回一個HTTP響應(response);web應用伺服器,對請求進行處理,完成業務上的邏輯,例如Tomacat伺服器。

區別:1、應用伺服器處理業務邏輯,web伺服器則主要是讓客戶可以通過瀏覽器進行訪問。
   2、應用伺服器處理業務邏輯,web伺服器是用於處理HTML檔案的。web伺服器通常比應用伺服器簡單,如apache就是web伺服器,Jboss就是EJB應用伺服器。

Jsp和Servlet的區別:

Servlet是一種在伺服器端執行的Java程式,從某種意義上說,它就是伺服器端的Applet。所以Servlet可以像Applet一樣作為一種外掛(Plugin)嵌入到Web Server中去,提供諸如HTTP、FTP等協議服務甚至使用者自已定製的協議服務。而JSP是繼Servlet後Sun公司推出的新技術,它是以Servlet為基礎開發的,Servlet與JSP區別:
(1)程式設計方式不同
JSP是為了解決Servlet中相對困難的程式設計技術而開發的技術,因此,JSP在程式的編寫方面比Servlet要容易的多,Servlet嚴格遵循Java語言的程式設計標準,而JSP則遵循指令碼語言的編制標準。


(2)Servlet必須在編譯以後才能執行
JSP並不需要另外進行編譯,JSP Container會自動完成這一工作,而Servlet在每次修改程式碼之後都需要編譯完才能執行。
(3)執行速度不同
由於JSP Container將JSP程式編譯成Servlet的時候需要一些時間,所以JSP的執行速度比Servlet要慢一些,不過,如果JSP檔案能毫無變化的重複使用,它在第一次以後的呼叫中執行速度就會和Servlet一樣了,這是因為JSP Container接到請求以後會確認傳遞過來的JSP是否有改動,如果沒有改動的話,將直接呼叫JSP編譯過的Servlet類,並提供給客戶端解釋執行,如果JSP檔案有所改變,JSP Container將重新將它編譯成Servlet,然後再提交給客戶端。

編譯servlet和jsp轉換 (web伺服器獲得http請求) 應用伺服器建立servlet

啟動應用服務---——————--------->瀏覽器地址 欄輸入地址------------------------------>web應用伺服器獲得引數----------------->servlet進行處理

web伺服器進行 (應用伺服器進行) |

展現頁面<----------------------HttpResponse<------------ 轉發到指定的jsp(servlet)|

Servlet處理請求的流程:

    1) 客戶端在瀏覽器的位址列中輸入一個請求的URL,按回車後就向伺服器端發起一個http request(由瀏覽器生成)。

    2) 伺服器端的Web Server首先接受到請求,並將請求轉交給容器,容器會根據請求的URL去呼叫客戶端要訪問的Servlet。

    3) 容器會根據web.xml中對Servlet的描述去查詢要訪問的Servlet,若找到,將此Servlet

裝載進虛擬機器並例項化(第一次訪問),然後呼叫Servlet例項中的service方法處理請求,並分配一個執行緒去執行。

注: 當第二次去訪問同一個Servlet時,若容器判斷到該Servlet已經被裝載並例項化,

那麼容器就不會再去建立一個新的Servlet例項,直接呼叫原來那個Servlet例項中的service方法

來處理請求。

    4) 若沒有查詢到,直接返回一個404的錯誤程式碼到客戶端,表示訪問的資源不存在。