jsp和servlet的區別和聯繫:
1.jsp經編譯後就變成了Servlet.
(JSP的本質就是Servlet,JVM只能識別java的類,不能識別JSP的代碼,Web容器將JSP的代碼編譯成JVM可以識別的java類)
2.jsp更擅長表現於頁面顯示,servlet更擅長於邏輯控制.
3.Servlet中沒有內置對象,Jsp中的內置對象都是必須經過HttpServletRequest對象,HttpServletResponse對象以及HttpServlet對象獲得.
Jsp是Servlet的一種簡化,使用Jsp只須要完成程序員須要輸出到客戶端的內容,Jsp中的Java腳本如何鑲嵌到一個類中,由Jsp容器完成。
而Servlet則是個完整的Java類,這個類的Service方法用於生成對客戶端的響應。
聯繫:
JSP是Servlet技術的擴展,本質上就是Servlet的簡易方式。JSP編譯後是「類servlet」。
Servlet和JSP最主要的不一樣點在於:
Servlet的應用邏輯是在Java文件中,而且徹底從表示層中的HTML裏分離開來。
而JSP的狀況是Java和HTML能夠組合成一個擴展名爲.jsp的文件。
JSP側重於視圖,Servlet主要用於控制邏輯
Servlet更多的是相似於一個Controller,用來作控制。
理解如下三點便可:html
一、不一樣之處在哪?java
- Servlet在Java代碼中經過HttpServletResponse對象動態輸出HTML內容
- JSP在靜態HTML內容中嵌入Java代碼,Java代碼被動態執行後生成HTML內容
二、各自的特色程序員
- Servlet可以很好地組織業務邏輯代碼,可是在Java源文件中經過字符串拼接的方式生成動態HTML內容會致使代碼維護困難、可讀性差
- JSP雖然規避了Servlet在生成HTML內容方面的劣勢,可是在HTML中混入大量、複雜的業務邏輯一樣也是不可取的
既然JSP和Servlet都有自身的適用環境,那麼可否揚長避短,讓它們發揮各自的優點呢?答案是確定的——MVC(Model-View-Controller)模式很是適合解決這一問題。算法
MVC模式(Model-View-Controller)是軟件工程中的一種軟件架構模式,把軟件系統分爲三個基本部分:模型(Model)、視圖(View)和控制器(Controller):數據庫
- Controller——負責轉發請求,對請求進行處理
- View——負責界面顯示
- Model——業務功能編寫(例如算法實現)、數據庫設計以及數據存取操做實現
在JSP/Servlet開發的軟件系統中,這三個部分的描述以下所示:瀏覽器
- Web瀏覽器發送HTTP請求到服務端,被Controller(Servlet)獲取並進行處理(例如參數解析、請求轉發)
- Controller(Servlet)調用核心業務邏輯——Model部分,得到結果
- Controller(Servlet)將邏輯處理結果交給View(JSP),動態輸出HTML內容
- 動態生成的HTML內容返回到瀏覽器顯示
MVC模式在Web開發中的好處是很是明顯,它規避了JSP與Servlet各自的短板,Servlet只負責業務邏輯而不會經過out.append()動態生成HTML代碼;JSP中也不會充斥着大量的業務代碼。這大大提升了代碼的可讀性和可維護性。架構