<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 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    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提供了諸如循環(huán)、條件、數(shù)據(jù)庫訪問、XML處理、國際化(i18n)等開發(fā)上的工具和流程。本系統(tǒng)中主要使用JSTL的核心標記庫及格式化標記庫標簽實現(xiàn)動態(tài)的Web頁和國際化支持。
        3. Sitemesh:用于建立復合視圖。旨在提高頁面的可維護性和復用性。sitemesh應用Decorator模式,用filter截取request和response,把頁面組件head,content,banner結(jié)合為一個完整的視圖,可方便的建立復合視圖模式。
        4. Struts Menu:AppFuse作者寫的基于JSP和Struts的應用程序的Web菜單框架。利用它可以很方便的通過XML定義及JSP標簽構(gòu)建樹形菜單。
        5. OSCache:OSCache是OpenSymphony組織提供的一個J2EE架構(gòu)中Web應用層的緩存技術(shù)實現(xiàn)組件。通過緩存頁面的輸出結(jié)果,可以很顯著的改善系統(tǒng)運行性能。并能夠改善系統(tǒng)的穩(wěn)定性。
        6. UrlRewrite:地址變換技術(shù),可以將應用中的url變換成自定義樣式。
        7. Acegi:1.8加入的新組件,屬于Spring的子項目。它使用Spring的方式提供了安全和認證安全服務,包括使用Bean Context,攔截器和面向接口的編程方式。因此,Acegi安全系統(tǒng)能夠輕松地適用于復雜的安全需求。AppFuse用它實現(xiàn)了用戶的認證和授權(quán)管理。
        8. Quartz:AppFuse中沒有使用這一組件,但我覺得它提供的功能很常用,并實現(xiàn)的很好,因此順帶提一下。Quartz是一個實現(xiàn)任務定時調(diào)度的框架,它提供了簡單易用的接口,實現(xiàn)了可調(diào)度任務的接口,并實現(xiàn)了強大的任務調(diào)度運行時(可以獨立運行、可以作為EJB部署于容器中、本身支持cluster,等等),這一組件由Spring提供。

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

    2. xdoclet注釋
        AppGen生成的文件缺少了hbm.xml和Action Form Bean,難道我們要自己寫嗎?不是的。仔細察看build.xml文件就會發(fā)現(xiàn)實際上我們下載的AppFuse最初的源代碼中并沒有hbm.xml、FormBean,甚至連web.xml、struts-config.xml、validation.xml都沒有,這些文件都是在我們執(zhí)行ant setup時build.xml使用xdoclet自動生成的。 甚至連數(shù)據(jù)庫和表、表里的數(shù)據(jù)也可以自動生成。奧秘都在POJO中。
        查看User.java這個POJO你會發(fā)現(xiàn)里面除了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還有一項配置是自定義的校驗規(guī)則,使用正則表達式表示。metadata\web中有一個文件validation-global.xml,里面就有郵編等規(guī)則的配置。
        @hibernate:這個是比較復雜的,用來生成hbm.xml文件。其實內(nèi)容與hbm.xml基本一致,所以如果會寫hbm.xml,這個也就會寫了。初學者可以先建表,使用工具生成hbm.xml,再仿照生成的hbm.xml內(nèi)容寫這個標簽。一旦標簽寫好了,不光可以生成hbm.xml,build.xml還可以自動在數(shù)據(jù)庫中建表。
        @struts.action/@struts.action-forward:POJO不能生成struts-config.xml,這個標簽是要寫到Action中的。如果使用AppGen生成Action,你會看到@struts.action已經(jīng)寫好了,這個標簽的作用就是生成當前Action在struts-config.xml中的映射代碼,寫法與struts-config.xml中一致,其實就是把xml中的配置移植到Action中。還有一個問題,如果我們要在struts-config.xml中進行與Action無關的全局的配置,如global-forwards呢?瀏覽metadata\web文件夾你會發(fā)現(xiàn)里面有多個xml文件,其中以global和struts開頭的文件就是寫這些配置的。build.xml在setup時會自動將這些文件聯(lián)合Action中的注釋生成一個完整的struts-config.xml文件。
        接下來還有web.xml文件,你一定猜到了同樣需要在metadata\web中配置。除了剛才提到的那些xml文件,剩下的基本都是用于配置web.xml的了。我們自定義的filter和listener是有具體類的,所以我們同樣可以在這些filter和listener類中添加注釋,具體例子參考AppFuse中的filter吧,很簡單的。
        進行了所有配置后,運行ant setup,build.xml會根據(jù)POJO、Action等自動生成FormBean、hbm.xml、struts-config.xml、validation.xml、web.xml,并在數(shù)據(jù)庫中創(chuàng)建相應的表。看起來可能有點復雜,但如無特殊要求,對數(shù)據(jù)表的增、刪、改、查,只需要寫好POJO,一切都可以搞定。

    3. Commonclipse
        org.appfuse.model中有一個抽象類BaseObject,定義了三個抽象方法:hashCode()、equals()和toString(),其中前兩個是Hibernate要求POJO必須實現(xiàn)的方法。所有的POJO都繼承自這個類,當然也要實現(xiàn)這三個方法,這個工具可以幫助你實現(xiàn)這三個方法。
        我們可以使用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。選擇要生成的方法,就這么簡單。

    主站蜘蛛池模板: 午夜一区二区免费视频| 国产在线a免费观看| 亚洲av手机在线观看| 亚洲人成电影网站久久| 最近中文字幕免费mv视频8| 亚洲人成人77777在线播放| 99久久久精品免费观看国产| 亚洲精品午夜在线观看| 最近中文字幕mv免费高清视频8| 亚洲的天堂av无码| 啦啦啦完整版免费视频在线观看 | 又大又粗又爽a级毛片免费看| 亚洲精品无码不卡在线播放| 日韩免费无砖专区2020狼| 亚洲欧美综合精品成人导航| 国产一区二区三区在线免费| 人成免费在线视频| 亚洲级αV无码毛片久久精品| 无码国产精品一区二区免费3p| 亚洲欧洲日产国码在线观看| 成年女人毛片免费视频| 国产亚洲日韩在线a不卡| 国产亚洲精品免费视频播放| 久久这里只精品99re免费| 亚洲自国产拍揄拍| 可以免费观看一级毛片黄a | 51精品视频免费国产专区| 亚洲jjzzjjzz在线观看| 免费亚洲视频在线观看| 13小箩利洗澡无码视频网站免费| 久久久无码精品亚洲日韩京东传媒 | 亚洲另类春色国产精品| 日韩人妻无码免费视频一区二区三区| 猫咪免费人成网站在线观看入口| 亚洲国产一二三精品无码| 国产又黄又爽又猛免费app| 人体大胆做受免费视频| 中文字幕亚洲精品资源网| 国产精品自在自线免费观看| 精品视频在线免费观看| 亚洲中文字幕无码久久2020|