詳細(xì)介紹JSP技術(shù)的兩種架構(gòu)模型
JSP和JavaBean模型將頁面顯示和業(yè)務(wù)邏輯處理分開。JSP實(shí)現(xiàn)頁面顯示,JavaBean對(duì)象用來保存數(shù)據(jù)和實(shí)現(xiàn)商業(yè)邏輯。
運(yùn)用JSP/Servlet實(shí)現(xiàn)的web動(dòng)態(tài)交互,主要采用JSP和JavaBean模型還有JSP和JavaBean+Servlet模型。本文分別介紹這兩種模型,并比較它們的優(yōu)缺點(diǎn)。
一。JSP和JavaBean模型
模型的結(jié)構(gòu)如下圖所示,稱之為JSP和JavaBean模型。其工作原理是:當(dāng)瀏覽器發(fā)出請(qǐng)求時(shí),JSP接收請(qǐng)求并訪問JavaBean.若需要訪問數(shù)據(jù)庫或后臺(tái)服務(wù)器,則通過JavaBean連接數(shù)據(jù)庫或后臺(tái)服務(wù)器,執(zhí)行相應(yīng)的處理。JavaBean將處理的結(jié)果數(shù)據(jù)交給JSP.JSP提取結(jié)果并重新組織后,動(dòng)態(tài)生成HTML頁面,返回給瀏覽器。用戶從瀏覽器顯示的頁面中得到交互的結(jié)果。
JSP和JavaBean模型充分利用了JSP技術(shù)易于開發(fā)動(dòng)態(tài)網(wǎng)頁的特點(diǎn),頁面顯示層的任務(wù)由JSP(但它也含事物邏輯層的內(nèi)容)承擔(dān),JavaBean主要負(fù)責(zé)事務(wù)邏輯層和數(shù)據(jù)層的工作。JSP和JavaBean模型依靠幾個(gè)JavaBean組件實(shí)現(xiàn)具體的應(yīng)用功能,生成動(dòng)態(tài)內(nèi)容,起最大的特點(diǎn)就是簡(jiǎn)單。
二。JSP和JavaBean+Servlet模型
JSP和JavaBean+Servlet模型的體系結(jié)構(gòu)如下圖所示,稱之為JSP和JavaBean和Servlet模型。它是一種采用基于模型視圖控制器(Model和View和Controller)的設(shè)計(jì)模型,即MVC模型。
該模型將JSP程序的功能分為3個(gè)層次:Model(模型)層、View(視圖)層、Controller(控制器層)。Model層實(shí)現(xiàn)業(yè)務(wù)邏輯,包括了Web應(yīng)用程序功能的核心,負(fù)責(zé)存儲(chǔ)與應(yīng)用程序相關(guān)的數(shù)據(jù);View層用于用戶界面的顯示,它可以訪問Model層的數(shù)據(jù),但不能更改這些數(shù)據(jù);Controller層主要負(fù)責(zé)Model和View層之間的控制關(guān)系。
具體實(shí)現(xiàn)時(shí),JavaBean作為模型層,Servlet作為控制層,JSP作為視圖層。每層的作用如下:
1.JavaBean作為Model層,實(shí)現(xiàn)各個(gè)具體的應(yīng)用邏輯和功能。
2.Servlet作為Controller層,負(fù)責(zé)處理HTTP請(qǐng)求,包括:
- 對(duì)輸入數(shù)據(jù)的檢查和轉(zhuǎn)換。
- 通過JavaBean訪問數(shù)據(jù)庫。
- 初始化JSP頁面中要用到的JavaBean或?qū)ο蟆?/li>
- 根據(jù)處理中不同的分支和結(jié)果,決定轉(zhuǎn)向那個(gè)JSP等。
3.JSP作為View層,負(fù)責(zé)生成交互后返回的界面。它主要通過信息共享,獲取Servlet生成的對(duì)象或JavaBean,從中取出數(shù)據(jù),插入到HTML頁面中。
該模型的工作原理是:所有的請(qǐng)求都被發(fā)送給作為控制器的Servlet.Servlet接收請(qǐng)求,并根據(jù)請(qǐng)求信息將它們分發(fā)給相應(yīng)的JSP頁面來響應(yīng);同時(shí)Servlet還根據(jù)JSP的需求生成相應(yīng)的JavaBean對(duì)象并傳輸給JSP.JSP通過直接調(diào)用方法或利用UseBean的自定義標(biāo)簽,得到 JavaBean中的數(shù)據(jù)。
這種設(shè)計(jì)模式通過Servlet和JavaBean的合作來實(shí)現(xiàn)交互處理,很好的實(shí)現(xiàn)了表示層、事務(wù)邏輯層和數(shù)據(jù)的分離。
三。兩種模型的比較
從以上對(duì)兩種模型的說明來看,JSP和JavaBean模型和JSP和JavaBean+Servlet模型的整體結(jié)構(gòu)都比較清晰,易于實(shí)現(xiàn)。它們的基本思想都是實(shí)現(xiàn)表示層、事務(wù)邏輯層和數(shù)據(jù)層的分離。這樣的分層設(shè)計(jì)便于系統(tǒng)的維護(hù)和修改。兩種模型的主要區(qū)別表現(xiàn)在:
1.處理流程的主控部分不同。JSP和JavaBean模型利用JSP作為主控部分,將用戶的請(qǐng)求、JavaBean和響應(yīng)有效的鏈接起來。JSP和JavaBean+Servlet模型利用Servlet作為主控部分,將用戶的請(qǐng)求、JavaBean和響應(yīng)有效的鏈接起來。
2.實(shí)現(xiàn)表示層、事務(wù)邏輯層和數(shù)據(jù)層的分離程度不同。JSP和JavaBean+Servlet模型比JSP和JavaBean模型有更好的分離效果。當(dāng)事務(wù)邏輯比較復(fù)雜、分支較多或需要涉及多個(gè)JavaBean組件時(shí),JSP和JavaBean模型常常會(huì)導(dǎo)致JSP文件中嵌入大量的腳本或Java代碼。特別是大型項(xiàng)目開發(fā)中,由于頁面設(shè)計(jì)和邏輯處理分別由不同的專業(yè)人員承擔(dān),如果JSP 有相當(dāng)一部分處理邏輯和頁面描述混在一起,這就有可能引起分工不明確,不利于兩個(gè)部分的獨(dú)立開發(fā)和維護(hù),影響項(xiàng)目的施工和管理。在JSP和JavaBean+Servlet模型中,由 Servlet處理HTTP請(qǐng)求,JavaBean承擔(dān)事務(wù)邏輯處理,JSP僅負(fù)責(zé)生成網(wǎng)頁的工作,所以表現(xiàn)層的混合問題比較輕,適合于不同專業(yè)的專業(yè)人員獨(dú)立開發(fā)Web項(xiàng)目中的各層功能。
3.適應(yīng)于動(dòng)態(tài)交互處理的需求不同。當(dāng)事務(wù)邏輯比較負(fù)責(zé)、分支較多或需要涉及很多JavaBean組件時(shí),由于JSP和JavaBean+Servlet模型比JSP和JavaBean模型有更清晰的頁面表現(xiàn)、更明確的開發(fā)模塊的劃分,所以使用JSP和JavaBean+Servlet模型比較適合。然而,JSP和JavaBean+Servlet模型需要編寫Servlet程序,Servlet程序需要的工具是Java集成開發(fā)環(huán)境,編程工作量比較大。
對(duì)于簡(jiǎn)單的交互處理,利用JSP和JavaBean模型,JSP主要是使用HTML工具開發(fā),然后再插入少量的Java代碼就可以實(shí)現(xiàn)動(dòng)態(tài)交互。在這種情況下,使用JSP和JavaBean模型更加方便快捷。
JSP和JavaBean模型和JSP和JavaBean+Servlet模型這兩種用于開發(fā)Web應(yīng)用的方法都有很好的使用性。當(dāng)然,實(shí)現(xiàn)動(dòng)態(tài)交互的Web應(yīng)用,不限于這兩種模型。在實(shí)際Web應(yīng)用的開發(fā)過程中,需要根據(jù)系統(tǒng)特點(diǎn)、客戶需求及處理邏輯的特性,選擇合適的模型,力求使整個(gè)應(yīng)用的體系結(jié)果更加合理,從而實(shí)現(xiàn)不同的交互處理。
【編輯推薦】