緣起
Jetspeed是Apache Jakarta小組的開放源碼門戶系統。它使得最終用戶可以通過WAP手機、瀏覽器、PDA等各種設備來使用各種各樣的asp/class=wordstyle>網路資源(比如應用程式、數據以及這之外的任何class=wordstyle>網路資源)。在這裡,Jetspeed扮演了一個處於信息和用戶間的hub的角色。
1999年左右,Jetspeed立項並開始運作。很快,Jetspeed的發展就超越了最初立項時的目標,以任何人都難以想像的速度發展。用Jakarta小組自己的話說,就是:“The only problem is that this was beyond the scope of this project.”。
現在,Jetspeed逐漸演變成了一個基於Turbine(也是Jakarta小組的傑作)這個asp/ class=wordstyle>網路套用框架(Frameworks)的Web套用引擎。
1.1 Jetspeed
簡單的看,Jetspeed就是添加了門戶組件的Turbine。它本身既是Portlet容器,又包含了大量的實用Portlet。在Jetspeed中,Portlet的管理主要由以下兩種檔案完成:
l .xreg註冊檔案
l .psml配置檔案
.xreg檔案一般放置在webapp-name/WEB-INF/conf目錄下,檔案名稱不限。一個Portlet必須通過.xreg檔案註冊才能在Jetspeed中使用。每一個Portlet組件都是能夠被系統實例化,用於輸出特定Web文檔的java類。
.psml檔案一般放置在webapp-name/WEB-INF/psml目錄下,檔案名稱不限。.psml設定了頁面內容的顯示模式,比如:一個頁面如何布局,分為多少列、每列能有多少個窗格、各個窗格的內容是由哪個Portlet輸出的等等內容。
概述
Turbine是一個基於Servlet的Web Application Frameworks,使得java開發者可以快速、安全的構建自己的<cite class="highlight" highlight="true">asp/cite>/ class=wordstyle>網路套用。
Turbine是一個完全的MVC套用框架,主要由以下幾個部分組成:
l 表述層:Velocity(又是Jakarta小組的傑作,一個基於Java的模版引
擎)或JSP
l 數據層:Torque和Peers
l 控制層:Turbine
l HTML Form Validation:Intake
l 日誌:Log4j和Turbine2中的Logging Service
l Service Frameworks:Turbine (在Turbine3中,此部分被稱為Fulcrum)
本文主要介紹Turbine中的控制層,其餘部分請參考各自的文檔或參考資料中提到的站點。
基石
Turbine主要由五部分組成,如下圖所示:
aspectratio="t" v:ext="edit">
我們先對這五個部分進行單獨介紹,再介紹Turbine的詳細流程。
3.1 Action
Action是一個執行特定事務的模組,Turbine中的SessionValidator就是一個典型的Action。
在用戶提交一個HTML表單的時候,其中有一個隱含的欄位就包含了將要被執行的Action的信息。Action機制使得java開發者更容易的處理用戶提交的數據。例如,對於“Logout”這個事務,在系統的多個地方都可能被調用;因此,將Logout的事務處理流程寫成一個可重用的模組,使得這個事務可以被更方便的調用。這個可重用的模組就是一個Action。通過系統中多種多樣的Action,每個Action處理用戶數據中不同的信息,這樣,整個系統就顯得更加簡單明快,更易編寫、擴充與維護。
並且,Turbine通過Action機制中,還可以使程式流程更加靈活多變。例如,在Page的處理過程中,可以通過執行特定的Action,幫助判斷其後將要顯示哪個Screen。這時,Action的執行結果就可以作為以後程式的判斷依據。
Action是系統中可重用的事務處理組件,Action機制使得Turbine擁有靈活、清晰的事務處理流程。
3.2 Page
Page模組是在頁面生成過程中最先被執行的一個模組,它可以被認為是Action、Layout、Screen、Navigation之間的協調者和組織者。
一般情況下,Page先執行用戶請求中的指定的Action(如果有的話);然後,根據其後要裝載的Screen來選擇並執行相應Layout。請注意,在這個時候,究竟是執行哪一個Screen,可能會因為Action執行結果的不同而改變。並且,Screen的Layout也可能因為TurbineResources.properties配置檔案中對DefaultLayout的設定不同而改變。
3.3 Screen
Screen模組從根本上說,是網頁的“軀幹”。這也是生成網頁中的HTML代碼的地方。Screen是整個Turbine中最主要的表述(View)部分。
Screen是由Layout調用的。
請注意:此時,你完全可以調用各種外部模組,比如EJB,來獲得數據以構建你的HTML頁面。也可以通過JSP,甚至是使用Blog來構建頁面內容^_^。
3.4 Navigation
一般情況下,網站都有自己的Top & Bottom Navigation;