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