|
最后的要點(diǎn):框架
通過將表現(xiàn)和邏輯分離開來,該架構(gòu)可讓你獨(dú)立地修改表現(xiàn)(JSP)和邏輯(bean)。這意味著你可以修改bean中的邏輯而無需改動JSP,只要你保持bean的屬性不變就行了。相反也是成立的,你可以將JSP代碼交給HTML開發(fā)者和美工來改變站點(diǎn)的外觀,而不會影響其中的Java代碼。
你可以稍微修改該框架的核心元素來滿足你應(yīng)用的特別需要。你可以加入新的或者修改現(xiàn)有的方法,或者修改模板的方法。重要的一點(diǎn)是,在你的整個(gè)應(yīng)用中,全部的JSP和JSP JavaBean都應(yīng)該使用這個(gè)架構(gòu)。
在剛開始時(shí),這個(gè)架構(gòu)看來比較復(fù)雜,特別是對于一個(gè)只有三頁的例子應(yīng)用來說。不過,如果你開始寫你的應(yīng)用,你將會發(fā)現(xiàn)當(dāng)應(yīng)用變復(fù)雜時(shí),代碼量的增長卻沒有預(yù)期的大。
這個(gè)架構(gòu)并沒有談到Web應(yīng)用中通常用到的多層設(shè)計(jì)。它主要集中在JSP的表現(xiàn)層。要建立真正的三層或者多層的系統(tǒng),JSP JavaBeamn將需要調(diào)用Enterprise JavaBean或者一些其它的商業(yè)邏輯實(shí)現(xiàn)。
例子還介紹了讓應(yīng)用跟蹤HTTP session的架構(gòu)。不過,如果你不想依賴session的話,該架構(gòu)仍然可以工作得很好。應(yīng)用的頁面和流程應(yīng)該是分別設(shè)計(jì)的。你可能將不需要SharedSessionBean。你的頁面只是用作表現(xiàn),而獨(dú)立的頁面將僅用作處理和驗(yàn)證,而不會有任何的HTML輸出。為此,你將主要使用beanFirstPassProcess() 方法。
最后的要點(diǎn):例子
我使用Tomcat3.1來測試這個(gè)例子,Tomcat3.1符合JSP1.1和Servlet2.2規(guī)范。這篇文章將不會討論如何在Tomcat中配置JSP應(yīng)用的詳細(xì)情況。
在測試該例子時(shí),你可以在VoteDB類的源代碼中得到Voter ID,以便可以進(jìn)行登錄測試(密碼和ID是一樣的)。
你必須在瀏覽器中允許cookies,否則不能成功運(yùn)行例子。如果你需要在禁止cookies時(shí)仍然可以運(yùn)行這個(gè)應(yīng)用,你必須重新寫URL(使用the javax.servlet.http.HttpServletResponse類的encodeURL()方法)。你需要重寫全部應(yīng)用中的URL,包括你的JSP中的鏈接,form標(biāo)記中的action,以及在JSP JavaBean中用來重定向URL的HTTP請求。
結(jié)論
這篇文章介紹的架構(gòu)為JSP的應(yīng)用設(shè)計(jì)提供了一個(gè)全面的解決辦法。它改進(jìn)了代碼重用,確定了應(yīng)用的體系,并且便于擴(kuò)展。一個(gè)最大的好處是將表現(xiàn)和邏輯分開,你可以獨(dú)立改變它們,而不會影響另一方。
|