引自:http://kb.csdn.net/java/Articles/200507/fd779837-9a8d-448d-8ef9-b4c6ca501fb7.html
http://blog.csdn.net/goldrain/
WEB層是通過調(diào)用業(yè)務(wù)層來(lái)實(shí)現(xiàn)一次業(yè)務(wù)操作的。所以WEB是依賴業(yè)務(wù)層的實(shí)現(xiàn)的。如何解偶使兩者能獨(dú)立開發(fā)而互不影響?我傾向使用統(tǒng)一的調(diào)用接口:使用一個(gè)命令字符串,加一堆DTO參數(shù)就能調(diào)用業(yè)務(wù),然后取得DTO返回值。這里一個(gè)業(yè)務(wù)的調(diào)用就是一個(gè)命令的執(zhí)行。Ofbiz的service engine就是這樣的做法,而且很成功,這也是一種關(guān)注業(yè)務(wù)的理念。使用統(tǒng)一的調(diào)用接口,WEB層的開發(fā)就可獨(dú)立進(jìn)行了,不用依賴業(yè)務(wù)層就能進(jìn)行編譯。而且這種做法還帶來(lái)了更多的好處:權(quán)限,日志都能集中管理;將來(lái)可能的話,分布式部署業(yè)務(wù)層也變得方便,因?yàn)樗袠I(yè)務(wù)都是一個(gè)命令接口調(diào)用。
MVC架構(gòu)中,展示層View的技術(shù)是五花八門,可選擇的太多太多,jsp可能是用的最多的,模版語(yǔ)言也多種多樣,我分為兩類:腳本模版和簡(jiǎn)單模版。而簡(jiǎn)單模版的理念則是將頁(yè)面邏輯從模版中抽取出來(lái),模版只是用固定的布局展示數(shù)據(jù),保證“所見即所得”的開發(fā)效果;
較復(fù)雜的web交互struts和webwork是如何做的
對(duì)付較復(fù)雜的交互,我一般讓struts的formBean的scope設(shè)置為session,經(jīng)過多次頁(yè)面交互后,從這個(gè)組裝好數(shù)據(jù)的formBean里獲取業(yè)務(wù)需要的參數(shù),然后調(diào)用業(yè)務(wù)層;
其中struts在每次映射值前能先運(yùn)行reset,把需要清空的字段清空以便接受傳進(jìn)來(lái)的參數(shù),而需要保持的數(shù)據(jù)就不用清空,感覺挺方便的;
然后在業(yè)務(wù)完成后,將session中的formBean清掉。
所以自我感覺作復(fù)雜的交互,使用session scope的formBean,struts還是挺管用的,因?yàn)檫@時(shí)的formBean能在用戶頁(yè)面交互時(shí)仍然能保持?jǐn)?shù)據(jù)。我對(duì)webwork不很了解,大致看了些資料,里面沒有formBean的概念,也就沒有sesseion scope的概念了,不知webwork對(duì)保持客戶端多次交互提交的數(shù)據(jù),是否有方便的做法?
http://blog.csdn.net/goldrain/
WEB層是通過調(diào)用業(yè)務(wù)層來(lái)實(shí)現(xiàn)一次業(yè)務(wù)操作的。所以WEB是依賴業(yè)務(wù)層的實(shí)現(xiàn)的。如何解偶使兩者能獨(dú)立開發(fā)而互不影響?我傾向使用統(tǒng)一的調(diào)用接口:使用一個(gè)命令字符串,加一堆DTO參數(shù)就能調(diào)用業(yè)務(wù),然后取得DTO返回值。這里一個(gè)業(yè)務(wù)的調(diào)用就是一個(gè)命令的執(zhí)行。Ofbiz的service engine就是這樣的做法,而且很成功,這也是一種關(guān)注業(yè)務(wù)的理念。使用統(tǒng)一的調(diào)用接口,WEB層的開發(fā)就可獨(dú)立進(jìn)行了,不用依賴業(yè)務(wù)層就能進(jìn)行編譯。而且這種做法還帶來(lái)了更多的好處:權(quán)限,日志都能集中管理;將來(lái)可能的話,分布式部署業(yè)務(wù)層也變得方便,因?yàn)樗袠I(yè)務(wù)都是一個(gè)命令接口調(diào)用。
MVC架構(gòu)中,展示層View的技術(shù)是五花八門,可選擇的太多太多,jsp可能是用的最多的,模版語(yǔ)言也多種多樣,我分為兩類:腳本模版和簡(jiǎn)單模版。而簡(jiǎn)單模版的理念則是將頁(yè)面邏輯從模版中抽取出來(lái),模版只是用固定的布局展示數(shù)據(jù),保證“所見即所得”的開發(fā)效果;
較復(fù)雜的web交互struts和webwork是如何做的
對(duì)付較復(fù)雜的交互,我一般讓struts的formBean的scope設(shè)置為session,經(jīng)過多次頁(yè)面交互后,從這個(gè)組裝好數(shù)據(jù)的formBean里獲取業(yè)務(wù)需要的參數(shù),然后調(diào)用業(yè)務(wù)層;
其中struts在每次映射值前能先運(yùn)行reset,把需要清空的字段清空以便接受傳進(jìn)來(lái)的參數(shù),而需要保持的數(shù)據(jù)就不用清空,感覺挺方便的;
然后在業(yè)務(wù)完成后,將session中的formBean清掉。
所以自我感覺作復(fù)雜的交互,使用session scope的formBean,struts還是挺管用的,因?yàn)檫@時(shí)的formBean能在用戶頁(yè)面交互時(shí)仍然能保持?jǐn)?shù)據(jù)。我對(duì)webwork不很了解,大致看了些資料,里面沒有formBean的概念,也就沒有sesseion scope的概念了,不知webwork對(duì)保持客戶端多次交互提交的數(shù)據(jù),是否有方便的做法?
研究過了webwork,可以做到,而且更優(yōu)雅:
使用ioc功能,將session中的對(duì)象映射到action屬性中即可
使用ioc功能,將session中的對(duì)象映射到action屬性中即可