jsp和servlet的區(qū)別和聯(lián)系:
1.jsp經(jīng)編譯后就變成了Servlet.(JSP的本質(zhì)就是Servlet,JVM只能識(shí)別java的類,不能識(shí)別JSP的代碼,Web容器將JSP的代碼編譯成JVM能夠識(shí)別的java類)
2.jsp更擅長(zhǎng)表現(xiàn)于頁面顯示,servlet更擅長(zhǎng)于邏輯控制.
3.Servlet中沒有內(nèi)置對(duì)象,Jsp中的內(nèi)置對(duì)象都是必須通過HttpServletRequest對(duì)象,HttpServletResponse對(duì)象以及HttpServlet對(duì)象得到.Jsp是Servlet的一種簡(jiǎn)化,使用Jsp只需要完成程序員需要輸出到客戶端的內(nèi)容,Jsp中的Java腳本如何鑲嵌到一個(gè)類中,由Jsp容器完成。而Servlet則是個(gè)完整的Java類,這個(gè)類的Service方法用于生成對(duì)客戶端的響應(yīng)。聯(lián)系: JSP是Servlet技術(shù)的擴(kuò)展,本質(zhì)上就是Servlet的簡(jiǎn)易方式。JSP編譯后是“類servlet”。Servlet和JSP最主要的不同點(diǎn)在于:Servlet的應(yīng)用邏輯是在Java文件中,并且完全從表示層中的HTML里分離開來。而JSP的情況是Java和HTML可以組合成一個(gè)擴(kuò)展名為.jsp的文件。JSP側(cè)重于視圖,Servlet主要用于控制邏輯Servlet更多的是類似于一個(gè)Controller,用來做控制。
理解以下三點(diǎn)即可:
1、不同之處在哪?
Servlet在Java代碼中通過HttpServletResponse對(duì)象動(dòng)態(tài)輸出HTML內(nèi)容
JSP在靜態(tài)HTML內(nèi)容中嵌入Java代碼,Java代碼被動(dòng)態(tài)執(zhí)行后生成HTML內(nèi)容
2、各自的特點(diǎn)
Servlet能夠很好地組織業(yè)務(wù)邏輯代碼,但是在Java源文件中通過字符串拼接的方式生成動(dòng)態(tài)HTML內(nèi)容會(huì)導(dǎo)致代碼維護(hù)困難、可讀性差
JSP雖然規(guī)避了Servlet在生成HTML內(nèi)容方面的劣勢(shì),但是在HTML中混入大量、復(fù)雜的業(yè)務(wù)邏輯同樣也是不可取的
3、通過MVC雙劍合璧
既然JSP和Servlet都有自身的適用環(huán)境,那么能否揚(yáng)長(zhǎng)避短,讓它們發(fā)揮各自的優(yōu)勢(shì)呢?答案是肯定的——MVC(Model-View-Controller)模式非常適合解決這一問題。
MVC模式(Model-View-Controller)是軟件工程中的一種軟件架構(gòu)模式,把軟件系統(tǒng)分為三個(gè)基本部分:模型(Model)、視圖(View)和控制器(Controller):
Controller——負(fù)責(zé)轉(zhuǎn)發(fā)請(qǐng)求,對(duì)請(qǐng)求進(jìn)行處理
View——負(fù)責(zé)界面顯示
Model——業(yè)務(wù)功能編寫(例如算法實(shí)現(xiàn))、數(shù)據(jù)庫設(shè)計(jì)以及數(shù)據(jù)存取操作實(shí)現(xiàn)
在JSP/Servlet開發(fā)的軟件系統(tǒng)中,這三個(gè)部分的描述如下所示:
Web瀏覽器發(fā)送HTTP請(qǐng)求到服務(wù)端,被Controller(Servlet)獲取并進(jìn)行處理(例如參數(shù)解析、請(qǐng)求轉(zhuǎn)發(fā))
Controller(Servlet)調(diào)用核心業(yè)務(wù)邏輯——Model部分,獲得結(jié)果
Controller(Servlet)將邏輯處理結(jié)果交給View(JSP),動(dòng)態(tài)輸出HTML內(nèi)容
動(dòng)態(tài)生成的HTML內(nèi)容返回到瀏覽器顯示
MVC模式在Web開發(fā)中的好處是非常明顯,它規(guī)避了JSP與Servlet各自的短板,Servlet只負(fù)責(zé)業(yè)務(wù)邏輯而不會(huì)通過out.append()動(dòng)態(tài)生成HTML代碼;JSP中也不會(huì)充斥著大量的業(yè)務(wù)代碼。這大大提高了代碼的可讀性和可維護(hù)性。