servlet和jsp的區(qū)別

2018-04-28 14:26 更新

jsp作為Servlet技術(shù)的擴(kuò)展,經(jīng)常會(huì)有人將jsp和Servlet搞混。本文,將為大家?guī)?lái)servlet和jsp的區(qū)別,希望對(duì)大家有所幫助。


servlet和jsp的區(qū)別

1、Servlet在Java代碼中可以通過HttpServletResponse對(duì)象動(dòng)態(tài)輸出HTML內(nèi)容。

2、JSP是在靜態(tài)HTML內(nèi)容中嵌入Java代碼,然后Java代碼在被動(dòng)態(tài)執(zhí)行后生成HTML內(nèi)容。


servlet和jsp各自的特點(diǎn)

1、Servlet雖然能夠很好地組織業(yè)務(wù)邏輯代碼,但是在Java源文件中,因?yàn)槭峭ㄟ^字符串拼接的方式生成動(dòng)態(tài)HTML內(nèi)容,這樣就容易導(dǎo)致代碼維護(hù)困難、可讀性差。

2、JSP雖然規(guī)避了Servlet在生成HTML內(nèi)容方面的劣勢(shì),但是在HTML中混入大量、復(fù)雜的業(yè)務(wù)邏輯。


通過MVC雙劍合璧

JSP和Servlet都有自身的適用環(huán)境,那么有沒有什么辦法能夠讓它們發(fā)揮各自的優(yōu)勢(shì)呢?答案是肯有的,MVC模式就能夠完美解決這一問題。

MVC模式,是Model-View-Controller的簡(jiǎn)稱,是軟件工程中的一種軟件架構(gòu)模式,分為三個(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ù)庫(kù)設(shè)計(jì)以及數(shù)據(jù)存取操作實(shí)現(xiàn)

在JSP/Servlet開發(fā)的軟件系統(tǒng)中,這三個(gè)部分的描述如下所示:


229cf9ff5b1729eaf408fac56238eeb3_hd


1、Web瀏覽器發(fā)送HTTP請(qǐng)求到服務(wù)端,然后被Controller(Servlet)獲取并進(jìn)行處理(例如參數(shù)解析、請(qǐng)求轉(zhuǎn)發(fā))

2、Controller(Servlet)調(diào)用核心業(yè)務(wù)邏輯——Model部分,獲得結(jié)果

3、Controller(Servlet)將邏輯處理結(jié)果交給View(JSP),動(dòng)態(tài)輸出HTML內(nèi)容

4、動(dòng)態(tài)生成的HTML內(nèi)容返回到瀏覽器顯示

MVC模式在Web開發(fā)中有很大的優(yōu)勢(shì),它完美規(guī)避了JSP與Servlet各自的缺點(diǎn),讓Servlet只負(fù)責(zé)業(yè)務(wù)邏輯部分,而不會(huì)生成HTML代碼;同時(shí)JSP中也不會(huì)充斥著大量的業(yè)務(wù)代碼,這樣能大提高了代碼的可讀性和可維護(hù)性。


相關(guān)閱讀:

Servlet教程

JSP教程


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)