面試中被問到了 Jsp 和 Servlet 有什麼不一樣?在這裏總結分享下。java
回答思路先分別進行基本介紹,而後分析說明二者相同點和不一樣點。web
Servlet:面試
Servlet 是一種服務器端的Java應用程序,具備獨立於平臺和協議的特性,能夠生成動態的Web頁面。它擔當客戶請求(Web瀏覽器或其餘HTTP客戶程序)與服務器響應(HTTP服務器上的數據庫或應用程序)的中間層。 Servlet是位於Web服務器內部的服務器端的Java應用程序,與傳統的從命令行啓動的Java應用程序不一樣,Servlet由Web服務器進行加載,該Web服務器必須包含支持Servlet的Java虛擬機。數據庫
Jsp:編程
JSP 全名爲Java Server Pages,中文名叫java服務器頁面,其根本是一個簡化的Servlet設計。JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產生動態網頁的處理邏輯。網頁還能經過tags和scriptlets訪問存在於服務端的資源的應用邏輯。JSP將網頁邏輯與網頁設計的顯示分離,支持可重用的基於組件的設計,使基於Web的應用程序的開發變得迅速和容易。 JSP(JavaServer Pages)是一種動態頁面技術,它的主要目的是將表示邏輯從Servlet中分離出來。瀏覽器
jsp經編譯後就變成了servlet,jsp本質就是servlet,jvm只能識別java的類,不能識別jsp代碼,web容器將jsp的代碼編譯成jvm可以識別的java類。服務器
分析jvm
其實就是當你經過 http 請求一個 JSP 頁面是,首先 Tomcat 會調用 service()方法將JSP編譯成爲 Servlet,而後執行 Servlet。jsp
詳細理解:當服務器啓動後,當Web瀏覽器端發送過來一個頁面請求時,Web服務器先判斷是不是JSP頁面請求。若是該頁面只是通常的HTML/XML頁面請求,則直接將HTML/XML頁面代碼傳給Web瀏覽器端。若是請求的頁面是JSP頁面,則由JSP引擎檢查該JSP頁面,若是該頁面是第一次被請求、或不是第一次被請求但已被修改,則JSP引擎將此JSP頁面代碼轉換成Servlet代碼,而後JSP引擎調用服務器端的Java編譯器javac.exe對Servlet代碼進行編譯,把它變成字節碼(.class)文件,而後再調用JAVA虛擬機執行該字節碼文件,而後將執行結果傳給Web瀏覽器端。若是該JSP頁面不是第一次被請求,且沒有被修改過,則直接由JSP引擎調用JAVA虛擬機執行已編譯過的字節碼.class文件,而後將結果傳送Web瀏覽器端。編程語言
JSP側重視圖,Sevlet主要用於控制邏輯。
Servlet中沒有內置對象 。
JSP中的內置對象都是必須經過HttpServletRequest對象,HttpServletResponse對象以及HttpServlet對象獲得。
關於 JSP 中的內置對象看這篇博客:JSP 九大內置對象及其做用域
水平有限,如有問題請留言交流!
互相學習,共同進步 :) 轉載請註明出處謝謝!