AppFuse學習筆記-組件和工具

    使用大量的第三方組件是Appfuse的主要特點,接下來我們就看看他都使用了什麼組件。
    1. DisplayTag:自我覺得是AppFuse裏降低編碼量最大的組件,我專門寫了一篇使用DisplayTag的文章,http://blog.csdn.net/clearwater21cn/archive/2005/02/21/296316.aspx,這裏就不說了。
    2. JSTL:JSP Standard Tag Library是建立在JSP上的某種custom actions(自定操作)或custom tags(自定標籤),類似於html語法中的標記。JSTL提供了諸如循環、條件、數據庫訪問、XML處理、國際化(i18n)等開發上的工具和流程。本系統中主要使用JSTL的核心標記庫及格式化標記庫標籤實現動態的Web頁和國際化支持。
    3. Sitemesh:用於建立複合視圖。旨在提高頁面的可維護性和複用性。sitemesh應用Decorator模式,用filter截取request和response,把頁面組件head,content,banner結合爲一個完整的視圖,可方便的建立複合視圖模式。
    4. Struts Menu:AppFuse作者寫的基於JSP和Struts的應用程序的Web菜單框架。利用它可以很方便的通過XML定義及JSP標籤構建樹形菜單。
    5. OSCache:OSCache是OpenSymphony組織提供的一個J2EE架構中Web應用層的緩存技術實現組件。通過緩存頁面的輸出結果,可以很顯著的改善系統運行性能。並能夠改善系統的穩定性。
    6. UrlRewrite:地址變換技術,可以將應用中的url變換成自定義樣式。
    7. Acegi:1.8加入的新組件,屬於Spring的子項目。它使用Spring的方式提供了安全和認證安全服務,包括使用Bean Context,攔截器和麪向接口的編程方式。因此,Acegi安全系統能夠輕鬆地適用於複雜的安全需求。AppFuse用它實現了用戶的認證和授權管理。
    8. Quartz:AppFuse中沒有使用這一組件,但我覺得它提供的功能很常用,並實現的很好,因此順帶提一下。Quartz是一個實現任務定時調度的框架,它提供了簡單易用的接口,實現了可調度任務的接口,並實現了強大的任務調度運行時(可以獨立運行、可以作爲EJB部署於容器中、本身支持cluster,等等),這一組件由Spring提供。

    AppFuse還給我們提供或介紹了很多好用的工具,能大大加快我們的開發速度。如果能夠很好的使用這些工具,我們可以只給出一個表的POJO,它們就能夠自動生成所有的操作該POJO對應的數據表通常需要的增、刪、改、查功能的模型層、控制層、視圖層文件,幾乎不用再修改就可以完成對這張表的所有基本操作。
1. AppGen
    AppFuse給我們提供了一個通過xdoclet生成代碼的工具——AppGen,我們來看看它怎麼用。
    POJO(Plain Old Java Object)代表一個存儲在持久性存儲器(如數據庫)中的實體的對象視圖。它通過hbm.xml配置文件與存儲器中的數據相映射。
    首先,你需要有這個表的POJO,放在src/dao/org/appfuse/model中。
    在控制檯中進入項目下的extras/appgen路徑,鍵入ant -Dmodel.name=XXX -Dmodel.name.lowercase=xxx,第一個XXX處寫你的POJO類名,第二個xxx處寫這個對象在小寫時的名字。當控制檯出現BUILD SUCCESSFUL時,代碼就生成了。代碼在extras/appgen/build/gen文件夾下,包括java源代碼(DAO、Service、Action)、單元測試、JSP、資源文件、xml配置文件、源數據等,目錄結構與原項目一致,你只要把需要的目錄拖到相應的項目根目錄下就可以了,當然了,有的代碼是需要在已有的文件上進行修改的,主要是屬性文件和xml文件,這時需要你把新的代碼手動轉移到原來的文件中。
    AppGen也可以爲你省去這個麻煩,只要在前面的那段命令中加一個install,即ant install -Dmodel.name=XXX -Dmodel.name.lowercase=xxx,AppGen會直接把代碼生成到你的項目中去,包括修改已存在的文件。這時爲了保險起見,最好先備份一下代碼。

