jsp與servlet的區別與聯絡
阿新 • • 發佈:2019-01-31
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開發的軟體系統中,這三個部分的描述如下所示:
- Web瀏覽器傳送HTTP請求到服務端,被Controller(Servlet)獲取並進行處理(例如引數解析、請求轉發)
- Controller(Servlet)呼叫核心業務邏輯——Model部分,獲得結果
- Controller(Servlet)將邏輯處理結果交給View(JSP),動態輸出HTML內容
- 動態生成的HTML內容返回到瀏覽器顯示
MVC模式在Web開發中的好處是非常明顯,它規避了JSP與Servlet各自的短板,Servlet只負責業務邏輯而不會通過out.append()動態生成HTML程式碼;JSP中也不會充斥著大量的業務程式碼。這大大提高了程式碼的可讀性和可維護性。