溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

再談Cocoon兼談JSP (轉(zhuǎn))

發(fā)布時(shí)間:2020-08-08 22:12:02 來源:ITPUB博客 閱讀:160 作者:gugu99 欄目:編程語言
再談Cocoon兼談JSP (轉(zhuǎn))[@more@]

一年前的舊文,今天看來仍有其價(jià)值。


 


發(fā)信人: HAX(海曦), 信區(qū): webDevelop 標(biāo) 題: 再談Cocoon兼談JSP 發(fā)信站: 飲水思源 (2002年06月06日01:17:17 星期四), 站內(nèi)信件 著名的 IBM DW 中文網(wǎng)站,推出了Cocoon 2的簡介教程,從而再次把我們的目光吸引到Cocoon上。以下是我在CSDN的XML討論區(qū)發(fā)表的個(gè)人看法,貼過來漲點(diǎn)人氣。 IBM的這個(gè)教程非常好,強(qiáng)烈推薦。BTW,IBM的DW網(wǎng)站比CSDN有用多了。 關(guān)于Cocoon,希望有一本《XSP/Cocoon/XML核心技術(shù)內(nèi)幕》,基本上編譯了一些基本的Cocoon文檔,有一定的參考價(jià)值。這也是我看到的國內(nèi)唯一的一本Cocoon的參考書。但是該書如同其它國內(nèi)書籍一樣,對(duì)于基本理念的闡述不夠詳細(xì)和清晰。 Cocoon的原始動(dòng)力是為了實(shí)現(xiàn)Content-Style-Logic的三層分離,這是一個(gè)Web Engineer的很好的實(shí)踐。 Cocoon也源自于以前的ServerPages技術(shù)(主要是針對(duì)JSP,當(dāng)然ASP和 PHP也有同樣的問題)的缺陷。盡管JSP提出了JSP Model 2,來實(shí)現(xiàn) Model-View-Controller分離,即用JavaBean表示數(shù)據(jù)(內(nèi)容),用 servlet控制業(yè)務(wù)邏輯,用JSP實(shí)現(xiàn)顯示邏輯和表現(xiàn)層,但還是有些實(shí)踐上的缺陷。關(guān)于這個(gè)問題的描述,在2000年10月的文章《JSP 技術(shù) - - 是友還是敵?》(http://www-900.ibm.com/developerWorks/cn/ java/w-friend/index.shtml)中有詳盡的討論。 但是如果我們跟上技術(shù)發(fā)展的步伐,就會(huì)看到這個(gè)問題由于標(biāo)簽庫技術(shù)的成熟和servlet過濾器機(jī)制的誕生而得到解決。taglib早就有了,但是直到臨近JSTL即JSP Standard Tag Library的正式發(fā)布,其威力才真正顯現(xiàn)。 從角色任務(wù)上看,程序員主要負(fù)責(zé)JavaBean、Servlet和編寫自定義標(biāo)簽庫(現(xiàn)在可以使用JSTL從而大大減少負(fù)擔(dān));設(shè)計(jì)者編寫“不包含 java代碼”的JSP,實(shí)際上是若干種標(biāo)記的混合,HTML+JSTL+自定義標(biāo)簽。我認(rèn)為這種框架比較適合于以Java程序員為主的團(tuán)隊(duì),以及業(yè)務(wù)邏輯復(fù)雜的應(yīng)用。 注意,正如JSP的內(nèi)嵌Java代碼可以實(shí)現(xiàn)業(yè)務(wù)邏輯,JSP的TagLib技術(shù),一樣可以用于實(shí)現(xiàn)業(yè)務(wù)邏輯。當(dāng)然使用TagLib將比內(nèi)嵌Java代碼好許多,因?yàn)榇a被封裝到了TagLib中,因此對(duì)于小的應(yīng)用還是可以使用JSP,而不用寫Servlet。例如使用JSTL的sql tag,來直接處理數(shù)據(jù)庫(這實(shí)際上意味著基本沒有或者只有極其簡單的包含在sql語句中的業(yè)務(wù)邏輯)。也可以用像之類的tag來處理業(yè)務(wù)邏輯,雖然通常應(yīng)該只被用來處理顯示邏輯。固然,這些功能會(huì)“引誘”一些人過度使用TagLib的能力而破壞了設(shè)計(jì)原則,但對(duì)于原型開發(fā)、測試以及輕量級(jí)應(yīng)用,實(shí)在是太有用了!如果是企業(yè)級(jí)應(yīng)用,相信有能力做企業(yè)級(jí)應(yīng)用的程序員,也會(huì)有足夠的意識(shí)來按照MVC模式開發(fā)。 apache的struts是一個(gè)基于JSP實(shí)現(xiàn)MVC的很好的框架,建議有興趣的同志研究研究。 而Cocoon,用XML表示數(shù)據(jù)(內(nèi)容),用XSP(非常類似JSP的XML形式)編寫業(yè)務(wù)邏輯,用xslT實(shí)現(xiàn)表示層(HTML、WML、某種格式的XML甚至PDF),并用sitemap(Cocoon 2)集中管理。XSP邏輯單則與JSP的 TagLib從概念到用法非常相似,只是實(shí)現(xiàn)方法略有不同。JSP的TagLib 包括一個(gè)xml格式的定義文件和實(shí)現(xiàn)的Tag類,并被編譯使用;而XSP 邏輯單則在運(yùn)行時(shí)(當(dāng)然可以進(jìn)行Cache)應(yīng)用XSLT進(jìn)行從標(biāo)記到代碼的轉(zhuǎn)換。 (按照我對(duì)IBM教程的理解)事實(shí)上按照管道的概念,從原始數(shù)據(jù)到最終呈現(xiàn)可以有任意層,至于如何分層,每個(gè)層的用途,則在于設(shè)計(jì)者。這也是為什么Cocoon被定位于Web發(fā)布“框架”。 一個(gè)處理流程可以被描述為:(摘自IBM教程)從用戶接受請(qǐng)求。確定用來解釋該請(qǐng)求并生成響應(yīng)的適當(dāng)管道(使用匹配器)。從可用的預(yù)配置的組件構(gòu)造管道。指示管道為請(qǐng)求服務(wù)。將由管道生成的響應(yīng)返回用戶,可能對(duì)結(jié)果進(jìn)行高速緩存以便以后使用。 在JSP Model 2里,Servlet扮演“調(diào)度員”的角色,我們用它來控制任務(wù)分派,這有點(diǎn)類似管道所作的事情。事實(shí)上,Cocoon就是一個(gè)大 Servlet。只是Servlet在2.3之前缺乏管道機(jī)制,只能進(jìn)行簡單的 forward和include,如果需要多重處理機(jī)制,就不得不依靠擴(kuò)展庫(比如IBM的websphere),或者采用Cocoon。但是現(xiàn)在Servlet有非常強(qiáng)大的filter機(jī)制。這使得Cocoon與JSP越來越有結(jié)合的趨勢。 但Cocoon的特點(diǎn)在于,除了核心功能(Core-Cocoon)之外,它還包括內(nèi)部組件(包括Matchers、Generators、Transformers、Serializer s、Aggregators等)、內(nèi)部邏輯單(Response、Sitemap、XSP、XSP- Request、Util、XSP-Cookie、Log等)。這樣它就有一個(gè)非常適合Web 發(fā)布的環(huán)境。而使用JSP,相對(duì)來說,需要自己進(jìn)行配置和寫部分的基礎(chǔ)代碼。 從角色任務(wù)上看,站點(diǎn)管理員負(fù)責(zé)定義Sitemap,程序員主要負(fù)責(zé)XSP 邏輯單,設(shè)計(jì)者編寫XSLT樣式表(包括XSLT和目標(biāo)代碼如HTML),因?yàn)槌绦騿T和設(shè)計(jì)者都使用XSLT,其實(shí)就是在寫格式轉(zhuǎn)換,只是編寫者需要熟悉如何處理輸入和輸出(如設(shè)計(jì)者要面對(duì)HTML,程序員要考慮 數(shù)據(jù)庫)。此外,在此之前需要有額外的角色來定義所用到的XML或其他中間格式。我認(rèn)為這種框架比較適合于非Java程序員為主的團(tuán)隊(duì),管理員只要熟悉XML,程序員和設(shè)計(jì)者需要掌握XSLT;以及適合于業(yè)務(wù)邏輯相對(duì)簡單,而著重于xml數(shù)據(jù)和靈活的格式轉(zhuǎn)換需求的應(yīng)用。 -- ※ 來源:·飲水思源 bbs.sjtu.edu.cn·[FROM: 202.120.15.34]


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI