1. 程式人生 > >jsp與servlet的區別與聯絡

jsp與servlet的區別與聯絡

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,用來做控制。

理解以下三點即可:

1、不同之處在哪?

  • Servlet在Java程式碼中通過HttpServletResponse物件動態輸出HTML內容
  • JSP在靜態HTML內容中嵌入Java程式碼,Java程式碼被動態執行後生成HTML內容

2、各自的特點

  • Servlet能夠很好地組織業務邏輯程式碼,但是在Java原始檔中通過字串拼接的方式生成動態HTML內容會導致程式碼維護困難、可讀性差
  • JSP雖然規避了Servlet在生成HTML內容方面的劣勢,但是在HTML中混入大量、複雜的業務邏輯同樣也是不可取的

3、通過MVC雙劍合璧

既然JSP和Servlet都有自身的適用環境,那麼能否揚長避短,讓它們發揮各自的優勢呢?答案是肯定的——MVC(Model-View-Controller)模式非常適合解決這一問題。

MVC模式(Model-View-Controller)是軟體工程中的一種軟體架構模式,把軟體系統分為三個基本部分:模型(Model)、檢視(View)和控制器(Controller):

  • Controller——負責轉發請求,對請求進行處理
  • View——負責介面顯示
  • Model——業務功能編寫(例如演算法實現)、資料庫設計以及資料存取操作實現

在JSP/Servlet開發的軟體系統中,這三個部分的描述如下所示:

  1. Web瀏覽器傳送HTTP請求到服務端,被Controller(Servlet)獲取並進行處理(例如引數解析、請求轉發)
  2. Controller(Servlet)呼叫核心業務邏輯——Model部分,獲得結果
  3. Controller(Servlet)將邏輯處理結果交給View(JSP),動態輸出HTML內容
  4. 動態生成的HTML內容返回到瀏覽器顯示

MVC模式在Web開發中的好處是非常明顯,它規避了JSP與Servlet各自的短板,Servlet只負責業務邏輯而不會通過out.append()動態生成HTML程式碼;JSP中也不會充斥著大量的業務程式碼。這大大提高了程式碼的可讀性和可維護性。