一、JSP
JSP模式的過程分為以下幾步:
- 客戶端(Client)通過網(wǎng)絡發(fā)送一個頁面的請求(Request JSP Page)給服務器端(Sever With JSP Container)阔挠。
- 部署了應用程序的服務器端將會從硬盤上讀取對應的文件(JSP Page)挟秤。
- 應用程序容器(Container)將讀取的文件(JSP Page)火诸,調(diào)用相應的數(shù)據(jù),進行編譯,形成Servlet能夠識別的java文件勾效。
- Servlet容器將Java文件進行解析饭入,形成HTML文件嵌器。
- 應用服務器返回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的設計模式來說诅愚,主要過程如下:
- Controller接受前端發(fā)送過來的請求(Request)寒锚,解析請求的路徑、參數(shù)以及表達的意圖违孝。
- 根據(jù)請求的意圖和參數(shù)向Model層調(diào)用相關的業(yè)務邏輯刹前。
- Model層接受Controller層的調(diào)用,組裝數(shù)據(jù)或調(diào)用數(shù)據(jù)庫雌桑,返回數(shù)據(jù)給Controller層喇喉。
- Controller層接收到Model層返回的相關數(shù)據(jù),組裝形成View.
- Controller層將View返回給前端校坑。
三拣技、兩者的區(qū)別
- 在MVC中,Model耍目、View过咬、Controller每個模塊負責各自的事情,符合單一職責原則制妄,使得代碼更加易于維護和優(yōu)化。
- 在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