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

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

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

    泥巴麒麟的BLOG

    shenAwesome@hotmail.com 縱不能,將醉做生涯,休拘束

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      195 Posts :: 2 Stories :: 80 Comments :: 0 Trackbacks

    目前情況

           自動工單管理系統,使用自開發的類似struts的架構,數據庫訪問經過包裝,返回string數組。 其架構問題:

    Action使用同步鎖,導致在同一時間只能進行一次web訪問,如同時有其他訪問,將不必要的被阻塞。

    結構不夠清晰,不能夠完全按mvc的思想明確的分離各層邏輯。jsp代碼過多且結構零亂,沒有把通用的代碼用taglib等技術抽象,后續開發困難

    業務邏輯和數據庫緊密相關,而沒有從表實現中抽象出來。同時,在每次使用同樣的業務邏輯的時候都要反復的進行相關sql編程。故而與數據庫有強耦合,相關程序重用性低,可讀性差。其翻頁機制邏輯橫貫架構,使層次高度耦合,而數據庫封裝也可能存在性能問題。

    同時,客戶也提出了不少整改意見,而在原版本的修改和升級都會較為困難,而且對長期的維護不利。

    項目分析:

           目前的各種業務管理系統還是將以j2eeb/s架構為主流,所以有必要完成一個通用的,穩固的整體架構作為以后各種應用的堅實基礎。

    我認為應盡可能使用業內先進的免費框架技術而不是自開發框架。好處是:

    這些框架技術凝聚很多業內精英的智慧,而且經過發布和使用,技術體系已經成熟,性能有所保障。

    層次清晰,符合先進的技術理念和設計模式。同時也容易找到熟悉相關技術的人才,維護和后續開發方便。

    相比之下自開發框架因為技術實力和時間問題,很難達到這些業內領先框架的技術高度。

       分析一般的j2ee應用,應有如下層次:

    顯示層 負責界面顯示,接受用戶指令

    顯示層有較為經典的MVC,即model,view,control,進一步了細化了顯示層的工作。此類著名框架有strutswebwork,spring-mvc等。經考察,我認為struts雖然是時間最長最成熟的技術,但易用性和一些架構理念不如webwork,而view層的開發應盡可能簡單快速。故選定用webwork.

     

    邏輯層 負責進行業務邏輯的實現

    目前的開發過程,往往陷入邏輯層和數據訪問層不能分離的情況。面向對象的項目開發最后演變成成程序員在程序各處手工寫sql操表。這樣做的優點是開發迅速有效,問題是結構將日益混亂,每次邏輯的變化將不得不修改分散于各處的sql語句,而后續的程序員也必須了解整個程序和數據庫結構才能進行修改。如果是短期小型項目,可以用這種方式。否則的話,我認為應盡可能貫徹面向對象思想,把業務邏輯抽象出來。

    而邏輯層的工作就是針對實體對象進行業務邏輯的實現。我們針對所有的業務操作,對外提供service接口,既服務接口。這類似tuxedoejb所采用的業務外觀模式。而為填補service生存周期管理的空白,我們使用著名的spring框架。優點:

    實現Ioc,使各層次的耦合可配置化。

    按需要實現單例模式等,進行生存周期管理

    事務管理。Spring的宣言事務管理(Declarative transaction management)使得一般場景的代碼中將不需要考慮事務問題而集中于業務邏輯

    攔截機制將為程序提供很好的擴展空間

     

        3.  數據訪問層 負責將類操作映射為數據庫操作。進行實體類的持久化。從而將所有的數據訪問工作集中起來

               這一層我們將完成實體類持久化(persistence),有若干選擇:

                         1 jdbc實現

                         2 使用ORM工具 hibernate,ibatis,jdo

    經過實寫代碼,感覺用jdbc實現dao效率非常低,而且容易出錯。經過考量選用hibernate。和ibatis相比雖然上手慢且不夠靈活,但其架構思想和強大功能都受到業內一致好評,甚至是ejb3也深受hibernate影響 。所以hibernate是很好的選擇。

    項目設計

                  綜上,我們使用 webwork+spring+hibernate的架構。

    版本:webwork-2.1.7  spring1.2   hibernate-3.0.3

     

    經過一段時間的開發,目前架構基本成形:

          

    o_image002.jpg

           src目錄下為java源碼

    dao    負責數據訪問對象的定義和實現

     其中Dao結尾為接口,Impl結尾為實現。目前一般用hibernate做實現。
    domain 實體對象

    logic   針對實體對象封裝的邏輯

     這里service是外觀接口,serviceimpl是實現,考慮目前情況簡單,并沒有進一步分離邏輯,業務邏輯都在impl中完成。

    web    界面相關的java

     common是一些常用類,如處理中文問題的filter.

     displaytag中放了displaytag相關的類,多為wrapper.

     webwork中都是對應的action

    其中 BaseAction是基本的抽象類,基本后續開發應繼承此類

    CrudAction是為了一般的Crud工作而作的一個抽象類,可以繼承用來簡化工作。

    CaseDispatcher負責菜單點擊后分發到相關Action,同時處理權限和session工作。
     
    其他action按模塊進行了組織

    o_image004.jpg

    左邊是webroot的結構

     

     

    重要的配置文件有:

    Spring

    applicationContext.xml

    applicationContext-db.xml

    Webwork

    xwork.xml

    webwork.properties

    i18n

     labels.properties

    log4j

     log4j.properties

    displaytag

     displaytag.properties

    dbConnect

     jdbc.properties

     

    關于一些技術難點和細節:

    1.  各框架連接:springhibernate使用springhibernate支持。Springwebwork使用autoware的攔截機制自動裝配。

    2.  列表的問題,采用displaytag。功能強大,使用簡潔,可實現排序和數據導出。

    3.  數據下載,使用displaytag自帶的excel下載

    4.  文件上傳,使用webwork提供的解決方案,用攔截機制實現。

    5.jsp代碼組織方面,我們使用taglibcss技術使jsp中頁面邏輯減少到最小,一般情況完全可以不使用<% %>script 。同時我們使用兩個include來包含常用的taglib定義,js引用和html結構,使jsp代碼非常簡潔。

    6.  中文問題 我們使用filter來解決頁面gbkjava程序unicode的轉換,同時通過正確的設置數據庫連接url完成和數據庫之間的交互。

    7.  I18n國際化。我們要求在jsp代碼中不出現中文,所有提示信息都通過資源文件labels.properties來完成。頁面中可以使用jstlwebwork標簽來調用。

    8.  界面驗證問題。使用webworkvalidate機制用xml定義,或在action中代碼判斷。

    posted on 2005-05-30 12:57 泥巴麒麟 閱讀(4950) 評論(20)  編輯  收藏

    Feedback

    # re: 項目小結(hibernate + spring + webwork) 2005-06-03 13:55 Emma
    真高深啊,看不懂,做崇拜狀!  回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork) 2005-06-03 13:55 Emma
    真高深啊,看不懂,做崇拜狀!  回復  更多評論
      

    # 真是曲高和寡亞 2005-06-06 13:12 泥巴麒麟
    哎呀呀  回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork) 2006-03-03 09:39 hathor
    很不錯的!  回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork) 2006-06-21 10:19 nqna
    采用 webwork2.2.2 , 加上 freemarker 應該好些。  回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork) 2006-08-08 09:46 kavon2006
    請問如何進行action的單元測試呢?  回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork) 2006-10-26 15:03 outuo2
    Spring到webwork使用autoware的攔截機制自動裝配,可以簡單的解釋下嗎  回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork) 2006-11-24 14:30 leifeng
    hehe  回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork) 2006-12-11 11:32 泥巴麒麟
    這篇文章是一年半前寫的,里面提到的攔截方式,現在很可能有更好的解決方案,加上自己最近也沒有在搞spring和webwork,所以不敢誤導別人。那個自動裝配的方案本身也很簡單,記得有人做好了類,google一下就好  回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork) 2007-02-09 15:04 兔子超人
    displaytag那個東西是垃圾,數據量大一點就麻煩了,首先displaytag設計上就沒有想到為30000條記錄以上的考慮過,查詢出來的集合全部都放在list里面,這樣有再多的內存都會溢出。

    還有我覺得你設計上還是遺憾,沒有看見你是如何運用webwork模型驅動來設計的。
    這樣說是因為沒有看出你使用webwork以后和之前使用struts的最大區別!!

    而且攔截器的在的右邊說明上也是不很明顯的能看出來。切點在什么地方都沒有看到?!  回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork) 2007-02-09 15:15 兔子超人
    我又看了一邊,您說:“感覺用jdbc實現dao效率非常低”,請問jdbc效率地在了什么地方??如果說jdbc效率地,那么hibernate的效率就更低了,hibernate實現的基礎不可能脫離原始的jdbc。

    你應該清楚的認識到hibernate只是在設計上引導了你,讓我們認識到模型和模式,hibernate只是讓我們少些了很多代碼,而不是說采用了hibernate就能提高效率,希望您不要悟到大家。

    技術上本質的東西是不會變化多少的,技術也沒有高低之分,不存在hibernate和jdbc誰好誰壞,只有使用者的強弱之別而已。

      回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork) 2007-02-26 16:10 泥巴麒麟
    感謝這么久前的東西還有人評論!

    首先關于displaytag.我認為并不能說設計失誤而是設計如此,所以使用非常簡單,而且不用為分頁的東西而穿透邏輯層,在列表不大的時候,和hibernate配合,代碼非常自然簡練。而且排序無需依賴Sql字段。但也因此有他的性能問題。一個東西肯定是有缺點和優點的,找到符合自己需要的就可以。當時我也測試了數據量,并定死最多選擇10000條,再多的分頁基本上用戶是沒可能看的。

    關于webwork,坦率說我對基于web的mvc設計并不是很感興趣,怎么簡單怎么好。所以webwork比struts好就好在簡單。而且也很久沒用webwork了。你所說的模型驅動如果我沒記錯,指的是直接在action里面直接使用pojo作為一個field來傳遞數據,印象中這個也沒什么特別好說的,無非是jsp里格式寫正確了就好。如果要我起名字,我寧愿把這個叫做自動裝配,無非是把頁面的數據自動裝到pojo里傳走,省得大家寫的累。我寫javaBean+jsp的年代就用反射寫過類似的東西,個人認為不是什么大不了的設計思想。spring才是有設計思想的。

    攔截器實在記不大清,參考別人做法而已,應該是在webwork的配置文件里做的。

    "經過實寫代碼,感覺用jdbc實現dao效率非常低,而且容易出錯",
    這句話我的意思是當時我在考慮到DAO層次的實現上,和spring結合,我可以采用jdbc直接實現,也可以采用hibernate實現,自己試寫,比較之后認為jdbc開發效率低,寫好了之后再寫測試,把我累得不行。當時我們的人手太緊,項目日程上不允許你慢慢來。用hibernate我就基本放心,單元測試就做得比較弱了。

    我說是效率而不是性能,這句話不至于讓人有誤解吧。我覺得能看到這里的朋友都是有一定基礎的。就好象說用c開發比用匯編快。你非要說快在那里?匯編最快了,這就抬杠了。








      回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork)[未登錄] 2007-05-08 11:32 YANG
    個人覺得框架這種東西.只是給我們帶來效率.

    要從性能上講還是能從底層的實現那才是最好.達到最佳.

    JDBC是最基本的吧.但性能可是最佳.
    框架用了好幾層.在性能上大大降低.但是效率可是大大的提高.

    所以有得必有失.這是沒有辦法的辦法....  回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork) 2007-05-14 23:35 辛酸果凍
    我也在研究但是還有很多地方搞不懂,唉,不知樓主能否讓我看看您的原程序啊,謝謝
    zhoudaqingidea@gmail.com  回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork) 2007-06-14 15:31 王娟
    摟住,我也想看看源程序,謝謝。我的郵箱:
    juju_good@163.com  回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork)[未登錄] 2007-06-28 10:18 青穎
    樓主, 我想看看源碼。 能不能發給我研究一下 謝謝
    發部分代碼也可以 daitiejian@163.com  回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork) 2007-07-02 12:00 泥巴麒麟
    源碼是公司產品了。而且這個文章是2年前做的了,那源碼對現在來說也沒太多價值。  回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork) 2007-10-07 11:56 qixoo.com 企訊網--5000萬企業速查|求職參考|企業點評|企業從業者與企業的橋梁
    企訊網創立于2005年10月,創辦之初,受到了眾多企業從業者的鼎立支持。但在創辦網站的過程中我們也經歷了重重磨難,并且因為某些原因,網站曾于2007年1月到6月期間停辦。直到2007年7月,企訊網重新開辦,并且擁有新域名www.qixoo.com 與 www.qixoo.net 。

    企訊網是一個溝通平臺。我們建立本站的初衷是為了建立企業從業者與企業的橋梁,使得員工能與企業更好的溝通,我們希望員工能在此平臺為企業提出一些好的發展建議,同時企業也能傾聽員工的聲音,為員工創造一個更好的環境。

    企訊網是一個參考平臺。通過本站,可以幫助企業人員在求職過程中能有一個參考,并且查詢相關的企業信息,以便企業人員能找到符合自身發展的企業。當然,本站的參考信息都是由網友添加,我們不可能驗證每一條信息的可靠性,對于部分企業的評價,也許會比較片面和失實。大家在求職過程中,還是應以實際出發,畢竟這里只代表部分聲音。

    企訊網是一個監督平臺。誠然,作為一個普普通通的網站并沒有資格與權利去監督一個企業的行為。但作為一個網絡媒體,雖然還是那么的微小,但我們希望能通過網絡的聲音能改變一些企業不恰當的做法,哪怕只是一點點。我們期望能有一個良好的企業大環境,以利于我們國家企業業的發展。




      回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork) 2012-03-28 18:57 泥巴麒麟
    那么多年前的東西,看起來實在感慨  回復  更多評論
      

    # re: 項目小結(hibernate + spring + webwork) 2014-01-13 12:39 邱惠平
    很好啊,  回復  更多評論
      


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲乱码一区二区三区在线观看| 免费a级毛片在线观看| 久久亚洲AV成人无码国产| 成人性做爰aaa片免费看| 亚洲精品无码专区久久久| 高清永久免费观看| 亚洲精品动漫在线| 先锋影音资源片午夜在线观看视频免费播放 | 免费h片在线观看网址最新| 久久精品国产亚洲AV麻豆网站| 日本在线看片免费| 亚洲成人福利网站| 成年女人18级毛片毛片免费 | 一级成人a免费视频| 亚洲精品国产成人片| 99re免费在线视频| 亚洲愉拍一区二区三区| 国产无遮挡色视频免费视频| 一级免费黄色毛片| 亚洲va无码手机在线电影| 性xxxxx免费视频播放| 亚洲欧美日韩中文高清www777| 国产中文字幕免费观看| 中国一级全黄的免费观看| 4444亚洲国产成人精品| 日本a级片免费看| 你是我的城池营垒免费看| 精品亚洲成A人无码成A在线观看| 成人免费无码精品国产电影| 中文字幕无线码免费人妻| 亚洲人成网站在线观看播放动漫 | 黄色网址免费在线观看| 亚洲春色另类小说| 四虎影视永久免费观看网址| 一个人免费视频在线观看www| 亚洲国产中文在线二区三区免| 免费一级特黄特色大片在线观看| 日韩免费在线视频| 国产精品亚洲一区二区三区在线观看 | 日韩在线观看视频免费| 亚洲日本一区二区三区|