<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Change Dir

    先知cd——熱愛生活是一切藝術的開始

    統計

    留言簿(18)

    積分與排名

    “牛”們的博客

    各個公司技術

    我的鏈接

    淘寶技術

    閱讀排行榜

    評論排行榜

    Turbine框架

    首先,必須承認,turbine作為一個開發框架,已經快絕跡了,阿里巴巴的webx框架是基于turbine做的,所以這里簡單介紹一下,如果是阿里系新入職的同學,可以參考一下,當然任何開發人員如果感興趣turbine的設計,都歡迎。

    turbine是什么?

    turbine是一個應用開發框架,是一個開發web應用的工具箱,100%純java,且基于jdk1.3及以上。j2ee兼容且基于servlet,面向MVC構建。

    turbine的框架架構overview如下:

    image

    turbine的代碼結構包含了services、modules和util幾個大類,在上圖中可見,在servlet基礎之上,以MVC為基礎結構,modules包含了view部分及action,view主要是pages,其中有三種具體的module——screen、layout和navigation,action作為controller存在,toolbox提供了很多通用的tool,service則是整個框架的插件。一個完整的請求處理流程如下:

    image

    請求到來,turbine的controller處理,view部分渲染頁面,然后響應輸出。

    就順著這個流程,分析一下turbine的架構,對于view部分,我們最直觀想到的就是pages,page模塊值包含了幾個概念,是jsp的?還是velocity的?僅此而已。那么,以一個velocity頁面為例,如何組織呢?turbine講究的是“約定勝于配置”,記住這句真言,也就可以理解turbine了。在開發應用中,要建立三個頁面目錄,分別是screen、layout和navigation,screen是頁面的主體內容,layout是頁面的布局,而navigation則是一些頁面修飾元素,比如下面這個頁面結構:

    image

    這三個部分的調用順序如下:

    image

    因為約定的代碼結構是在三個目錄下寫對應名字的java代碼,因此名字如果不一致,那么就會出錯。當然,頁面模板目錄有默認的結構,如果在對應的目錄下找不到文件,就會讀取default.vm文件。

    image

    類似servlet,寫一個java文件對應處理screen頁面,那么代碼可能是這樣的:

    image

    可以看到,這種處理代碼很像servlet,方法就像是servlet標準中的doGet和doPost,只不過參數進行了封裝。其實,turbine就是一個servlet,看看turbine的源碼,Turbine類繼承了HttpServlet,實現了doGet和doPost方法,除了一開始初始化一系列配置相關的變量外,在接到一個http請求(get)后,turbine會執行doGet方法,turbine封裝了request和response,構建了一個叫做RunData的對象,Rundata是個接口,具體實現是DefaultTurbineRunData,其內部提供了獲取http各種數據的方法接口。在每個請求周期,turbine都會利用TurbineRunDataService新建一個RunData,將所有基于servlet的請求相關的東西塞到這個data中。然后,利用從request中得到的請求地址,再調用PageLoader找到對應的Page,執行其中的build方法,其中DefaultPage里會通過LayoutLoader和ScreenLoader來定位到對應的layout和screen,然后執行其中的build相關方法。這樣,一整套請求執行就完成了。值得說明的就是如果是表單提交,那么多數情況會多出一個action的執行,也是在page里進行的。如下圖

    image

    至于turbine中的tool,這類工具是通過配置,以“拉”模式被應用的。當應用啟動后,在vm頁面中以$開始調用某個tool的時候,就會初始化這個tool。當然,這里就用到了TurbinePullService。

    在初步了解了turbine后,如果使用過webx,那么就會知道并一定程度理解了webx的設計;沒使用過的,結合自己用過的mvc框架,也可以了解一些框架設計的思路。

    參考資料:

    Turbine Tutorial

    Apache Turbine

    本文全部圖片都截取自Turbine Tutorial,使用請注明

    posted on 2012-05-17 13:54 changedi 閱讀(2749) 評論(2)  編輯  收藏 所屬分類: Java技術

    評論

    # re: Turbine框架 2012-09-07 11:16 tubine

    官方文檔似乎還沒有你講解的詳細,官方文檔都不全。  回復  更多評論   

    # re: Turbine框架 2014-08-11 18:15 zi_hao

    你好,能把你這個helloword完整代碼給我一份不,zi_hao_jun@163.com謝謝!想找個例子真難,  回復  更多評論   

    主站蜘蛛池模板: 亚洲AⅤ男人的天堂在线观看| 亚洲精品天天影视综合网 | 无码久久精品国产亚洲Av影片| 日韩亚洲人成在线综合| 免费看大黄高清网站视频在线| 激情亚洲一区国产精品| 成人女人A级毛片免费软件 | 亚洲成AV人片在线观看| 抽搐一进一出gif免费视频| 亚洲日韩小电影在线观看| 99精品视频免费| 亚洲AV无码精品色午夜果冻不卡| a级日本高清免费看| 亚洲国产精华液网站w| **实干一级毛片aa免费| 亚洲成在人线电影天堂色| 99热在线精品免费全部my| 亚洲国产精品成人AV在线| 国产一区二区三区无码免费| 亚洲免费在线观看| 久久亚洲国产午夜精品理论片| 亚洲a一级免费视频| 亚洲欧洲国产经精品香蕉网| 免费黄网在线观看| 激情吃奶吻胸免费视频xxxx| 亚洲中文字幕日产乱码高清app| 日本一道本不卡免费 | 男女一边桶一边摸一边脱视频免费| 中文字幕久久亚洲一区 | 国产一卡2卡3卡4卡2021免费观看 国产一卡2卡3卡4卡无卡免费视频 | 无码人妻丰满熟妇区免费| 亚洲精品电影天堂网| 四虎永久在线精品免费网址 | 国产亚洲一卡2卡3卡4卡新区| 亚洲日本中文字幕一区二区三区| 中文精品人人永久免费| 亚洲人妖女同在线播放| 亚洲AV无码之日韩精品| 久久成人a毛片免费观看网站| 四虎亚洲精品高清在线观看| 亚洲中文字幕成人在线|