2. xdoclet註釋
    AppGen生成的文件缺少了hbm.xml和Action Form Bean,難道我們要自己寫嗎?不是的。仔細察看build.xml文件就會發現實際上我們下載的AppFuse最初的源代碼中並沒有hbm.xml、FormBean,甚至連web.xml、struts-config.xml、validation.xml都沒有,這些文件都是在我們執行ant setup時build.xml使用xdoclet自動生成的。 甚至連數據庫和表、表裏的數據也可以自動生成。奧祕都在POJO中。
    查看User.java這個POJO你會發現裏面除了java代碼,還有很多註釋,有@hibernate開頭的,@struts開頭的,這些都是xdoctlet的標籤。我們大致講解一下:
    @struts.form:用來生成Form Bean,如User.java中寫了@struts.form include-all="true" extends="BaseForm",意思是該POJO中每一個屬性在Form Bean中都要有,並且生成的Form Bean文件要繼承BaseForm。如果不希望生成的FormBean包含POJO的所有屬性,可以在相關的屬性get方法前填寫註釋@struts.form-field,意思是該屬性要在FormBean中生成。那麼如果我們要在FormBean中添加一些POJO沒有的屬性或方法怎麼做呢?打開metadata/web文件夾,可以看到有一個xdoclet-UserForm.java文件,裏面是User.java在生成Form Bean時新加入的代碼,我們同樣可以把我們自己在FormBean中增加的代碼新建到一個xdoclet-POJOFrom.java文件中就好了。
    @struts.validator:用來生成validation.xml文件。最常用的如@struts.validator type="required",意爲該屬性在表單中需要有必填的驗證。當然前提是這個屬性也在FormBean中。validation還有一項配置是自定義的校驗規則,使用正則表達式表示。metadata/web中有一個文件validation-global.xml,裏面就有郵編等規則的配置。
    @hibernate:這個是比較複雜的,用來生成hbm.xml文件。其實內容與hbm.xml基本一致,所以如果會寫hbm.xml,這個也就會寫了。初學者可以先建表,使用工具生成hbm.xml,再仿照生成的hbm.xml內容寫這個標籤。一旦標籤寫好了,不光可以生成hbm.xml,build.xml還可以自動在數據庫中建表。
    @struts.action/@struts.action-forward:POJO不能生成struts-config.xml,這個標籤是要寫到Action中的。如果使用AppGen生成Action,你會看到@struts.action已經寫好了,這個標籤的作用就是生成當前Action在struts-config.xml中的映射代碼,寫法與struts-config.xml中一致,其實就是把xml中的配置移植到Action中。還有一個問題,如果我們要在struts-config.xml中進行與Action無關的全局的配置,如global-forwards呢?瀏覽metadata/web文件夾你會發現裏面有多個xml文件,其中以global和struts開頭的文件就是寫這些配置的。build.xml在setup時會自動將這些文件聯合Action中的註釋生成一個完整的struts-config.xml文件。
    接下來還有web.xml文件,你一定猜到了同樣需要在metadata/web中配置。除了剛纔提到的那些xml文件,剩下的基本都是用於配置web.xml的了。我們自定義的filter和listener是有具體類的,所以我們同樣可以在這些filter和listener類中添加註釋,具體例子參考AppFuse中的filter吧,很簡單的。
    進行了所有配置後,運行ant setup,build.xml會根據POJO、Action等自動生成FormBean、hbm.xml、struts-config.xml、validation.xml、web.xml,並在數據庫中創建相應的表。看起來可能有點複雜,但如無特殊要求,對數據表的增、刪、改、查,只需要寫好POJO,一切都可以搞定。

3. Commonclipse
    org.appfuse.model中有一個抽象類BaseObject,定義了三個抽象方法:hashCode()、equals()和toString(),其中前兩個是Hibernate要求POJO必須實現的方法。所有的POJO都繼承自這個類,當然也要實現這三個方法,這個工具可以幫助你實現這三個方法。
    我們可以使用Eclipse在線獲得這個工具。步驟:依次點擊"Help" -> "Software updates" -> "Find and Install" -> "Search for new features to install",點擊"add update site",輸入http://commonclipse.sourceforge.net,OK。
    接下來需要對Commonclipse進行一些配置。點擊"Window"->"Preferences",選擇"Java",你會在菜單中看到Commonclipse。點擊General標籤,將複選框全部鉤掉(全不選)。點擊"OK"。
    選中一個類,右擊,你會在菜單中看到Commonclipse。選擇要生成的方法,就這麼簡單。

發佈了27 篇原創文章 · 獲贊 10 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章