JSP與MVC

JSP全名為Java Server Pages,百科上介紹它根本上是一個(gè)簡(jiǎn)化的Servlet設(shè)計(jì)。Servlet(Server Applet)是Java Servlet的簡(jiǎn)稱,稱為小服務(wù)程序或服務(wù)連接器。Servlet 的主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài) Web 內(nèi)容。這個(gè)過(guò)程為:

  1. 客戶端發(fā)送請(qǐng)求至服務(wù)器端;
  2. 服務(wù)器將請(qǐng)求信息發(fā)送至 Servlet;
  3. Servlet 生成響應(yīng)內(nèi)容(如HTML)并將其傳給服務(wù)器;
  4. 服務(wù)器將響應(yīng)返回給客戶端。

我在網(wǎng)上看了一些資料后,覺(jué)得在討論MVC與JSP的異同之前,先討論Servlet和JSP的異同更好理解。

Servlet和JSP

JSP既然是是一個(gè)簡(jiǎn)化的Servlet設(shè)計(jì),它和Servlet一樣是用于交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài) Web 內(nèi)容。那么二者的不同之處呢。

不同

  • Servlet在Java代碼中通過(guò)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)容

二者各有優(yōu)缺點(diǎn),Servlet是在Java中通過(guò)比如字符串拼接的方式生成HTML代碼(我們?cè)谒嘉钟霸褐芯陀眠@種方法修改的HTML),這樣雖然可以很好的生成業(yè)務(wù)邏輯代碼,但是它的HTML代碼卻也因此而可讀性低,維護(hù)困難。而JSP通過(guò)在HTML中嵌入Java代碼規(guī)避了這一點(diǎn),但是卻在HTML中混入了大量的業(yè)務(wù)代碼,同樣造成了維護(hù)困難。

對(duì)于這兩者的缺點(diǎn),我還有一點(diǎn)理解:很多的程序員可能美工能力不太好,這樣使用Servlet的話,在設(shè)計(jì)出美觀的UI方面可能就會(huì)有難度;而JSP的模式,在HTML中混入大量的業(yè)務(wù)邏輯代碼,又造成了前端工程師的負(fù)擔(dān)。

MVC

我們可以看出,Selvlet和JSP的優(yōu)缺點(diǎn)是互補(bǔ)的,那么為什么不找一種【互補(bǔ)】的更好的模式呢。這種模式就是MVC.
MVC的名字即就是它的三個(gè)基本部分:Model-View-Controller



其中

  • Controller——負(fù)責(zé)轉(zhuǎn)發(fā)請(qǐng)求,對(duì)請(qǐng)求進(jìn)行處理
  • View——負(fù)責(zé)界面顯示
  • Model——業(yè)務(wù)功能編寫(xiě)(例如算法實(shí)現(xiàn))、數(shù)據(jù)庫(kù)設(shè)計(jì)以及數(shù)據(jù)存取操作實(shí)現(xiàn)

結(jié)構(gòu)分工很清楚,從我自己的經(jīng)歷就可以很切實(shí)地體會(huì)到MVC的優(yōu)點(diǎn)。我在剛開(kāi)始寫(xiě)代碼的時(shí)候,總是把代碼寫(xiě)在一個(gè)文件里,后來(lái)項(xiàng)目慢慢變復(fù)雜一些,我也總是把很多的業(yè)務(wù)邏輯集中在一兩個(gè)文件里,或者分了好幾個(gè)文件,卻分得很亂。后來(lái)經(jīng)過(guò)項(xiàng)目規(guī)范,開(kāi)始按照規(guī)范,也即按照代碼的分工,來(lái)分包分文件寫(xiě)代碼,代碼的可讀性可維護(hù)性都大大提高,其實(shí)代碼的具體實(shí)現(xiàn)是差不多的,但按照規(guī)范分塊后的代碼時(shí)絕對(duì)比之前的要好的。

下面就通過(guò)MVC中三個(gè)模塊的具題工作流程來(lái)感受下MVC時(shí)怎樣結(jié)合了Servlet和JSP的優(yōu)點(diǎn)的。

  1. 客戶端發(fā)送請(qǐng)求后,Controller獲取請(qǐng)求,解析請(qǐng)求后調(diào)用相應(yīng)的Model
  2. 業(yè)務(wù)邏輯Model產(chǎn)生相應(yīng)的邏輯結(jié)果,并交給Controller
  3. Controller將邏輯結(jié)果交給View,View動(dòng)態(tài)生成HTML
  4. HTML返回給客戶端顯示
    可見(jiàn),MVC將業(yè)務(wù)邏輯和HTML分開(kāi),既能很好的組織業(yè)務(wù)邏輯,又能生成高可讀性的HTML,HTML中也不會(huì)混入大量的業(yè)務(wù)邏輯。Controller和Model吸收的了Serlvet的優(yōu)點(diǎn),而View就吸收了JSP的優(yōu)點(diǎn),自然地也克服了他們各自的缺點(diǎn)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 首先了解jsp與mvc的模式步驟 JSP這種方式就是在服務(wù)器中,有兩個(gè)部分,一個(gè)應(yīng)用程序容器(Container)...
    劉昱涵閱讀 1,679評(píng)論 0 0
  • JSP總結(jié)(經(jīng)典) day1 JSP 定義: 1)Java Server Page, Java EE 組件,本...
    91數(shù)據(jù)閱讀 3,635評(píng)論 0 13
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,010評(píng)論 0 11
  • 這部分主要是與Java Web和Web Service相關(guān)的面試題。 96、闡述Servlet和CGI的區(qū)別? 答...
    雜貨鋪老板閱讀 1,501評(píng)論 0 10
  • IOC 控制反轉(zhuǎn)容器控制程序?qū)ο笾g的關(guān)系,而不是傳統(tǒng)實(shí)現(xiàn)中,有程序代碼之間控制,又名依賴注入。All 類的創(chuàng)建,...
    irckwk1閱讀 1,092評(píng)論 0 0

友情鏈接更多精彩內(nèi)容