中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

再談Cocoon兼談JSP (轉)

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

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


 


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


向AI問一下細節
推薦閱讀:
  1. jsp之分頁
  2. JSP (轉)

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

团风县| 梧州市| 伊春市| 南和县| 轮台县| 芜湖县| 嘉义县| 荥经县| 延安市| 民权县| 临夏市| 兰考县| 武鸣县| 峨山| 临沂市| 罗平县| 寿光市| 垣曲县| 佛冈县| 沅江市| 资溪县| 公安县| 衡山县| 昭通市| 汨罗市| 崇仁县| 和林格尔县| 彰化县| 尼木县| 江西省| 东辽县| 韩城市| 怀宁县| 昌图县| 水富县| 淮滨县| 石泉县| 化德县| 娄底市| 喜德县| 永清县|