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

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

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

    posts - 5, comments - 24, trackbacks - 0, articles - 20
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    AppFuse學習筆記-組件和工具 3

    Posted on 2007-04-27 17:03 kook 閱讀(520) 評論(0)  編輯  收藏 所屬分類: J2EE
    使用大量的第三方組件是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。選擇要生成的方法,就這么簡單。

    主站蜘蛛池模板: 久久精品中文字幕免费| 美女视频黄的免费视频网页| 日韩亚洲国产高清免费视频| 亚洲av日韩av天堂影片精品| 日韩精品无码专区免费播放| 国产AV无码专区亚洲AVJULIA| 精品国产免费人成网站| 久久亚洲精品无码观看不卡| www.xxxx.com日本免费| 久久久久亚洲精品男人的天堂 | 国内精品久久久久影院亚洲| 亚洲免费福利在线视频| 亚洲Av高清一区二区三区| 野花高清在线观看免费完整版中文| 国产精品亚洲四区在线观看| 性感美女视频在线观看免费精品| 亚洲熟女精品中文字幕| 国产精品二区三区免费播放心 | mm1313亚洲精品无码又大又粗| 免费大片黄在线观看| 亚洲欧洲日产国码无码网站| 免费人成黄页在线观看日本| 亚洲最大的视频网站| 最近2019中文免费字幕| 久久精品国产亚洲AV未满十八| 亚洲日韩中文字幕日韩在线| 青柠影视在线观看免费高清| 亚洲一区二区三区免费视频| 国产亚洲精品免费| a级在线观看免费| 亚洲制服丝袜第一页| 国产一卡二卡≡卡四卡免费乱码| aa级毛片毛片免费观看久| 久久99亚洲网美利坚合众国| 女人被弄到高潮的免费视频| 一区二区三区免费高清视频| 久久精品亚洲一区二区三区浴池| 麻豆国产人免费人成免费视频| 国产线视频精品免费观看视频| 亚洲国产成人久久77| 亚洲国产一区明星换脸|