Jsp 和 Servlet 有什么不同?
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
面試中被問到了 Jsp 和 Servlet 有什么不同?在這里總結(jié)分享下。
回答思路先分別進(jìn)行基本介紹,然后分析說明兩者相同點和不同點。
基本介紹
Servlet:
Servlet 是一種服務(wù)器端的Java應(yīng)用程序,具有獨立于平臺和協(xié)議的特性,可以生成動態(tài)的Web頁面。它擔(dān)當(dāng)客戶請求(Web瀏覽器或其他HTTP客戶程序)與服務(wù)器響應(yīng)(HTTP服務(wù)器上的數(shù)據(jù)庫或應(yīng)用程序)的中間層。 Servlet是位于Web服務(wù)器內(nèi)部的服務(wù)器端的Java應(yīng)用程序,與傳統(tǒng)的從命令行啟動的Java應(yīng)用程序不同,Servlet由Web服務(wù)器進(jìn)行加載,該Web服務(wù)器必須包含支持Servlet的Java虛擬機(jī)。
Jsp:
JSP 全名為Java Server Pages,中文名叫java服務(wù)器頁面,其根本是一個簡化的Servlet設(shè)計。JSP技術(shù)使用Java編程語言編寫類XML的tags和scriptlets,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和scriptlets訪問存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計的顯示分離,支持可重用的基于組件的設(shè)計,使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。 JSP(JavaServer Pages)是一種動態(tài)頁面技術(shù),它的主要目的是將表示邏輯從Servlet中分離出來。
相同點
jsp經(jīng)編譯后就變成了servlet,jsp本質(zhì)就是servlet,jvm只能識別java的類,不能識別jsp代碼,web容器將jsp的代碼編譯成jvm能夠識別的java類。
分析
其實就是當(dāng)你通過 http 請求一個 JSP 頁面是,首先 Tomcat 會調(diào)用 service()方法將JSP編譯成為 Servlet,然后執(zhí)行 Servlet。
詳細(xì)理解:當(dāng)服務(wù)器啟動后,當(dāng)Web瀏覽器端發(fā)送過來一個頁面請求時,Web服務(wù)器先判斷是否是JSP頁面請求。如果該頁面只是一般的HTML/XML頁面請求,則直接將HTML/XML頁面代碼傳給Web瀏覽器端。如果請求的頁面是JSP頁面,則由JSP引擎檢查該JSP頁面,如果該頁面是第一次被請求、或不是第一次被請求但已被修改,則JSP引擎將此JSP頁面代碼轉(zhuǎn)換成Servlet代碼,然后JSP引擎調(diào)用服務(wù)器端的Java編譯器javac.exe對Servlet代碼進(jìn)行編譯,把它變成字節(jié)碼(.class)文件,然后再調(diào)用JAVA虛擬機(jī)執(zhí)行該字節(jié)碼文件,然后將執(zhí)行結(jié)果傳給Web瀏覽器端。如果該JSP頁面不是第一次被請求,且沒有被修改過,則直接由JSP引擎調(diào)用JAVA虛擬機(jī)執(zhí)行已編譯過的字節(jié)碼.class文件,然后將結(jié)果傳送Web瀏覽器端。
不同點
JSP側(cè)重視圖,Sevlet主要用于控制邏輯。
Servlet中沒有內(nèi)置對象 。
JSP中的內(nèi)置對象都是必須通過HttpServletRequest對象,HttpServletResponse對象以及HttpServlet對象得到。
關(guān)于 JSP 中的內(nèi)置對象看這篇博客:JSP 九大內(nèi)置對象及其作用域
?
水平有限,若有問題請留言交流!
互相學(xué)習(xí),共同進(jìn)步 :) 轉(zhuǎn)載請注明出處謝謝!
轉(zhuǎn)載于:https://my.oschina.net/hp2017/blog/1932021
總結(jié)
以上是生活随笔為你收集整理的Jsp 和 Servlet 有什么不同?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Fermat
- 下一篇: C#弃元表达式的用法