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