例項講解JSP Model2體系結構(上)

2022-10-06 21:39:16 字數 2131 閱讀 3220

最近已經有了很多相關的介紹,jsp正在成為一種卓越的j**a技術,可用於建立動態web應用程式。j**a程式設計師之所以喜愛jsp有數不清的理由。有些人喜歡它為互動式頁面帶來的「一次編寫,處處使用」的方式;還有些人欣賞它是因為它容易學習,並且使他們可以把j**a作為一種伺服器端指令碼語言來使用。但更多的還都是因為乙個共同原因――使用jsp的最大好處是它能幫助你有效地把表達與內容分離開。在本文中,我對下面的問題作了深入**,那就是,如何使用jsp model 2體系結構獲得最佳的表達-內容分離效果。這個模型也可以被看作是通用mvc設計模式在伺服器端的乙個實現。請注意,在閱讀本文之前,你需要熟悉基本的jsp和servlet程式設計,因為文中將不會涉及到任何語法規則問題。

servlets有什麼問題?

儘管jsp在動態web內容服務和分離內容與表達上可以做得非常好,但仍然會有人置疑,為什麼要把servlets丟在一邊呢?其實servlets的作用不容置疑。它們在伺服器端處理上做得很優秀,而且,由於它們已有了堅實的基礎,所以仍將被保留。實際上,從結構上講,你可以把jsp看作是servlets的一種高階抽象,就像servlet2.1 api的一種擴充一樣來實現。然而,你也不應當濫用servlets,它們並非對每個人都適用。舉個例子,如果網頁設計者能夠很容易地用傳統html或xml工具寫出jsp頁的話,servlets就更適合那些後台程式的開發者,因為servlets通常是用整合開發環境(ide)編寫的――一般來說這種方式需要更高階的程式設計技能。在運用servlets時,即使是開發者也必須小心謹慎以確保表達和內容不存在緊密的聯絡。要做到這一點,你通常可以使用第三方html包(比如htmlkona)來混合**。但即便是這種方法,儘管它通過簡單的螢幕變換帶來了一些靈活性,卻無法幫你避免表達格式本身的改動。例如,如果你的表達格式從html變為dhtml,你就必須確保那些語言包適應新的格式。假設一種最壞的情況,如果乙個包不可用,你也許將不得不忙於在動態內容中艱難地編寫表達,這會把你累死。那麼,如何解決這個問題呢?接下來你將看到,使用jsp與servlets技術相結合是構建應用系統地一種好方法。

不同的體系

早期的jsp規範提出了兩種用jsp技術建立應用程式的方式。這兩種方式在術語中分別稱作jsp model 1 和jsp model 2,它們的本質區別在於處理批量請求的位置不同。在model 1體系中,如圖1所示,jsp頁面獨自響應請求並將處理結果返回客戶。這裡仍然存在表達與內容的分離,因為所以的資料訪問都是由bean來完成的。儘管model 1體系十分適合簡單應用的需要,它卻不能滿足複雜的大型應用程式的實現。不加選擇地隨意運用model 1,會導致jsp頁內被嵌入大量qmrmbquyl的指令碼片段或j**a**,特別是當需要處理的請求量很大時,情況更為嚴重。儘管這對於j**a程式設計師來說可能不是什麼大問題程式設計客棧,但如果jsp頁面是由網頁設計人員開發並維護的――通常這是開發大型專案的規範――這就確實是個問題了。從根本上講,將導致角色定義不清和職責分配不明,給專案管理帶來不必要的麻煩。

圖1:jsp model 1 體系結構

圖中文字:browser:瀏覽器;request:請求;response:響應;applicwww.cppcns.comation server:應用伺服器;enterprise servers/data sources:企業伺服器/資料來源。

model 2體系結構,如圖2所示,是一種把jsp與servlets聯合使用來實現動態內容服務的方法。它吸取了兩種技術各自的突出優點,用jsp生成表達層的內容,讓servlets完成深層次的處理任務。在這裡,servlets充當控制者的角色,負責管理對請求的處理,建立jsp頁需要使用的bean和物件,同時根據使用者的動作決定把那個jsp頁傳給請求者。特別要注意,在jsp頁內沒有處理邏輯;它僅負責檢索原先由servlets建立的物件或beans,從servlet中提取動態內容插入靜態模板。在我看來,這是一種有代表性的方法,它清晰地分離了表達和內容,明確了角色的定義以及開發者與網頁設計者的分工。事實上,專案越複雜,程式設計客棧使用model 2體系結構的好處就越大。

圖2:jsp model 2體系結構

圖中文字:instantlate:瞬間延時;controller、view、model分別為mvc設計模式中的控制者、試圖、模型;其他同圖1。

為了進一步闡明model 2體系結構的概念,我們來看乙個用它實現的例子:乙個叫做「**無國界」的網上**商店。

本文標題: 例項講解jsp model2體系結構(上)

本文位址: /wangluo/jsp/24211.html

oracle體系結構(2)

1.shared pool 共享池 share pool 是由library cache和data dictionary cache 構成 共享池是對sql,pl sql程式語法分析,編譯執行的記憶體區域。seared pool 的作用 1.用於儲存 最近執行的sql語句 最近使用的資料定義 2.它...

hadoop2體系結構

hadoop1的核心組成是兩部分,即hdfs和mapreduce。在hadoop2中變為hdfs和yarn。新的hdfs中的namenode不再是只有乙個了,可以有多個 目前只支援2個 每乙個都有相同的職能。這兩個namenode的地位如何哪?答 乙個是active狀態的,乙個是standby狀態的...

ARM體系結構與程式設計 2

arm組合語言程式設計 arm組合語言源程式中的語句由指令 偽操作和巨集指令組成。arm指令已經在上一節介紹過了。arm偽操作和巨集指令分類 1 符號定義偽操作 gbla 宣告乙個全域性的算術變數,並將其初始化為0。語法 gbla variable gbll 宣告乙個全域性的邏輯變數,並將其初始化為...