国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
webwork+spring+hibernate
  • webwork+spring+hibernate
  •  2006-09-10 17:52:13  作者:point2008  來(lái)源:網(wǎng)友評(píng)論0
  •  文字大?。骸?a href="javascript:fontZoom(16)">大】【】【】 評(píng)分等級(jí):0
  • 簡(jiǎn)介:webwork+spring+hibernate
  • 目前的各種業(yè)務(wù)管理系統(tǒng)還是將以j2eeb/s架構(gòu)為主流,所以有必要完成一個(gè)通用的,穩(wěn)固的整體架構(gòu)作為以后各種應(yīng)用的堅(jiān)實(shí)基礎(chǔ)。
    • 傳統(tǒng)無(wú)架構(gòu)開發(fā)缺點(diǎn):     

    結(jié)構(gòu)不夠清晰,不能夠完全按mvc的思想明確的分離各層邏輯。jsp代碼過(guò)多且結(jié)構(gòu)零亂,沒有把通用的代碼用taglib等技術(shù)抽象,后續(xù)開發(fā)困難

    業(yè)務(wù)邏輯和數(shù)據(jù)庫(kù)緊密相關(guān),而沒有從表實(shí)現(xiàn)中抽象出來(lái)。同時(shí),在每次使用同樣的業(yè)務(wù)邏輯的時(shí)候都要反復(fù)的進(jìn)行相關(guān)sql編程。故而與數(shù)據(jù)庫(kù)有強(qiáng)耦合,相關(guān)程序重用性低,可讀性差。其翻頁(yè)機(jī)制邏輯橫貫架構(gòu),使層次高度耦合,而數(shù)據(jù)庫(kù)封裝也可能存在性能問(wèn)題。

    同時(shí),客戶也提出了不少整改意見,而在原版本的修改和升級(jí)都會(huì)較為困難,而且對(duì)長(zhǎng)期的維護(hù)不利。

    • 先進(jìn)開源架構(gòu):

    應(yīng)盡可能使用業(yè)內(nèi)先進(jìn)的免費(fèi)框架技術(shù)而不是自開發(fā)框架。好處是:

    這些框架技術(shù)凝聚很多業(yè)內(nèi)精英的智慧,而且經(jīng)過(guò)發(fā)布和使用,技術(shù)體系已經(jīng)成熟,性能有所保障。

    層次清晰,符合先進(jìn)的技術(shù)理念和設(shè)計(jì)模式。同時(shí)也容易找到熟悉相關(guān)技術(shù)的人才,維護(hù)和后續(xù)開發(fā)方便。

    相比之下自開發(fā)框架因?yàn)榧夹g(shù)實(shí)力和時(shí)間問(wèn)題,很難達(dá)到這些業(yè)內(nèi)領(lǐng)先框架的技術(shù)高度。

       分析一般的j2ee應(yīng)用,應(yīng)有如下層次:

    顯示層 負(fù)責(zé)界面顯示,接受用戶指令

    顯示層有較為經(jīng)典的MVC,即model,view,control,進(jìn)一步了細(xì)化了顯示層的工作。此類著名框架有struts,webwork,spring-mvc等。經(jīng)考察,我認(rèn)為struts雖然是時(shí)間最長(zhǎng)最成熟的技術(shù),但易用性和一些架構(gòu)理念不如webwork,而view層的開發(fā)應(yīng)盡可能簡(jiǎn)單快速。故選定用webwork.

     

    邏輯層 負(fù)責(zé)進(jìn)行業(yè)務(wù)邏輯的實(shí)現(xiàn)

    目前的開發(fā)過(guò)程,往往陷入邏輯層和數(shù)據(jù)訪問(wèn)層不能分離的情況。面向?qū)ο蟮捻?xiàng)目開發(fā)最后演變成成程序員在程序各處手工寫sql操表。這樣做的優(yōu)點(diǎn)是開發(fā)迅速有效,問(wèn)題是結(jié)構(gòu)將日益混亂,每次邏輯的變化將不得不修改分散于各處的sql語(yǔ)句,而后續(xù)的程序員也必須了解整個(gè)程序和數(shù)據(jù)庫(kù)結(jié)構(gòu)才能進(jìn)行修改。如果是短期小型項(xiàng)目,可以用這種方式。否則的話,我認(rèn)為應(yīng)盡可能貫徹面向?qū)ο笏枷?,把業(yè)務(wù)邏輯抽象出來(lái)。

    而邏輯層的工作就是針對(duì)實(shí)體對(duì)象進(jìn)行業(yè)務(wù)邏輯的實(shí)現(xiàn)。我們針對(duì)所有的業(yè)務(wù)操作,對(duì)外提供service接口,既服務(wù)接口。這類似tuxedoejb所采用的業(yè)務(wù)外觀模式。而為填補(bǔ)service生存周期管理的空白,我們使用著名的spring框架。優(yōu)點(diǎn):

    實(shí)現(xiàn)Ioc,使各層次的耦合可配置化。

    按需要實(shí)現(xiàn)單例模式等,進(jìn)行生存周期管理

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

    攔截機(jī)制將為程序提供很好的擴(kuò)展空間

     

        3. 數(shù)據(jù)訪問(wèn)層 負(fù)責(zé)將類操作映射為數(shù)據(jù)庫(kù)操作。進(jìn)行實(shí)體類的持久化。從而將所有的數(shù)據(jù)訪問(wèn)工作集中起來(lái)

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

                         1 jdbc實(shí)現(xiàn)

                         2 使用ORM工具 hibernate,ibatis,jdo

    經(jīng)過(guò)實(shí)寫代碼,感覺用jdbc實(shí)現(xiàn)dao效率非常低,而且容易出錯(cuò)。經(jīng)過(guò)考量選用hibernate。和ibatis相比雖然上手慢且不夠靈活,但其架構(gòu)思想和強(qiáng)大功能都受到業(yè)內(nèi)一致好評(píng),甚至是ejb3也深受hibernate影響 。所以hibernate是很好的選擇。

    綜上,研究 webwork+spring+hibernate的架構(gòu),,,一技之長(zhǎng)?。?!

  • 結(jié)合webwork+spring+hibernate來(lái)開發(fā)系統(tǒng)感覺還是很方便的。

      比如:

       1)jsp頁(yè)面減少了很多java腳本(可以說(shuō)是看不到了,以前采用jsp+javabean+jdbc,jsp頁(yè)面真是很亂呀,到處是java腳本,這樣的話就會(huì)有很多業(yè)務(wù)(business)邏輯也出現(xiàn)頁(yè)面中,有時(shí)直接調(diào)用javaBean來(lái)處理,導(dǎo)致程序之間的耦合度很高),更加美觀大方。

       2)webwork體現(xiàn)出了MVC結(jié)構(gòu)。減少了程序之的耦合程度。webwork采用ongl(對(duì)象描述語(yǔ)言)很大程度上減少了set(),get()方法的出現(xiàn)。這樣做,你必須在頁(yè)面,javaBean,之間的命名規(guī)則要符合webwork的field-driver,model-driver的要求。

    3)程序的請(qǐng)求統(tǒng)一由com.opensymphony.webwork.dispatcher.ServletDispatcher(control)來(lái)處理,然后通過(guò)xwork.xml中的配置,取得相應(yīng)的處理程序(Action)。這樣減少了把一些業(yè)務(wù)邏輯寫在jsp頁(yè)面中。也更加清晰,有利于以后的維護(hù)。

       4)spring起到了事務(wù)管理,aop等作用。減少了很煩瑣的try{}catch(){},程序的結(jié)構(gòu)感覺很清晰、明了。

       5)hibernate提供了持久化支持。面向?qū)ο蟮膆ql語(yǔ)言很方便。

       6)對(duì)后臺(tái)的處理,都是面向接口的編程。對(duì)以后的維護(hù)很方便
     
     

    基于webwork spring hibernate 項(xiàng)目的開發(fā)
    這三者的結(jié)合,應(yīng)該是java web編程最好的模式。

    首先說(shuō)明三者各自負(fù)責(zé)的職務(wù):

    1 hibernate 負(fù)責(zé)數(shù)據(jù)庫(kù)的操作

    2 spring 負(fù)責(zé)真正的業(yè)務(wù)操作

    3 webwork 負(fù)責(zé)請(qǐng)求轉(zhuǎn)交,并把spring的處理結(jié)果返回給用戶

     

    以往的開發(fā)中,很多人注重MVC模式。的確,這種模式把程序以面向?qū)ο蟮乃枷敕殖?了三個(gè)部分。但在web開發(fā)中,并不能單純的運(yùn)用此種模式:web開發(fā)的View是固定的(頁(yè)面),而在引入hibernate后,model這一塊也非常簡(jiǎn)單和清晰。就剩下control了,這是web開發(fā)的關(guān)鍵部分,現(xiàn)在流行的做法便是將control細(xì)分成兩個(gè)部分:dispacher(轉(zhuǎn)交器)和business object(處理業(yè)務(wù)邏輯的對(duì)象)。并將后者抽出接口,甚至和model共享接口,一邊真正做到對(duì)dispacher隱藏邏輯實(shí)現(xiàn)。

    而這種M-V-D-B(model-view-dispacher-business object)模式的實(shí)現(xiàn)有好多方式。比如一個(gè)bo(business object)對(duì)象的創(chuàng)建,你可以直接 new,也可以動(dòng)態(tài)加載,采用工廠方法,抽象工廠。但最好的就是用spring容器。dispacher只管用接口就行了,具體類已經(jīng)有spring的 AOP給注入了。

    當(dāng)然spring也可以很好地和hibernate結(jié)合,你可以采用DAO,也可以用spring的hibernate 模板。但這都不重要,因?yàn)槟愕臉I(yè)務(wù)對(duì)象已經(jīng)和調(diào)用層徹底分開了,當(dāng)業(yè)務(wù)層需要和hibernate打交道的時(shí)候,直接做個(gè)HibernateUtil也未嘗不可呀。怎么做都已經(jīng)不是關(guān)鍵。

    下面就具體介紹spring webwork的結(jié)合方式。

    在webwork 中的wiki doc中有三種結(jié)合方式(google查),我這里采用的最后一種--采用一個(gè)自動(dòng)裝配的攔截器com.opensymphony.xwork.spring.interceptor.ActionAutowiringInterceptor關(guān)鍵代碼如下:


       ApplicationContext applicationContext = (ApplicationContext)ActionContext.getContext().getApplication().get(
              WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
            factory = new SpringObjectFactory();
            factory.setApplicationContext(getApplicationContext());
        Action bean = invocation.getAction();
        factory.autoWireBean(bean);
       
        ActionContext.getContext().put(APPLICATION_CONTEXT, context);

     
     
     
     
    本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
    打開APP,閱讀全文并永久保存 查看更多類似文章
    猜你喜歡
    類似文章
    ssh框架的好處
    spring,hibernate ibatis2,webwork資料下載
    組裝Struts Spring和Hibernate框架
    一篇SSH框架的應(yīng)用介紹
    JSF+Spring+Hibernate的實(shí)例講解
    Appfuse框架
    更多類似文章 >>
    生活服務(wù)
    分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
    綁定賬號(hào)成功
    后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
    如果VIP功能使用有故障,
    可點(diǎn)擊這里聯(lián)系客服!

    聯(lián)系客服