隨筆-34  評(píng)論-1965  文章-0  trackbacks-0

          前一陣子我利用業(yè)余時(shí)間幫朋友開(kāi)發(fā)了一個(gè)庫(kù)存管理系統(tǒng),雖然系統(tǒng)不算復(fù)雜,但是麻雀須小五臟俱全,系統(tǒng)包括了一般企業(yè)應(yīng)用常見(jiàn)的功能如報(bào)表等。下圖為系統(tǒng)的截屏。

          Screen Capture of ASMS

          由于最近有空,我覺(jué)得有必要把工程清理一下,作為一個(gè)模板。那以后再編寫(xiě)類(lèi)似項(xiàng)目的時(shí)候,簡(jiǎn)單套用即可。下圖為系統(tǒng)的總體設(shè)計(jì)圖。

          SSF Overview

          由上圖,我們可以看出系統(tǒng)使用了Spring、Hibernete、Seam、JSF、Richfaces和Birt等開(kāi)源框架。相信大家如果有留意企業(yè)開(kāi)發(fā)技術(shù)的話(huà),對(duì)上述名詞應(yīng)該不會(huì)陌生。在整合這些框架的時(shí)候,為了使它們更能滿(mǎn)足現(xiàn)實(shí)世界的需求和更易用,我進(jìn)行了一些擴(kuò)展,起名為SSF(Simple Seam Framework,簡(jiǎn)單Seam框架)。

          使用SSF的好處

          由于在以往的工作中經(jīng)常使用上述框架,我發(fā)現(xiàn)它們都或多或少都存在一些不足之處,SSF會(huì)嘗試完善它們。

          1. 我們?cè)谠O(shè)計(jì)數(shù)據(jù)庫(kù)表的時(shí)候都會(huì)加幾個(gè)用于做安全審查(Audit)的列,如記錄的創(chuàng)建人、創(chuàng)建時(shí)間、最后修改人和修改時(shí)間等。而且,為了實(shí)現(xiàn)數(shù)據(jù)樂(lè)觀鎖,在每個(gè)表里加上一個(gè)版本列。在SSF所有的數(shù)據(jù)庫(kù)實(shí)體(Entity)都繼承虛基類(lèi)com.whatisjee.ssf.domain.entity.AbstractEntity。它含有上面提及的所有與業(yè)務(wù)無(wú)關(guān)的信息和對(duì)數(shù)據(jù)庫(kù)映射元數(shù)據(jù)。如此一來(lái),我們?cè)诰筒挥迷诿總€(gè)實(shí)體類(lèi)里重復(fù)一遍。另外,通過(guò)Hibernate的攔截器(Interceptor),在持久化實(shí)體時(shí)將上述信息填入數(shù)據(jù)庫(kù)。
          2. 在Spring 2.5版本里,如果我們選擇使用Annotation配置Bean,默認(rèn)是不能將配置資源注入到Bean之中,所以SSF也添加這個(gè)功能,實(shí)現(xiàn)原理大家可以參考我的以前寫(xiě)一篇文章《擴(kuò)展Spring——使用 Annotation將配置資源注入到Bean中》。
          3. 雖然Seam針對(duì)在JSF里進(jìn)行數(shù)據(jù)分頁(yè)和排序提供了解決方法,但我認(rèn)為此方法過(guò)于簡(jiǎn)陋,而且不能使用Richfaces的分頁(yè)控件<rich:datascroller>進(jìn)行分頁(yè)。通過(guò)SSF數(shù)據(jù)訪(fǎng)問(wèn)方式,您可以完美結(jié)合Richfaces的分頁(yè)控件簡(jiǎn)單地實(shí)現(xiàn)分頁(yè)功能。

            Pagine

          4. 默認(rèn)的JSF的錯(cuò)誤提示方式太不用戶(hù)友好,不能滿(mǎn)足當(dāng)今用戶(hù)對(duì)界面越來(lái)越高的要求。通過(guò)擴(kuò)展Seam的<s:decorate>控件的展現(xiàn)方式,當(dāng)輸入框出現(xiàn)錯(cuò)誤輸入的情況,它們將會(huì)被高亮,當(dāng)用戶(hù)將光標(biāo)移進(jìn)這些輸入框,錯(cuò)誤信息將浮動(dòng)顯示在其旁邊。如下圖所以。
          5. Error

          6. 通過(guò)Birt提供的報(bào)表查看器(Report Viewer)集成報(bào)表工具的時(shí)候,如果不加額外的限制,只要?jiǎng)e人知道URL,完全可以不用登錄系統(tǒng)也可以查看系統(tǒng)報(bào)表。這顯然不是我們?cè)敢饪吹降摹Mㄟ^(guò)繼承org.eclipse.birt.report.filter.ViewerFilter,SSF可以限制只有已經(jīng)授權(quán)的用戶(hù)方可查看報(bào)表。

          上面列舉了SSF對(duì)不同框架的部分改進(jìn)。當(dāng)然,使用SSF的最大好處還是免去您對(duì)如何完美整合這些時(shí)下最流行框架的操心。

          開(kāi)始體驗(yàn)SSF

          以前的廣告有一種常見(jiàn)的做法,就是在對(duì)商品大吹特吹之后,蹦出一個(gè)家伙問(wèn)一句:“請(qǐng)問(wèn)我可以在那里買(mǎi)到XXX呢?”如果大家已經(jīng)被我上面的廣告弄得躍躍欲試的話(huà),可以到GOOGLE CODE下面用SVN下載工程源代碼。不過(guò)在此之前大家需要安裝幾個(gè)軟件:

          1. MySQL 5.x,可以到http://dev.mysql.com/downloads/mysql/下載。它的安裝過(guò)程很簡(jiǎn)單,如果你想省事呢,直接把MYSQL作為自動(dòng)啟動(dòng)的服務(wù)。當(dāng)然,你也可以設(shè)成手工啟動(dòng),需要的的時(shí)候才啟動(dòng)它。
          2. Eclipse IDE for Java EE Developers 3.5.2,之所以不用最新版,是因?yàn)镴Boss Tools最新發(fā)布版本3.1只支持Eclipse 3.5.2。請(qǐng)點(diǎn)擊這里下載,下完解壓到某個(gè)目錄即可。
          3. JBoss Tools 3.2,用來(lái)支持Seam開(kāi)發(fā)。下載地址:http://downloads.sourceforge.net/jboss/JBossTools-Update-3.1.1.v201006011046R-H111-GA.zip
          4. Tomcat 6.x,下載地址:http://tomcat.apache.org/download-60.cgi

          下載完成之后,可以參考我制作的視頻進(jìn)行安裝和配置(當(dāng)然這是我第一次制作視頻,做得不好的地方請(qǐng)大家多提意見(jiàn))。當(dāng)然如果你已經(jīng)有了IDE,可以直接到GOOGLE CODE(http://code.google.com/p/idiner/source/checkout)的SVN(https://idiner.googlecode.com/svn/trunk/)獲取工程代碼。

          小結(jié)

          通過(guò)上面的介紹,相信大家已經(jīng)對(duì)SSF有部分了解,甚至親自試用了一下。我會(huì)在以后的文章時(shí),就如何在SSF上開(kāi)發(fā)相應(yīng)的需求進(jìn)行更詳細(xì)的講解。感興趣的朋友,敬請(qǐng)關(guān)注!:-)

          posted on 2010-11-15 08:48 Max 閱讀(7159) 評(píng)論(7)  編輯  收藏 所屬分類(lèi): Seam系列

          評(píng)論:
          # re: SSF入門(mén) 2010-11-15 09:17 | 硫化黑
          感謝樓主的精彩教程  回復(fù)  更多評(píng)論
            
          # re: SSF入門(mén) 2010-11-15 14:51 | junxy
          不知道樓主同時(shí)使用spring和seam的原因何在啊?  回復(fù)  更多評(píng)論
            
          # re: SSF入門(mén)[未登錄](méi) 2010-11-15 22:33 | yansj1997
          好,又學(xué)到東西了!  回復(fù)  更多評(píng)論
            
          # re: SSF入門(mén) 2010-11-16 10:09 | chenlei
          收藏了,關(guān)注后續(xù)  回復(fù)  更多評(píng)論
            
          # re: SSF入門(mén) 2010-12-05 10:01 | lizhiguo
          樓主,厲害啊,不知道你的驗(yàn)證高亮顯示,鼠標(biāo)移上去顯示消息是怎樣做的,能貼出代碼嗎?謝謝  回復(fù)  更多評(píng)論
            
          # re: SSF入門(mén) 2010-12-05 10:17 | lizhiguo
          哈哈,好大的過(guò)程,謝謝樓主,看到工程的代碼了,先前只看了圖,沒(méi)有看下面的
            回復(fù)  更多評(píng)論
            
          # re: SSF入門(mén)[未登錄](méi) 2010-12-20 16:32 | 菜菜
          你的報(bào)表界面怎么做的,挺好看  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 白水县| 宿州市| 红安县| 河间市| 姜堰市| 体育| 卓资县| 城口县| 哈密市| 永嘉县| 湘潭市| 永宁县| 银川市| 丹凤县| 阜康市| 永仁县| 双牌县| 兴宁市| 钦州市| 安吉县| 油尖旺区| 湄潭县| 甘洛县| 茶陵县| 老河口市| 常熟市| 商南县| 芜湖县| 吕梁市| 绿春县| 海伦市| 西平县| 阿勒泰市| 平远县| 腾冲县| 吴堡县| 新余市| 黄石市| 海南省| 民乐县| 乌海市|