1. 程式人生 > >Jsp 和 Servlet 的對比學習

Jsp 和 Servlet 的對比學習

JSP 和 SERVLET

JSP(JavaServlet Page)實際上它也是從Servlet繼承而來。只不過它在Servlet當中又新增/修改了一些方法,作了新的封裝。具體到Tomcat Web應用伺服器中,它通過一個多重繼承,分別從Java的HttpJspPage和HttpServlet兩個類那裡繼承和實現一些方法,然後封裝一個叫做HttpJspBase的類從而實現了一個通用化的JSP類,使用者在開發自己的JSP時,只需要從HttpJspBase繼承一個自己的類,然後根據需要去實現相應的方法即可。

因此這也是為什麼JSP的程式碼中總是閃現Servlet程式碼框架影子的原因,其實它們只是為實現同樣的功能而進行了不同封裝的元件而已,底層都是一樣的。

瞭解兩個問題

  1. JSP是什麼
    JSP就是嵌入了Java程式碼的HTML

  2. SERVLET是什麼
    Servlt就是嵌入了HTML的Java類

區別

那肯定是因為JSP有它更高明的地方。

servlet

使用Servlet產生動態網頁,需要在程式碼中列印輸出很多HTML的標籤
此外,在Servlet中,我們不得不將靜態現實的內容和動態產生內容的程式碼混合在一起
使用Servlet開發動態網頁,程式設計師和網頁編輯人員將無法一起工作,為了解決這些問題,Sun公司就推出了JSP技術。

jsp

JSP是Servlet的擴充套件,在沒有JSP之前,就已經出現了Servlet技術。Servlet是利用輸出流動態生成HTML頁面,包括每一個HTML標籤和每個在HTML頁面中出現的內容。


JSP通過在標準的HTML頁面中插入Java程式碼,其靜態的部分無須Java程式控制,只有那些需要從資料庫讀取並根據程式動態生成資訊時,才使用Java指令碼控制。

相同

  1. JSP是Servlet的一種特殊形式,每個JSP頁面就是一個Servlet例項——JSP頁面由系統編譯成Servlet,
  2. Servlet再負責響應使用者請求。JSP其實也是Servlet的一種簡化,使用JSP時,其實還是使用Servlet,因為Web應用中的每個JSP頁面都會由Servlet容器生成對應的Servlet。
  3. 對於Tomcat而言,JSP頁面生成的Servlet放在work路徑對應的Web應用下。
  4. Tomcat根據JSP頁面生成對應Servlet的Java檔案及class檔案。

JSP過程

  1. JSP檔案必須在JSP伺服器內執行。JSP檔案必須生成Servlet才能執行。每個JSP頁面的第一個訪問者速度很慢,因為必須等待JSP編譯成Servlet。被tomcat編譯為servlet,存放在work目錄
  2. JSP頁面的訪問者無須安裝任何客戶端,甚至不需要可以執行Java的執行環境,因為JSP頁面輸送到客戶端的是標準HTML頁面。
  3. 當客戶請求一個JSP頁面的時候,Tomcat伺服器自動生成Java檔案、編譯Java檔案,並用編譯得到的位元組碼檔案在伺服器端建立一個Servlet。

生命週期對比流程圖

送上jsp的生命週期流程圖
圖片來自慕課學習

對比servlet的生命週期流程圖
圖片來自慕課學習

總結

  1. servlet是在web伺服器上的java程式,它提供服務,由它來傳遞給你html的格式。Servlet API為Servlet提供了統一的程式設計介面
  2. Servlet必須部署在Servlet容器,才能響應客戶端的請求 對外提供服務。要對外統一介面,由容器來呼叫。
  3. jsp側重顯示;servlet側重控制邏輯。

參考0
參考1
參考2