JSP與MVC

一、JSP

JSP模式的過程分為以下幾步:

  1. 客戶端(Client)通過網(wǎng)絡發(fā)送一個頁面的請求(Request JSP Page)給服務器端(Sever With JSP Container)阔挠。
  2. 部署了應用程序的服務器端將會從硬盤上讀取對應的文件(JSP Page)挟秤。
  3. 應用程序容器(Container)將讀取的文件(JSP Page)火诸,調(diào)用相應的數(shù)據(jù),進行編譯,形成Servlet能夠識別的java文件勾效。
  4. Servlet容器將Java文件進行解析饭入,形成HTML文件嵌器。
  5. 應用服務器返回HTML文件給客戶端瀏覽器。

其中谐丢,Servlet是Java Servlet的簡稱爽航,稱為小服務程序或服務連接器,用Java編寫的服務器端程序乾忱,具有獨立于平臺和協(xié)議的特性讥珍,主要功能在于交互式地瀏覽和生成數(shù)據(jù),生成動態(tài)Web內(nèi)容窄瘟。JSP經(jīng)編譯后就變成了Servlet衷佃。

  • Servlet在Java代碼中通過HttpServletResponse對象動態(tài)輸出HTML內(nèi)容。JSP在靜態(tài)HTML內(nèi)容中嵌入Java代碼蹄葱,Java代碼被動態(tài)執(zhí)行后生成HTML內(nèi)容氏义。
  • Servlet能夠很好地組織業(yè)務邏輯代碼锄列,但是在Java源文件中通過字符串拼接的方式生成動態(tài)HTML內(nèi)容會導致代碼維護困難、可讀性差惯悠。JSP雖然規(guī)避了Servlet在生成HTML內(nèi)容方面的劣勢邻邮,但是在HTML中混入大量、復雜的業(yè)務邏輯同樣也是不可取的吮螺。

二饶囚、MVC

  • Model
    數(shù)據(jù)模型,或者可以理解為業(yè)務邏輯鸠补,是系統(tǒng)的核心部分萝风,主要職責是負責系統(tǒng)業(yè)務和數(shù)據(jù)的處理。
  • View
    視圖紫岩,對用戶來說规惰,通常就是展示頁面,視圖部分僅僅負責用戶的展示泉蝌。
  • Controller
    控制器歇万,主要負責裝配業(yè)務模型產(chǎn)生的數(shù)據(jù)到視圖里面。通常有三種職責:接受用戶的請求勋陪;調(diào)用相應的業(yè)務邏輯處理贪磺;將業(yè)務邏輯處理的結(jié)果返回或者裝配到視圖中。

對于MVC的設計模式來說诅愚,主要過程如下:

  1. Controller接受前端發(fā)送過來的請求(Request)寒锚,解析請求的路徑、參數(shù)以及表達的意圖违孝。
  2. 根據(jù)請求的意圖和參數(shù)向Model層調(diào)用相關的業(yè)務邏輯刹前。
  3. Model層接受Controller層的調(diào)用,組裝數(shù)據(jù)或調(diào)用數(shù)據(jù)庫雌桑,返回數(shù)據(jù)給Controller層喇喉。
  4. Controller層接收到Model層返回的相關數(shù)據(jù),組裝形成View.
  5. Controller層將View返回給前端校坑。

三拣技、兩者的區(qū)別

  1. 在MVC中,Model耍目、View过咬、Controller每個模塊負責各自的事情,符合單一職責原則制妄,使得代碼更加易于維護和優(yōu)化。
  2. 在JSP中泵三,業(yè)務數(shù)據(jù)(業(yè)務邏輯)和展示邏輯(頁面)耦合在一起耕捞,難以維護衔掸。而MVC通過Controller這一層,將視圖和業(yè)務邏輯進行了解耦俺抽,將數(shù)據(jù)展示和數(shù)據(jù)生成放到了不同的模塊中敞映,易于維護。

在實際應用中磷斧,如圖所示振愿,采用Servlet來控制業(yè)務流程,而采用JSP來生成動態(tài)網(wǎng)頁弛饭。

MVC模式在Web開發(fā)中的好處是非常明顯冕末,它規(guī)避了JSP與Servlet各自的短板,Servlet只負責業(yè)務邏輯而不需要動態(tài)生成HTML代碼侣颂;JSP中也不會充斥著大量的業(yè)務代碼档桃。這大大提高了代碼的可讀性和可維護性。


image
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末憔晒,一起剝皮案震驚了整個濱河市藻肄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拒担,老刑警劉巖嘹屯,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異从撼,居然都是意外死亡州弟,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門谋逻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呆馁,“玉大人,你說我怎么就攤上這事毁兆≌懵耍” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵气堕,是天一觀的道長纺腊。 經(jīng)常有香客問我,道長茎芭,這世上最難降的妖魔是什么揖膜? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮梅桩,結(jié)果婚禮上壹粟,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好趁仙,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布洪添。 她就那樣靜靜地躺著,像睡著了一般雀费。 火紅的嫁衣襯著肌膚如雪干奢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天盏袄,我揣著相機與錄音忿峻,去河邊找鬼。 笑死辕羽,一個胖子當著我的面吹牛逛尚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逛漫,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼黑低,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了酌毡?” 一聲冷哼從身側(cè)響起克握,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎枷踏,沒想到半個月后菩暗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡旭蠕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年停团,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掏熬。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡佑稠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出旗芬,到底是詐尸還是另有隱情舌胶,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布疮丛,位于F島的核電站幔嫂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏誊薄。R本人自食惡果不足惜履恩,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呢蔫。 院中可真熱鬧切心,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至而涉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間联予,已是汗流浹背啼县。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沸久,地道東北人季眷。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像卷胯,于是被迫代替她去往敵國和親子刮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容

  • JSP全名為Java Server Pages窑睁,百科上介紹它根本上是一個簡化的Servlet設計挺峡。Servlet(...
    竹鼠不要中暑閱讀 898評論 0 1
  • 首先了解jsp與mvc的模式步驟 JSP這種方式就是在服務器中,有兩個部分担钮,一個應用程序容器(Container)...
    劉昱涵閱讀 1,620評論 0 0
  • JSP總結(jié)(經(jīng)典) day1 JSP 定義: 1)Java Server Page, Java EE 組件橱赠,本...
    java日記閱讀 3,457評論 0 13
  • 一. Java基礎部分.................................................
    wy_sure閱讀 3,813評論 0 11
  • 這部分主要是與Java Web和Web Service相關的面試題。 96箫津、闡述Servlet和CGI的區(qū)別? 答...
    雜貨鋪老板閱讀 1,411評論 0 10